View a markdown version of this page

Começando com o Beanstalk Cluster - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Começando com o Beanstalk Cluster

Neste tutorial, você cria um aplicativo Elastic Beanstalk e um ambiente Beanstalk Cluster. Você omite a versão do aplicativo para que o Elastic Beanstalk implante sua imagem de contêiner de amostra pré-criada. Em seguida, você espera que o ambiente fique pronto, recupere seu URL e o encerre. Como alternativa, você pode começar no AWS Management Console, que fornece uma experiência totalmente guiada, ou indicar ao seu agente de IA a Cluster Beanstalk documentação.

Duração estimada: 15 a 20 minutos

Importante

Não há cobrança adicional pelo Elastic Beanstalk, mas você paga pelos AWS recursos que o ambiente usa, incluindo o Amazon EKS e sua computação. Para obter mais informações, consulte Preços do Elastic Beanstalk. Conclua as etapas de limpeza ao concluir este tutorial.

Antes de começar

Conclua os seguintes pré-requisitos:

  • Instale e configure a AWS CLI. Para obter instruções, consulte Get started with the AWS CLI no Guia do usuário da AWS Command Line Interface .

  • Use um principal do IAM que possa criar e gerenciar aplicativos e ambientes do Elastic Beanstalk e que possa passar pelas funções de cluster, nó e observabilidade ao criar um ambiente. Para obter as permissões exatas, consultePermissões para criar o ambiente.

  • Crie a função de cluster que o Amazon EKS assume, a função de nó que os nós do Amazon EC2 do cluster assumem e a função de observabilidade que publica as métricas, registros e rastreamentos do ambiente, conforme descrito em. Crie as funções do IAM Para escolher as sub-redes VPC que o ambiente usa, consulte. Configurando redes para ambientes Beanstalk Cluster

  • Escolha uma AWS região na qual o Beanstalk Cluster esteja disponível. Os comandos usam a Região da sua AWS CLI configuração.

Crie as funções do IAM

Um ambiente Beanstalk Cluster precisa de três funções do IAM fornecidas por você: uma função de cluster, uma função de nó e uma função de observabilidade. O console do Elastic Beanstalk os cria para você, mas este tutorial usa os AWS CLI, então crie-os primeiro. Use esses nomes, pois o console seleciona as funções existentes pelo nome. Para que serve cada função e as permissões de chamador que você precisa passar para elas, consultePermissões para o Beanstalk Cluster.

Para criar as funções de cluster, nó e observabilidade
  1. Crie um arquivo de política de confiança para cada serviço que assume uma função. A função de cluster confia no Amazon EKS, a função de nó confia no Amazon EC2 e a função de observabilidade confia no Amazon EKS Pod Identity.

    $ cat > eks-trust.json <<'EOF' { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "eks.amazonaws.com"}, "Action": ["sts:AssumeRole", "sts:TagSession"] }] } EOF
    $ cat > ec2-trust.json <<'EOF' { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" }] } EOF
    $ cat > pods-trust.json <<'EOF' { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "pods.eks.amazonaws.com"}, "Action": ["sts:AssumeRole", "sts:TagSession"] }] } EOF
  2. Crie a função de cluster e anexe suas políticas.

    $ aws iam create-role \ --role-name aws-elasticbeanstalk-eks-cluster-role \ --assume-role-policy-document file://eks-trust.json $ for p in AmazonEKSClusterPolicy AmazonEKSNetworkingPolicy AmazonEKSComputePolicy \ AmazonEKSBlockStoragePolicy AmazonEKSLoadBalancingPolicy AWSElasticBeanstalkEKSTagging; do aws iam attach-role-policy \ --role-name aws-elasticbeanstalk-eks-cluster-role \ --policy-arn arn:aws:iam::aws:policy/$p done
  3. Crie a função do nó e anexe suas políticas.

    $ aws iam create-role \ --role-name aws-elasticbeanstalk-eks-node-role \ --assume-role-policy-document file://ec2-trust.json $ for p in AmazonEKSWorkerNodeMinimalPolicy AmazonEC2ContainerRegistryPullOnly \ AmazonSSMManagedInstanceCore; do aws iam attach-role-policy \ --role-name aws-elasticbeanstalk-eks-node-role \ --policy-arn arn:aws:iam::aws:policy/$p done
  4. Crie a função de observabilidade e anexe suas políticas.

    $ aws iam create-role \ --role-name aws-elasticbeanstalk-eks-observability-role \ --assume-role-policy-document file://pods-trust.json $ for p in CloudWatchAgentServerPolicy AWSElasticBeanstalkEKSObservability; do aws iam attach-role-policy \ --role-name aws-elasticbeanstalk-eks-observability-role \ --policy-arn arn:aws:iam::aws:policy/$p done
  5. Registre os três ARNs de função. Você os passa ao criar o ambiente.

    $ for r in cluster node observability; do aws iam get-role --role-name aws-elasticbeanstalk-eks-$r-role \ --query 'Role.Arn' --output text done

