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

Ajudar a melhorar esta página

Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.

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

O AWS Load Balancer Controller gerencia o 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 observa os recursos Service e Ingress do Kubernetes. Em resposta, ele cria os recursos apropriados do AWS Elastic Load Balancing. É possível configurar um comportamento específico de 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 Kubernetes Ingress. Faça uma análise das anotações que você pode aplicar a um recurso Ingress.

Serviço do 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âncias, mas usava o LBC para destinos de IPs. Com o AWS Load Balancer Controller versão 2.3.0 ou mais recente, 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 Roteamento de aplicações e tráfego HTTP com Application Load Balancers e Roteamento de tráfego TCP e 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 obsoletas do AWS Load Balancer Controller instaladas, consulte Migrar aplicações do ALB Ingress Controller descontinuado.

  • 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 legado para a AWS. O provedor de nuvem legado é 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 legado como padrão. Você deve instalar o AWS Load Balancer Controller e evitar o uso do provedor de nuvem legado.

Importante

Nas versões 2.5 e mais recentes, o AWS Load Balancer Controller passa a ser o controlador padrão para os recursos de serviços com o type: LoadBalancer e cria um AWS Network Load Balancer (NLB) 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.