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
As etapas a seguir mostram como implantar o Application Load Balancer usando o AWS Load Balancer Controller em um grupo de nós do Amazon EC2 com o Amazon EKS. Para criar um Network Load Balancer, consulte AWS Load Balancer Controller.
O AWS Load Balancer Controller deve estar conectado a um endpoint de serviço da AWS, como AWS Identity and Access Management (IAM), EC2, AWS Certificate Manager (ACM), Elastic Load Balancing, Amazon Cognito, AWS WAF ou AWS Shield. Isso significa que você deve ter uma conexão externa com a Internet para que o AWS Load Balancer Controller funcione. Para obter mais informações, consulte Como configuro minhas 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 VPC em seu cluster do Amazon EKS para permitir que o AWS Load Balancer Controller descubra automaticamente as sub-redes quando o recurso Application Load Balancer for criado.
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
**Observação:**se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.
Crie um provedor de identidade OIDC para seu cluster
Para criar um provedor de identidade OpenID Connect (OIDC) para seu cluster usar com funções do AWS Identity and Access Management (IAM) para contas de serviço, use eksctl ou o Console de Gerenciamento da AWS.
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 em seu nome. É uma prática recomendada usar perfis do AWS IAM para contas de serviço quando você concede acesso às APIs da AWS.
1. Para baixar um documento de política do IAM para o AWS Load Balancer Controller do AWS GitHub, execute um dos seguintes comandos com base na sua região.
Todas as regiões, exceto as regiões da China:
curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy.json
-ou-
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
2. 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
3. Observe o nome do recurso da Amazon (ARN) da política que é retornado na saída da etapa 2.
4. Use o perfil do IAM existente ou crie um novo perfil do IAM para o AWS Load Balancer Controller.
**Dica:**Para criar um perfil do IAM com eksctl, use o parâmetro --attach-policy-arn com o ARN da política do IAM AWSLoadBalancerControllerIAMPolicy.
5. Para anexar AWSLoadBalancerControllerIAMPolicy aos perfis do IAM que você identificou anteriormente, 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
1. Verifique se você tem as tags necessárias para o balanceador de carga associado às suas sub-redes.
2. Instale o cert-manager para que você possa injetar a configuração do certificado nos webhooks.
Para Kubernetes 1.16 ou posterior:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/$VERSION/cert-manager.yaml
Para Kubernetes 1.15 ou anterior:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/$VERSION/cert-manager-legacy.yaml
Observação: Substitua $VERSION pela versão (do site do Jetstack no GitHub, por exemplo, 'v1.6.0') do gerenciador de certificados que você deseja implantar.
3. No arquivo de manifesto baixado para o AWS Load Balancer Controller do AWS GitHub, execute o seguinte comando:
curl -Lo ingress-controller.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/$VERSION/v2_4_1_full.yaml
**Observação:**Substitua $VERSION pela versão (do site Kubernetes SIGs no GitHub, por exemplo, 'v2.4.1') do AWS Load Balancer Controller que você deseja implantar.
4. Edite o cluster-name para seu cluster. Por exemplo:
spec: containers: - args: - --cluster-name=your-cluster-name # edit the cluster name - --ingress-class=alb
5. 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.
6. 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.
1. Para implantar um jogo chamado 2048 como aplicativo de amostra, execute o seguinte comando:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
Observação: Substitua $VERSION pela versão (do site Kubernetes SIGs no GitHub, por exemplo, 'v2.3.0') do AWS Load Balancer Controller que você deseja implantar.
2. Para verificar se o recurso Ingress foi criado, aguarde alguns minutos e execute o seguinte comando:
kubectl get ingress/ingress-2048 -n game-2048
Você recebe uma saída semelhante à seguinte:
NAME CLASS HOSTS ADDRESS PORTS AGE ingress-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:
kubectl logs -n kube-system deployment.apps/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.
3. Para ver o aplicativo de amostra, abra um navegador da Web e acesse o endereço URL da saída na etapa 2.
4. Para limpar o aplicativo de amostra, execute o seguinte comando:
kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
Observação: Substitua $VERSION pela versão (do site Kubernetes SIGs no GitHub, por exemplo, 'v2.3.0') do AWS Load Balancer Controller que você deseja implantar.
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um mês
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano