Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Como configuro um Application Load Balancer usando o AWS Load Balancer Controller em um grupo de nós do Amazon EC2 no Amazon EKS?
Quero configurar um Application Load Balancer usando o AWS Load Balancer Controller em um grupo de nós do Amazon Elastic Compute Cloud (Amazon EC2) no Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrição
Conecte o AWS Load Balancer Controller a um dos seguintes endpoints de serviço da AWS:
- AWS Identity and Access Management (IAM)
- Amazon EC2
- AWS Certificate Manager (ACM)
- Elastic Load Balancing (ELB)
- Amazon Cognito
- AWS WAF
- AWS Shield
Para que o AWS Load Balancer Controller funcione, você deve ter uma conexão de saída com a Internet. Para obter mais informações, consulte Como configuro sub-redes para um cluster do Amazon EKS?
Para implantar o AWS Load Balancer Controller no AWS Fargate, consulte Como configuro o AWS Load Balancer Controller em um cluster do Amazon EKS para o Fargate e implanto o jogo 2048?
Resolução
Marque suas sub-redes para permitir a descoberta automática
Marque as sub-redes do Amazon Virtual Private Cloud (Amazon VPC) em seu cluster Amazon EKS. Isso permite que seu controlador do AWS Load Balancer descubra automaticamente sub-redes quando você cria o recurso Application Load Balancer.
Para Application Load Balancers públicos, você deve ter pelo menos duas sub-redes públicas na VPC do seu cluster com as seguintes tags:
kubernetes.io/role/elb
Para Application Load Balancers internos, você deve ter pelo menos duas sub-redes privadas na VPC do seu cluster com as seguintes tags:
kubernetes.io/role/internal-elb
Crie um provedor de identidade OIDC para seu cluster
Use o eksctl ou o Console de Gerenciamento da AWS para criar um provedor de identidade OpenID Connect (OIDC) para usar com perfis do IAM para contas de serviço.
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Você também pode usar a CLI do AWSL para criar um provedor de identidade OIDC para seu cluster. Por exemplo:
ISSUER_URL=$(aws eks describe-cluster --name cluster-name \ --query "cluster.identity.oidc.issuer" --region region-name --output text) aws iam create-open-id-connect-provider \ --url ${ISSUER_URL} \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region region-name
Observação: substitua cluster-name pelo nome do cluster, region-name pela região da AWS e ca-thumbprint pela impressão digital do seu certificado CA raiz. Você pode obter a impressão digital do certificado de CA raiz que seu cluster usa com oidc.eks.region-name.amazonaws.com.
Crie uma política do IAM para o AWS Load Balancer Controller
A política do Amazon EKS que você cria permite que o AWS Load Balancer Controller faça chamadas para as APIs da AWS. É uma prática recomendada usar perfis do AWS IAM para contas de serviço quando você concede acesso às APIs da AWS.
-
Baixe uma política de IAM para o AWS Load Balancer Controller no GitHub. Execute um dos seguintes comandos com base na sua região.
Todas as regiões, exceto as regiões da China:ISSUER_URL=$(aws eks describe-cluster --name cluster-name \ --query "cluster.identity.oidc.issuer" --region region-name --output text) aws iam create-open-id-connect-provider \ --url ${ISSUER_URL} \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region region-name
Regiões de Pequim e Ningxia na China:
curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_cn.json
-
Para criar uma política do IAM chamada AWSLoadBalancerControllerIAMPolicy para seu perfil de instância do nó de processamento, execute o seguinte comando:
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json
-
Observe o ARN da política que é retornado na saída.
-
Use o perfil do IAM existente ou crie um novo perfil do IAM para o AWS Load Balancer Controller.
Observação: para usar eksctl para criar um perfil do IAM, use o parâmetro —attach-policy-arn com o ARN da política do IAM AWSLoadBalancerControllerIAMPolicy. -
Para anexar o AWSLoadBalancerControllerIamPolicy aos perfis do IAM, execute o seguinte comando:
aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --role-name role-name
**Observação:**Substitua 111122223333 pelo ID da conta da AWS e role-name pelo nome do perfil do IAM.
Implante o AWS Load Balancer Controller
-
Verifique se você tem as tags necessárias para o balanceador de carga associado às suas sub-redes.
-
Instale o cert-manager para que você possa injetar a configuração do certificado nos webhooks. Use o Kubernetes 1.16 ou posterior para executar o seguinte comando:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/$VERSION/cert-manager.yaml
-
No arquivo de manifesto que você baixou do GitHub, execute o seguinte comando:
curl -Lo ingress-controller.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/$VERSION/v2_6_2_full.yaml
Observação: substitua $VERSION pela versão do AWS Load Balancer Controller que você deseja implantar e modifique o nome do arquivo, como v2_6_2_full.yaml para v2.6.2. Para obter mais informações, consulte The Kubernetes repository no GitHub.
-
Edite o cluster-name para seu cluster. Por exemplo:
spec: containers: - args: - --cluster-name=your-cluster-name # edit the cluster name - --ingress-class=alb
-
Atualize somente a seção ServiceAccount do arquivo. Por exemplo:
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller annotations: # Add the annotations line eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/role-name # Add the IAM role name: aws-load-balancer-controller namespace: kube-system
Observação: substitua 111122223333 pelo ID da conta da AWS e role-name pelo nome do perfil do IAM.
-
Para implantar o AWS Load Balancer Controller, execute o seguinte comando:
kubectl apply -f ingress-controller.yaml
Implante um aplicativo de amostra para testar o AWS Load Balancer Controller
Implante um aplicativo de amostra para verificar se o AWS Load Balancer Controller cria um Application Load Balancer público por causa do objeto Ingress.
- Para implantar um jogo chamado 2048 como aplicativo de amostra, execute o seguinte comando:
Observação: substitua $VERSION pela versão (do site Kubernetes SIGs no GitHub) do AWS Load Balancer Controller que você deseja implantar.kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
- Para verificar se o recurso Ingress foi criado, aguarde alguns minutos e execute o seguinte comando:
Você recebe uma saída semelhante ao seguinte exemplo:kubectl get ingress/ingress-2048 -n game-2048
NAME CLASS HOSTS ADDRESS PORTS AGEingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com 80 2m32s
- Se Ingress não for criado após alguns minutos, execute o seguinte comando para visualizar os logs do AWS Load Balancer Controller:
Observação: os logs do AWS Load Balancer Controller podem mostrar mensagens de erro para ajudar você a solucionar problemas com sua implantação.kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller
- Para ver o aplicativo de amostra, abra um navegador da Web e acesse o endereço URL da saída na etapa 2.
- Para limpar o aplicativo de amostra, execute o seguinte comando:
Observação: substitua $VERSION pela versão (do site Kubernetes SIGs no GitHub) do AWS Load Balancer Controller que você deseja implantar.kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
Informações relacionadas

Conteúdo relevante
- Resposta aceitafeita há um mêslg...
- feita há um mêslg...
- feita há 2 meseslg...
- feita há um dialg...
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano