Como uso o AWS Load Balancer Controller para configurar um Application Load Balancer em um grupo de nós do Amazon EC2 no Amazon EKS?
Quero usar o AWS Load Balancer Controller para configurar um Application Load Balancer em um grupo de nós do Amazon Elastic Compute Cloud (Amazon EC2) no Amazon Elastic Kubernetes Service (Amazon EKS).
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Pré-requisito: configure suas sub-redes para permitir o acesso de saída à Internet a partir de seus nós de processamento. O AWS Load Balancer Controller exige uma conexão de saída com a Internet.
Para implantar o AWS Load Balancer Controller no AWS Fargate, consulte Como faço para configurar o AWS Load Balancer Controller em um cluster do Amazon EKS para o Fargate?
Marcar as sub-redes
Marque as sub-redes do Amazon Virtual Private Cloud (Amazon VPC) em seu cluster do Amazon EKS. Depois de marcar suas sub-redes, seu AWS Load Balancer Controller descobre 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 a tag kubernetes.io/role/elb.
Para Application Load Balancers privados, você precisa ter pelo menos duas sub-redes privadas na VPC do seu cluster com a tag kubernetes.io/role/elb.
Criar um provedor de identidade OIDC
Use o console do Amazon EKS, a AWSL CLI ou eksctl para criar um provedor de identidade OIDC para usar com perfis do AWS Identity and Access Management (AWS IAM) para contas de serviço (IRSA).
Console Amazon EKS
Para usar o console, consulte Create an OIDC identity provider (AWS Console) (Criar um provedor de identidade OIDC (Console da AWS)).
AWSL CLI
Localize a impressão digital da autoridade de certificação (CA) raiz que seu cluster usa. Em seguida, execute o seguinte comando create-open-id-connect-provider:
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.
eksctl
Para usar a ferramenta de linha de comandos eksctl, consulte create an OIDC identity provider (eksctl) (criar um provedor de identidade OIDC (eksctl)).
Crie uma política do IAM
Crie uma política de IAM que permita que o AWS Load Balancer Controller faça chamadas para APIs da AWS.
Importante: é uma prática recomendada usar o IRSA ao conceder acesso às APIs da AWS.
Conclua as etapas a seguir:
-
Execute um dos seguintes comandos com base na sua região para baixar uma política do IAM para o AWS Load Balancer Controller no GitHub.
Para todas as regiões, exceto as regiões de Pequim e Ningxia, China, execute o seguinte comando describe-cluster:ISSUER_URL= aws eks describe-cluster --name example-cluster-name \ --query "cluster.identity.oidc.issuer" --region example-region-name --output text aws iam create-open-id-connect-provider \ --url example-issuer-url \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region example-region-nameObservação: substitua example-cluster-name pelo nome do cluster, example-region-name pela sua região e example-issuer-url pelo URL do emissor.
Para as regiões de Pequim e Ningxia, na China, execute o seguinte comando curl:curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_cn.json -
Execute o comando create-policy a seguir para criar uma política do IAM chamada AWSLoadBalancerControllerIAMPolicy para seu perfil de instância do nó de processamento:
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json -
Observe o nome do recurso da Amazon (ARN) da política que o comando retorna.
-
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. -
Execute o seguinte comando attach-role-policy para anexar AWSLoadBalancerControllerIAMPolicy ao seu perfil do IAM:
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
Conclua as etapas a seguir:
-
Verifique se você tem a tag necessária para o balanceador de carga associado às suas sub-redes.
-
Execute o seguinte comando com o Kubernetes 1.16 ou posterior para instalar cert-manager:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/example-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/example-version/v2_13_3_full.yamlObservação: substitua example-version pela versão do AWS Load Balancer Controller que você deseja implantar. Para verificar a versão do AWS Load Balancer Controller, consulte Kubernetes SIGs (SIGs do Kubernetes) no site do GitHub. Certifique-se de modificar o nome do arquivo para que corresponda à sua versão. No exemplo de código anterior, v2_13_3_full.yaml corresponde ao AWS Load Balancer Controller v2.13.3. Para obter mais informações, consulte aws-load-balancer-controller no site do GitHub.
-
Faça as seguintes atualizações na seção ServiceAccount do arquivo .yaml:
spec: containers: - args: - --cluster-name=example-cluster-name - --ingress-class=albObservação: substitua example-cluster-name pelo nome do seu cluster.
No exemplo a seguir, 111122223333 é o ID da conta e example-role-name é o nome do perfil do IAM:apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/example-role-name name: aws-load-balancer-controller namespace: kube-system -
Execute o seguinte comando para implantar o AWS Load Balancer Controller:
kubectl apply -f ingress-controller.yaml
Implemente uma aplicação de amostra
Implante uma aplicação de amostra para verificar se o AWS Load Balancer Controller cria um Application Load Balancer público por causa do objeto de entrada.
Conclua as etapas a seguir:
-
Execute o comando a seguir para implantar um jogo chamado 2048:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlObservação: substitua example-version pela versão do AWS Load Balancer Controller que você deseja implantar. Para verificar sua versão do AWS Load Balancer Controller, consulte Kubernetes SIGs (SIGs do Kubernetes) no site do GitHub.
-
Depois de alguns minutos, execute o comando a seguir para verificar se o Kubernetes criou o recurso de entrada:
kubectl get ingress/ingress-2048 -n game-2048Exemplo de saída:
NAME CLASS HOSTS ADDRESS PORTS AGEingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com 80 2m32s -
Se o Kubernetes não criar seu recurso de entrada, execute o seguinte comando para analisar os logs do AWS Load Balancer Controller quanto a mensagens de erro de implantação:
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller -
Para ver o jogo, abra um navegador da Web e insira o endereço URL da saída na etapa 2.
-
Para excluir o jogo, execute o seguinte comando:
kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlObservação: substitua example-version pela versão do AWS Load Balancer Controller que você deseja implantar.
- Tópicos
- Containers
- Idioma
- Português

Conteúdo relevante
- feita há 8 meses
- feita há 8 meses
- feita há 5 meses