O Application Load Balancer (ALB) Ingress oferece roteamento HTTP, HTTPS e QUIC na camada 7 para aplicações nativas da nuvem que exigem gerenciamento de tráfego elástico e em grande escala, além de ser compatível com o Nginx Ingress. Esse recurso suporta regras de roteamento complexas e gerenciamento automático de certificados TLS. Configure regras de encaminhamento para direcionar solicitações a diferentes Services no cluster com base no caminho da URL e no nome do host.
Pré-requisitos
Você criou um cluster ACK Serverless que executa o Kubernetes 1.18 ou posterior. Para mais informações, consulte Início rápido do ACK Serverless.
Você criou dois vSwitches em zonas diferentes da Virtual Private Cloud (VPC) onde o cluster ACK está implantado. Para mais informações, consulte Criar e gerenciar vSwitches.
O ALB Ingress Controller está instalado no cluster. Para mais informações, consulte Gerencie o controlador ALB Ingress.
O cliente kubectl está conectado ao cluster ACK Serverless. Para mais informações, consulte Obter um arquivo kubeconfig e conectar-se a um cluster usando kubectl.
Observações de uso
Se você usar o plug-in de rede Flannel, os Services de backend do ALB Ingress devem ser do tipo NodePort ou LoadBalancer.
Os nomes de objetos AlbConfig, namespaces, Ingresses e Services não podem começar com
aliyun.Versões anteriores do controlador NGINX Ingress não reconhecem o campo
spec : ingressClassNameno recurso Ingress. Caso uma versão antiga do controlador NGINX Ingress esteja instalada e você utilize tanto NGINX Ingresses quanto ALB Ingresses no cluster ACK, o controlador NGINX Ingress poderá reconciliar os ALB Ingresses. Para evitar esse problema, atualize o controlador NGINX Ingress ou use anotações para especificar as IngressClasses dos ALB Ingresses. Para mais informações, consulte Atualize o controlador NGINX Ingress ou Configurações avançadas de ALB Ingress.
Etapa 1: Crie um objeto AlbConfig
-
Crie um arquivo chamado alb-test.yaml e copie o conteúdo abaixo para criar um objeto 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
Nome da instância ALB. Parâmetro opcional.
spec.config.addressType
Tipo de endereço IP usado pela instância ALB para fornecer serviços. Parâmetro obrigatório. Valores válidos:
-
Internet (padrão): a instância ALB usa um endereço IP público. O nome de domínio do Ingress é resolvido para o endereço IP público da instância ALB, o que permite o acesso pela Internet.
-
Intranet: a instância ALB usa um endereço IP privado. O nome de domínio do Ingress é resolvido para o endereço IP privado, o que restringe o acesso à VPC onde a instância está implantada.
spec.config.zoneMappings
IDs dos vSwitches usados pelo ALB Ingress. Especifique pelo menos dois IDs de vSwitch. Os vSwitches devem estar em zonas diferentes dentro da VPC do cluster, e as zonas devem ser suportadas pelos ALB Ingresses. Parâmetro obrigatório. Para mais informações sobre regiões e zonas suportadas, consulte Regiões e zonas do ALB.
-
-
Execute o comando a seguir para criar o AlbConfig:
kubectl apply -f alb-test.yamlSaída esperada:
albconfig.alibabacloud.com/alb-demo created -
Crie um arquivo chamado alb.yaml e copie o seguinte conteúdo para ele:
Kubernetes V1.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-demoKubernetes anterior à V1.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 -
Execute o comando abaixo para criar a IngressClass:
kubectl apply -f alb.yamlSaída esperada:
ingressclass.networking.k8s.io/alb created
Etapa 2: Implantar Services
-
Crie um arquivo chamado cafe-service.yaml e copie o conteúdo a seguir para implantar dois Deployments chamados
coffeeetea, além de dois Services chamadoscoffee-svcetea-svc. -
Execute o comando a seguir para implantar os Deployments e Services:
kubectl apply -f cafe-service.yamlSaída esperada:
deployment.apps/coffee created service/coffee-svc created deployment.apps/tea created service/tea-svc created -
Verifique o status dos Deployments e Services.
-
Execute o comando abaixo para verificar o status da implantação:
kubectl get deploySaída esperada:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 1/2 2 1 2m26s tea 1/1 1 1 2m26s -
Execute o comando a seguir para verificar o status dos Services:
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
-
Crie um arquivo chamado cafe-ingress.yaml e copie o conteúdo a seguir para ele:
Kubernetes V1.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 a context path. - path: /tea pathType: ImplementationSpecific backend: service: name: tea-svc port: number: 80 # Configure a context path. - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80Kubernetes anterior à V1.19
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # Configure a context path. - path: /tea backend: serviceName: tea-svc servicePort: 80 # Configure a context path. - path: /coffee backend: serviceName: coffee-svc servicePort: 80 -
Execute o comando a seguir para configurar um nome de domínio acessível externamente e um
pathpara os Servicescoffee-svcetea-svc:kubectl apply -f cafe-ingress.yamlSaída esperada:
ingress.networking.k8s.io/cafe-ingress created -
Execute o comando abaixo para obter o nome de domínio da instância 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: Acessar os Services
-
Use o endereço da instância ALB para acessar o Service
coffee:curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/coffee -
Use o endereço da instância ALB para acessar o Service
tea:curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/tea
Referências
Para mais detalhes sobre configurações avançadas de ALB Ingress, como encaminhamento de solicitações para diferentes grupos de servidores de backend com base em nomes de domínio ou URLs, verificações de integridade, redirecionamento de HTTP para HTTPS, lançamentos canário e portas de listener personalizadas, consulte Configurações avançadas de ALB Ingress.
Para saber mais sobre como configurar regras de roteamento personalizadas para ALB Ingress, incluindo condições e ações de encaminhamento, consulte Personalizar regras de encaminhamento do ALB Ingress.
Para obter instruções sobre como configurar um listener HTTPS para encaminhar solicitações HTTPS, consulte Configure um certificado HTTPS para comunicação criptografada.
Para orientações sobre solução de problemas relacionados ao ALB Ingress, consulte Perguntas frequentes sobre ALB Ingress.