Escolha uma ferramenta de provisionamento compatível

Você pode criar e gerenciar um ambiente de cluster do Beanstalk com o console do Elastic Beanstalk, a API do Elastic Beanstalk ou o. AWS CLI Este tutorial usa o AWS CLI para que cada solicitação seja visível e repetível.

Você também pode implantar com a GitHub Ação oficial e definir seus ambientes como infraestrutura como código com o Terraform por meio do AWS provedor. Para a GitHub Ação, consulteUsando GitHub ações para implantar no Elastic Beanstalk.

Crie o aplicativo e implante a amostra

  1. Crie um aplicativo Elastic Beanstalk para conter o ambiente.

    $ aws elasticbeanstalk create-application \ --application-name getting-started-cluster-app
  2. Criar o ambiente O Cluster nível seleciona Beanstalk Cluster. Como essa solicitação não tem rótulo de versão, o Elastic Beanstalk implanta o aplicativo de amostra.

    $ aws elasticbeanstalk create-environment \ --application-name getting-started-cluster-app \ --environment-name getting-started-cluster-env \ --tier Name=Cluster,Type=EKS \ --option-settings \ Namespace=aws:elasticbeanstalk:eks,OptionName=cluster-role,Value=cluster-role-arn \ Namespace=aws:elasticbeanstalk:eks,OptionName=node-role,Value=node-role-arn \ Namespace=aws:elasticbeanstalk:eks:environment,OptionName=observability-role,Value=observability-role-arn

    Substitua os espaços reservados do ARN da função pelas funções que você preparou. A solicitação omite service-port e. load-balancer-type O Elastic Beanstalk resolve essas configurações para seus padrões e. 8080 ALB Para escolher valores diferentes, passe-os com--option-settings. Para obter a referência completa da opção, consulteOpções de configuração para ambientes Beanstalk Cluster.

  3. Aguarde até que o ambiente esteja pronto. Um primeiro ambiente pode levar de 15 a 20 minutos, enquanto o Elastic Beanstalk cria o cluster Amazon EKS e implanta a amostra. O AWS CLI fornece um garçom embutido que pesquisa até que o ambiente informe. Ready O garçom pesquisa no máximo 20 vezes em intervalos de 20 segundos, cerca de 6 minutos e 40 segundos; portanto, em um primeiro ambiente, espere que ele informe. Max attempts exceeded Execute-o novamente até que ele reporte o sucesso.

    $ aws elasticbeanstalk wait environment-exists \ --environment-names getting-started-cluster-env

    O garçom relata Max attempts exceeded quando o ambiente ainda está sendo criado e quando a criação falhou. Se ele não relatar sucesso após algumas execuções, inspecione os eventos recentes do ambiente e resolva o erro relatado antes de continuar.

    $ aws elasticbeanstalk describe-events \ --environment-name getting-started-cluster-env \ --query 'Events[].[EventDate,Severity,Message]' \ --output table
  4. Inspecione o status do ambiente, a cor da saúde, o status da integridade e o URL.

    $ aws elasticbeanstalk describe-environments \ --application-name getting-started-cluster-app \ --environment-names getting-started-cluster-env \ --query 'Environments[0].[Status,Health,HealthStatus,CNAME]' \ --output table

    Confirme se o ambiente relata Ready e retorna um não vazioCNAME. Abra https:// seguido pelo CNAME em um navegador da Web e confirme se o aplicativo de amostra responde. O balanceador de carga responde somente em HTTPS, portanto, uma solicitação de http:// espera até atingir o tempo limite. Para aceitar solicitações HTTP e fazer com que o Elastic Beanstalk as redirecione para HTTPS, consulte. Configurando redes para ambientes Beanstalk Cluster Um ambiente inativo pode relatar inicialmente Grey e NoData porque recebeu poucas solicitações para determinar a integridade do aplicativo; os eventos de integridade exibem esse status comoNo Data. Isso não indica uma falha na implantação. Depois que o aplicativo recebe solicitações bem-sucedidas suficientes, a integridade normalmente passa para Green Ok e. Se o CNAME estiver vazio, o aplicativo não responder ou a integridade relatar uma falha, inspecione os eventos recentes do ambiente antes de continuar:

    $ aws elasticbeanstalk describe-events \ --environment-name getting-started-cluster-env \ --query 'Events[].[EventDate,Severity,Message]' \ --output table

    Para o modelo de integridade do cluster, consulteMonitorando ambientes do Beanstalk Cluster.

