Os Ingresses do Alibaba Cloud Application Load Balancer (ALB) suportam http, HTTPS e QUIC. Eles são projetados para aplicações nativas de cloud que exigem alta elasticidade e que você gerencie o tráfego de camada 7 em grande escala. Os ALB Ingresses são compatíveis com Nginx Ingresses e suportam configurações complexas de roteamento de negócios e gerenciamento automático de certificados TLS, oferecendo um mecanismo flexível de gerenciamento de tráfego. Por favor, configure regras de encaminhamento para usar diferentes url e acessar diferentes service dentro de um cluster.
Pré-requisitos
Você criou um cluster serverless do ACK com o Kubernetes 1.18 ou versão posterior. Para mais informações, consulte Quick Start for ACK Serverless.
Você criou dois vSwitches em zonas diferentes. Os vSwitches devem estar na mesma VPC do cluster. Para mais informações, consulte Create and manage vSwitches.
Você instalou o componente ALB Ingress Controller no cluster. Para mais informações, consulte Manage the ALB Ingress Controller component.
Obtain the KubeConfig for your cluster and use kubectl to connect to the cluster.
Observações
Caso utilize o plug-in de rede Flannel, os service de backend do ALB Ingress aceitam apenas os tipos NodePort e LoadBalancer.
Os nomes dos recursos AlbConfig, Namespace, Ingress e service não podem iniciar com aliyun.
Versões anteriores do Nginx Ingress Controller não reconhecem o campo
spec:ingressClassNamenos recursos Ingress. Caso uma versão anterior esteja instalada e o cluster utilize tanto Nginx Ingresses quanto ALB Ingresses, o Nginx Ingress Controller poderá reconciliar os ALB Ingresses. Para evitar esse problema, atualize o Nginx Ingress Controller ou utilize uma anotação para especificar o ingressClass do ALB Ingress. Para mais informações, consulte Upgrade the Nginx Ingress Controller component ou Advanced ALB Ingress configurations.
Etapa 1: crie um AlbConfig
-
Copie o conteúdo abaixo para um arquivo chamado alb-test.yaml e crie um AlbConfig.
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Internet zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** - vSwitchId: vsw-uf6nun9tql5t8nh15**** listeners: - port: 80 protocol: HTTPParâmetro
Descrição
spec.config.name
(Opcional) Nome da instância do ALB.
spec.config.addressType
(Obrigatório) Tipo de endereço do balanceador de carga. Valores válidos:
Internet (padrão): o balanceador de carga possui um endereço IP público e o registro DNS é resolvido para esse IP, tornando-o acessível pela rede pública.
Intranet: o balanceador de carga possui apenas um endereço IP privado e o registro DNS é resolvido para esse IP, tornando-o acessível somente de dentro da VPC onde está implantado.
spec.config.zoneMappings
(Obrigatório) IDs dos vSwitches para o ALB Ingress. Para isso, especifique os IDs de pelo menos dois vSwitches em zonas diferentes. Os vSwitches especificados devem estar em zonas com suporte do ALB e na mesma VPC do cluster. Para mais informações sobre as regiões e zonas suportadas pelo ALB, consulte Regions and zones supported by ALB.
-
Agora execute o comando a seguir para criar o AlbConfig.
kubectl apply -f alb-test.yamlSaída esperada:
albconfig.alibabacloud.com/alb-demo created -
Agora crie um arquivo chamado alb.yaml e copie o conteúdo a seguir para criar um IngressClass.
Clusters que executam o Kubernetes 1.19 ou posterior
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demoClusters que executam versões do Kubernetes anteriores a 1.19
apiVersion: networking.k8s.io/v1beta1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo -
Agora execute o comando abaixo para criar o IngressClass.
kubectl apply -f alb.yamlSaída esperada:
ingressclass.networking.k8s.io/alb created
Etapa 2: Implante service
-
Agora crie um arquivo cafe-service.yaml com o conteúdo a seguir para implantar dois Deployments (
coffeeetea) e dois service (coffeeetea). -
Agora execute o seguinte comando para implantar os dois Deployments e os dois service.
kubectl apply -f cafe-service.yamlSaída esperada:
deployment "coffee" created service "coffee-svc" created deployment "tea" created service "tea-svc" created -
Verifique o status das aplicações e dos service criados.
-
Agora execute o comando a seguir para verificar o status das aplicações.
kubectl get deploySaída esperada:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 1/2 2 1 2m26s tea 1/1 1 1 2m26s -
Em seguida, execute o comando abaixo para verificar o status dos service.
kubectl get svcSaída esperada:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc NodePort 172.16.XX.XX <none> 80:32056/TCP 9m38s tea-svc NodePort 172.16.XX.XX <none> 80:31696/TCP 9m38s
-
Etapa 3: configure um ALB Ingress
-
Agora crie um arquivo chamado cafe-ingress.yaml e copie o conteúdo a seguir.
Clusters que executam o Kubernetes 1.19 ou posterior
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # Configure the context path - path: /tea pathType: ImplementationSpecific backend: service: name: tea-svc port: number: 80 # Configure the context path - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80Clusters que executam versões do Kubernetes anteriores a 1.19
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # Configure the context path. - path: /tea backend: serviceName: tea-svc servicePort: 80 # Configure the context path. - path: /coffee backend: serviceName: coffee-svc servicePort: 80 -
Agora execute o comando a seguir para configurar o nome de domínio e os caminhos para expor os service
coffeeetea.kubectl apply -f cafe-ingress.yamlSaída esperada:
ingress.networking.k8s.io/cafe-ingress created -
Agora execute o comando abaixo para obter o endereço da instância do ALB.
kubectl get ingSaída esperada:
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-m551oo2zn63yov****.cn-hangzhou.alb.aliyuncs.com 80 50s
Etapa 4: Acesse os serviços
-
Utilize a linha de comando para acessar o service
coffeecom o endereço obtido da instância do ALB.curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/coffee -
Utilize a linha de comando para acessar o service
teapor meio do endereço obtido da instância do ALB.curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/tea
Referências
Para obter informações sobre configurações avançadas do ALB Ingress, como encaminhar solicitações de diferentes nomes de domínio ou caminhos de url para distintos grupos de servidores de backend, configurar verificações de integridade, redirecionar solicitações http para HTTPS, executar liberações graduais e definir portas de escuta personalizadas, consulte Advanced ALB Ingress configurations.
Para personalizar as regras de encaminhamento de um ALB Ingress por meio da configuração de condições e ações de encaminhamento, consulte Customize forwarding rules for an ALB Ingress.
Para configurar um listener HTTPS e encaminhar solicitações HTTPS, consulte Use an ALB Ingress to configure an HTTPS listener certificate.
Caso enfrente problemas ao usar um ALB Ingress, consulte Troubleshoot ALB Ingress issues e ALB Ingress FAQ.