Direcionar o tráfego da Internet com o AWS Load Balancer Controller - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Direcionar o tráfego da Internet com o AWS Load Balancer Controller

O AWS Load Balancer Controller gerencia os AWS Elastic Load Balancers para um cluster do Kubernetes. É possível usar o controlador para expor as aplicações no cluster para a Internet. O controlador provisiona balanceadores de carga da AWS que realizam o direcionamento para os recursos Service ou Ingress do cluster. Em outras palavras, o controlador cria um único endereço IP ou nome DNS que realiza o direcionamento para múltiplos pods em seu cluster.

Diagrama de arquitetura. Ilustração do tráfego proveniente de usuários da Internet para o Amazon Load Balancer. O Amazon Load Balancer distribui o tráfego para os pods no cluster.

O controlador monitora os recursos Ingress ou Service do Kubernetes. Em resposta, ele cria os recursos apropriados do AWS Elastic Load Balancing. É possível configurar um comportamento específico para os balanceadores de carga ao aplicar anotações aos recursos do Kubernetes. Por exemplo, você pode anexar grupos de segurança da AWS a balanceadores de carga ao usar anotações.

O controlador fornece os seguintes recursos:

Kubernetes Ingress

O LBC cria um AWS Application Load Balancer (ALB) quando você cria um recurso Ingress do Kubernetes. Faça uma análise das anotações que você pode aplicar a um recurso Ingress.

Serviço Kubernetes do tipo LoadBalancer

O LBC cria um AWS Network Load Balancer (NLB) quando você cria um serviço do Kubernetes do tipo LoadBalancer. Faça uma análise das anotações que você pode aplicar a um recurso Service.

Antigamente, o Network Load Balancer do Kubernetes era usado para destinos de instância, mas usava o LBC para destinos de IP. Com o AWS Load Balancer Controller versão 2.3.0 ou posterior, você pode criar NLBs usando qualquer tipo de destino. Para obter mais informações sobre os tipos de destino do NLB consulte Tipo de destino no Guia do usuário do Network Load Balancer.

O controlador é um projeto de código aberto gerenciado no GitHub.

Antes de implantar o controlador, recomendamos que você analise os pré-requisitos e as considerações em Aplicação de roteamento e tráfego HTTP com Application Load Balancers e Roteamento TCP e tráfego UDP com Network Load Balancers. Nesses tópicos, você implantará uma aplicação de amostra que inclui um balanceador de carga da AWS.

Instalar o controlador

Você pode usar um dos seguintes procedimentos para instalar o AWS Load Balancer Controller:

Migração de versões descontinuadas do controlador

  • Se você tiver versões descontinuadas do AWS Load Balancer Controller instaladas, aprenda como Migrar aplicações do Ingress Controller obsoleto da AWS.

  • Não é possível atualizar versões descontinuadas. Essas versões devem ser removidas e uma versão atual do AWS Load Balancer Controller deve ser instalada.

  • As versões descontinuadas incluem:

    • AWS ALB Ingress Controller para Kubernetes (“Ingress Controller”), um antecessor do AWS Load Balancer Controller.

    • Qualquer versão 0.1.x do AWS Load Balancer Controller.

Provedor de nuvem herdado

O Kubernetes inclui um provedor de nuvem herdado para a AWS. O provedor de nuvem herdado é capaz de provisionar balanceadores de carga da AWS, que são semelhantes ao AWS Load Balancer Controller. O provedor de nuvem herdado cria Classic Load Balancers. Se você não instalar o AWS Load Balancer Controller, o Kubernetes usará o provedor de nuvem herdado como padrão. Você deve instalar o AWS Load Balancer Controller e evitar o uso do provedor de nuvem herdado.

Importante

Nas versões 2.5 e mais recentes, o AWS Load Balancer Controller passa a ser o controlador padrão para os recursos do tipo serviço do Kubernetes com o type: LoadBalancer e faz um Network Load Balancer (NLB) da AWS para cada serviço. Ele faz isso criando um webhook mutante para serviços, que define o campo spec.loadBalancerClass como service.k8s.aws/nlb para novos serviços type: LoadBalancer. Você pode desativar esse recurso e voltar a usar o provedor de nuvem antigo como o controlador padrão, definindo o valor enableServiceMutatorWebhook do chart do Helm para false. A menos que você desative esse recurso, o cluster não provisionará novos Classic Load Balancers para seus serviços. Os Classic Load Balancers existentes continuarão funcionando.