Implante sua própria imagem de contêiner

O ambiente está executando o aplicativo de amostra porque a solicitação de criação não tinha nenhum rótulo de versão. Para executar seu próprio aplicativo, crie uma versão do aplicativo que nomeie sua imagem de contêiner e implante essa versão no ambiente. Esse é o fluxo normal do Elastic Beanstalk: uma versão do aplicativo é o artefato implantável, e a amostra é o que o Elastic Beanstalk implanta quando você não fornece uma.

Antes de começar, você precisa de uma imagem de contêiner que já tenha enviado para um registro, como um repositório Amazon Elastic Container Registry (Amazon ECR) em sua conta, e a imagem deve escutar o ambienteservice-port, a 8080 menos que você a tenha alterado. A implantação de sua própria versão substitui o aplicativo de amostra. Para que o Elastic Beanstalk crie a imagem a partir de sua fonte e para as opções de construção, consulte. Criação de imagens de contêiner para ambientes Beanstalk Cluster

  1. Crie uma versão do aplicativo que aponte para sua imagem.

    $ aws elasticbeanstalk create-application-version \ --application-name getting-started-cluster-app \ --version-label v1 \ --image-configuration Source={Uri=your-image-uri}

    your-image-uriSubstitua pela sua imagem, por exemplo111122223333.dkr.ecr.us-east-1.amazonaws.com/my-app:v1. Como a imagem já foi criada, a versão não precisa de nenhuma etapa de construção e está pronta para ser implantada.

  2. Implante a versão no ambiente.

    $ aws elasticbeanstalk update-environment \ --environment-name getting-started-cluster-env \ --version-label v1
  3. Confirme se a implantação foi concluída e se o ambiente está servindo seu aplicativo.

    $ aws elasticbeanstalk describe-events \ --environment-name getting-started-cluster-env \ --query 'Events[].[EventDate,Severity,Message]' \ --output table

    Abra https:// seguido pelo CNAME do ambiente em um navegador da Web e confirme se seu aplicativo responde. Se isso não acontecer, verifique se há uma falha de implantação nos eventos e confirme se a imagem escuta a do service-port ambiente.

Limpe os recursos do tutorial

  1. Encerrar o ambiente.

    $ aws elasticbeanstalk terminate-environment \ --environment-name getting-started-cluster-env
  2. Aguarde até que o ambiente alcance o Terminated status. O AWS CLI fornece um garçom embutido que pesquisa até a conclusão da rescisão. Esse garçom tem o mesmo limite de 20 tentativas, então execute-o novamente até que ele relate o sucesso.

    $ aws elasticbeanstalk wait environment-terminated \ --environment-names getting-started-cluster-env

    O garçom informa Max attempts exceeded quando a rescisão ainda está em andamento e quando ela falhou. Se ele não relatar sucesso após algumas execuções, resolva o erro nos eventos do ambiente. Não exclua o aplicativo enquanto o ambiente ainda existir.

  3. Exclua o aplicativo e suas versões do aplicativo, incluindo a versão de amostra que o Elastic Beanstalk criou e qualquer versão que você adicionou. Isso não exclui uma imagem de contêiner que você forneceu ou o repositório que a contém; consulteCriação de imagens de contêiner para ambientes Beanstalk Cluster.

    $ aws elasticbeanstalk delete-application \ --application-name getting-started-cluster-app

O Elastic Beanstalk exclui um cluster compartilhado do Amazon EKS somente depois que você encerra o último ambiente que o usa. A exclusão do cluster pode levar até três horas; as cobranças do Amazon EKS e de outros recursos continuam até que a exclusão seja concluída. O encerramento não exclui as funções do IAM de cluster, nó e observabilidade fornecidas pelo cliente. Verifique a exclusão do cluster conforme descrito emExclusão de cluster.

Próximas etapas