

 **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
<a name="aws-load-balancer-controller"></a>

**dica**  
 [Registre-se](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el) para os próximos workshops do Amazon EKS.

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.](http://docs.aws.amazon.com/pt_br/eks/latest/userguide/images/lbc-overview.png)


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)](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) quando você cria um Kubernetes `Ingress`. [Faça uma análise das anotações que você pode aplicar a um recurso Ingress.](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/) 

 **Serviço do Kubernetes do tipo `LoadBalancer`**   
O LBC cria um [AWS Network Load Balancer (NLB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 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.](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)   
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](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#target-type) no Guia do usuário do Network Load Balancer.

O controlador é um [projeto de código aberto](https://github.com/kubernetes-sigs/aws-load-balancer-controller) 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](alb-ingress.md) e [Roteamento de tráfego TCP e UDP com Network Load Balancers](network-load-balancing.md). Nesses tópicos, você implantará uma aplicação de amostra que inclui um balanceador de carga da AWS.

 **API `Gateway` do Kubernetes**   
Com o AWS Load Balancer Controller na versão `2.14.0` ou em versões posteriores, o LBC cria um [Application Load Balancer (ALB) da AWS](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) quando você cria um `Gateway` do Kubernetes. O gateway do Kubernetes oferece um nível maior de padronização de configuração em comparação à entrada, que precisava de anotações personalizadas para diversas opções comuns. [Analise as configurações que podem ser aplicadas a um recurso de gateway.](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/gateway/gateway/) Para obter mais informações sobre a API `Gateway`, consulte a [API Gateway](https://kubernetes.io/docs/concepts/services-networking/gateway/) na documentação do Kubernetes.

## Instalar o controlador
<a name="lbc-overview"></a>

É possível usar um dos seguintes procedimentos para instalar o AWS Load Balancer Controller:
+ Se ainda não conhece o Amazon EKS, recomendamos usar o Helm para simplificar a instalação do AWS Load Balancer Controller. Para obter mais informações, consulte [Instale o AWS Load Balancer Controller com o Helm](lbc-helm.md).
+ Para configurações avançadas, como clusters com acesso restrito à rede em registros de contêineres públicos, use manifestos do Kubernetes. Para obter mais informações, consulte [Instalar o AWS Load Balancer Controller com manifestos](lbc-manifest.md).

## Migração de versões descontinuadas do controlador
<a name="lbc-deprecated"></a>
+ Se você tiver versões obsoletas do AWS Load Balancer Controller instaladas, consulte [Migrar aplicações do ALB Ingress Controller descontinuado](lbc-remove.md).
+ 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
<a name="lbc-legacy"></a>

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. É necessário 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`. É possível desativar esse recurso e voltar a usar o [provedor de nuvem antigo](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider) 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.