

 **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.

# Instale o AWS Load Balancer Controller com o Helm
<a name="lbc-helm"></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.

**dica**  
Com o Modo automático do Amazon EKS, você não precisa instalar ou atualizar complementos de rede. O Modo automático inclui recursos de rede de pods e balanceamento de carga.  
Para obter mais informações, consulte [Automatizar a infraestrutura de clusters com o Modo Automático do EKS](automode.md).

Este tópico descreve como instalar o AWS Load Balancer Controller usando o Helm, um gerenciador de pacotes para o Kubernetes, e o `eksctl`. O controlador é instalado com as opções padrão. Para obter mais informações sobre o controlador, incluindo detalhes sobre como configurá-lo com anotações, consulte a [documentação do AWS Load Balancer Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/) no GitHub.

Nas etapas a seguir, substitua os valores de exemplo pelos seus próprios valores.

## Pré-requisitos
<a name="lbc-prereqs"></a>

Antes de começar este tutorial, conclua as seguintes etapas:
+ Crie um cluster do Amazon EKS. Para criar uma, consulte [Começar a usar o Amazon EKS](getting-started.md).
+ Instale o [Helm](https://helm.sh/docs/helm/helm_install/) na máquina local.
+ Certifique-se de que os complementos `kube-proxy`, CoreDNS e plug-in CNI da Amazon VPC para Kubernetes estejam nas versões mínimas listadas em [Tokens de contas de serviços](service-accounts.md#boundserviceaccounttoken-validated-add-on-versions).
+ Saiba mais sobre os conceitos do AWS Elastic Load Balancing. Para obter mais informações, consulte o [Manual do usuário do Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/).
+ Saiba mais sobre os recursos de [entrada](https://kubernetes.io/docs/concepts/services-networking/service/) e [serviço](https://kubernetes.io/docs/concepts/services-networking/ingress/) do Kubernetes.

### Considerações
<a name="lbc-considerations"></a>

Antes de prosseguir com as etapas de configuração nesta página, considere o seguinte:
+ A política e o perfil (`AmazonEKSLoadBalancerControllerRole`) do IAM podem ser reutilizados em vários clusters de EKS na mesma conta da AWS.
+ Se você estiver instalando o controlador no mesmo cluster em que o perfil (`AmazonEKSLoadBalancerControllerRole`) foi criado originalmente, vá para a [Etapa 2: instalar o Load Balancer Controller](#lbc-helm-install) depois de verificar se o perfil existe.
+ Se você estiver usando perfis do IAM para contas de serviço (IRSA, da sigla em inglês), o IRSA deverá ser configurado para cada cluster, e o ARN do provedor OpenID Connect (OIDC) na política de confiança do perfil será específico para cada cluster de EKS. Além disso, se você estiver instalando o controlador em um novo cluster com um `AmazonEKSLoadBalancerControllerRole` existente, atualize a política de confiança do perfil para incluir o provedor OIDC do novo cluster e crie uma conta de serviço com a anotação de perfil apropriada. Para determinar se você já tem um provedor OIDC, ou para criar um, consulte [Criar um provedor de identidade OIDC do IAM para o cluster](enable-iam-roles-for-service-accounts.md).

## Etapa 1: criar um perfil do IAM usando a ferramenta `eksctl`
<a name="lbc-helm-iam"></a>

As etapas a seguir referem-se à versão de lançamento **v2.14.1** do AWS Load Balancer Controller. Para obter mais informações sobre todas as versões, consulte a [página de versões do AWS Load Balancer Controller](https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/) no GitHub.

1. Baixe uma política do IAM para o AWS Load Balancer Controller que permita que ele faça chamadas para APIs da AWS em seu nome.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy.json
   ```
   + Se você for uma partição da AWS não padrão, como um governo ou região da China, [consulte as políticas no GitHub](https://github.com/kubernetes-sigs/aws-load-balancer-controller/tree/main/docs/install) e baixe a política apropriada para sua região.

1. Crie uma política do IAM usando a política obtida por download na etapa anterior.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```
**nota**  
Se você visualizar a política no Console de gerenciamento da AWS, ele mostrará os avisos para o serviço **ELB**, mas não para o serviço **ELB v2**. Isso acontece porque algumas das ações da política existem para o **ELB v2**, mas não para o **ELB**. É possível ignorar esses avisos para o **ELB**..

1. Substitua os valores do nome do cluster, código da região e ID da conta.

   ```
   eksctl create iamserviceaccount \
       --cluster=<cluster-name> \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::<AWS_ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region <aws-region-code> \
       --approve
   ```

## Etapa 2: instalar o AWS Load Balancer Controller
<a name="lbc-helm-install"></a>

1. Adicione o repositório de chart do Helm `eks-charts`. A AWS mantém [esse repositório](https://github.com/aws/eks-charts) no GitHub.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

1. Atualize o repositório local para confirmar que você tem os gráficos mais recentes.

   ```
   helm repo update eks
   ```

1. Instale o AWS Load Balancer Controller.

   Se você estiver implantando o controlador nos nós do Amazon EC2 aos quais você tem [acesso restrito ao serviço de metadados de instância (IMDS) do Amazon EC2](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node), ou se você estiver implantando no Fargate ou no Amazon EKS Hybrid Nodes, adicione os seguintes sinalizadores ao comando do `helm`:
   +  `--set region=region-code ` 
   +  `--set vpcId=vpc-xxxxxxxx ` 

     Substitua *my-cluster* pelo nome do cluster. No comando a seguir, `aws-load-balancer-controller` é a conta de serviço do Kubernetes que você criou em uma etapa anterior.

     Para obter mais informações sobre a configuração do gráfico de leme, consulte [values.yaml](https://github.com/aws/eks-charts/blob/master/stable/aws-load-balancer-controller/values.yaml) no GitHub.

     ```
     helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
       -n kube-system \
       --set clusterName=my-cluster \
       --set serviceAccount.create=false \
       --set serviceAccount.name=aws-load-balancer-controller \
       --version 1.14.0
     ```

**Importante**  
O gráfico implantado não recebe atualizações de segurança automaticamente. Você precisa atualizar manualmente para um gráfico mais recente quando ele estiver disponível. Ao fazer o upgrade, altere *install* para `upgrade` no comando anterior.

O comando `helm install` instala automaticamente as definições de recursos personalizados (CRDs) do controlador. O comando `helm upgrade` não realiza essa instalação. Caso use `helm upgrade,`, será necessário instalar manualmente as CRDs. Execute o seguinte comando para instalar as CRDs:

```
wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml
kubectl apply -f crds.yaml
```

## Etapa 3: verificar se o controlador está instalado
<a name="lbc-helm-verify"></a>

1. Verifique se o controlador está instalado.

   ```
   kubectl get deployment -n kube-system aws-load-balancer-controller
   ```

   Veja um exemplo de saída abaixo.

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

   Você recebe a saída anterior se tiver implantado usando o Helm. Se você implantou usando o manifesto do Kubernetes, só tem uma réplica.

1. Antes de usar o controlador para provisionar os recursos da AWS, o cluster doverá cumprir requisitos específicos. Para obter mais informações, consulte [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).