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á.
Crie automaticamente pipelines de CI/CD e ECS clusters da Amazon para microsserviços usando AWS CDK
Criado por Varsha Raju () AWS
Ambiente: PoC ou piloto | Tecnologias: DevOps; Contêineres e microsserviços; Modernização; Infraestrutura | AWSserviços: AWS CodeBuild; AWS CodeCommit; AWS CodePipeline; AmazonECS; AWS CDK |
Resumo
Esse padrão descreve como criar automaticamente os pipelines de integração contínua e entrega contínua (CI/CD) e a infraestrutura subjacente para criar e implantar microsserviços no Amazon Elastic Container Service (Amazon). ECS Você pode usar essa abordagem se quiser configurar pipelines de proof-of-concept CI/CD para mostrar à sua organização os benefícios de CI/CD, microsserviços e. DevOps Você também pode usar essa abordagem para criar pipelines iniciais de CI/CD que podem ser personalizados ou alterados de acordo com os requisitos da sua organização.
A abordagem do padrão cria um ambiente de produção e um ambiente de não produção, cada um com uma nuvem privada virtual (VPC) e um ECS cluster da Amazon configurado para ser executado em duas zonas de disponibilidade. Esses ambientes são compartilhados por todos os seus microsserviços e, em seguida, você cria um pipeline de CI/CD para cada microsserviço. Esses pipelines de CI/CD extraem as alterações de um repositório de origem, criam automaticamente as alterações e AWS CodeCommit, em seguida, as implantam em seus ambientes de produção e não produção. Quando um pipeline conclui com êxito todas as suas etapas, você pode usá-lo URLs para acessar o microsserviço nos ambientes de produção e não produção.
Pré-requisitos e limitações
Pré-requisitos
Uma conta ativa da Amazon Web Services (AWS).
Um bucket do Amazon Simple Storage Service (Amazon S3) existente que contém o arquivo
starter-code.zip
(anexado)AWSCloud Development Kit (AWSCDK), instalado e configurado em sua conta. Para obter mais informações sobre isso, consulte Introdução ao AWS CDK na AWS CDK documentação.
Python 3 e
pip
instalado e configurado Para obter mais informações, consulte a documentação do Pyton. Familiaridade com AWSCDK,, AWS CodePipeline, AWS CodeBuild CodeCommit, Amazon Elastic Container Registry (AmazonECR)ECS, Amazon e AWS Fargate.
Familiaridade com o Docker.
Uma compreensão do CI/CD e. DevOps
Limitações
Os limites gerais AWS da conta se aplicam. Para obter mais informações sobre isso, consulte cotas de AWS serviço na documentação de referência AWS geral.
Versões do produto
O código foi testado usando o Node.js versão 16.13.0 e a AWS CDK versão 1.132.0.
Arquitetura
O diagrama mostra o seguinte fluxo de trabalho:
Um desenvolvedor de aplicativos confirma o código em um CodeCommit repositório.
Um pipeline é inicializado.
CodeBuild cria e envia a imagem do Docker para um repositório da Amazon ECR
CodePipeline implanta uma nova imagem em um serviço Fargate existente em um cluster Amazon não produtivo. ECS
A Amazon ECS extrai a imagem do ECR repositório da Amazon para um serviço Fargate que não é de produção.
O teste é realizado usando uma unidade de não produçãoURL.
O gerente de lançamento aprova a implantação de produção.
CodePipeline implanta a nova imagem em um serviço Fargate existente em um cluster de produção da Amazon ECS
A Amazon ECS extrai a imagem do ECR repositório da Amazon para o serviço Fargate de produção.
Os usuários de produção acessam seu recurso usando uma produçãoURL.
Pilha de tecnologia
AWS CDK
CodeBuild
CodeCommit
CodePipeline
Amazon ECR
Amazon ECS
Amazon VPC
Automação e escala
Você pode usar a abordagem desse padrão para criar pipelines para microsserviços implantados em uma pilha compartilhada. AWS CloudFormation A automação pode criar mais de um ECS cluster da Amazon em cada um VPC e também criar pipelines para microsserviços implantados em um cluster compartilhado da Amazon. ECS No entanto, isso exige que você forneça novas informações de recursos como entradas para a pilha do pipeline.
Ferramentas
AWSCDK— O AWS Cloud Development Kit (AWSCDK) é uma estrutura de desenvolvimento de software para definir a infraestrutura de nuvem em código e provisioná-la por meio dela. AWS CloudFormation
AWS CodeBuild— AWS CodeBuild é um serviço de construção totalmente gerenciado na nuvem. CodeBuild compila seu código-fonte, executa testes de unidade e produz artefatos prontos para serem implantados.
AWS CodeCommit— AWS CodeCommit é um serviço de controle de versão que permite armazenar e gerenciar repositórios Git de forma privada na nuvem. AWS CodeCommit elimina a necessidade de você gerenciar seu próprio sistema de controle de origem ou se preocupar com a escalabilidade de sua infraestrutura.
AWS CodePipeline— AWS CodePipeline é um serviço de entrega contínua que você pode usar para modelar, visualizar e automatizar as etapas necessárias para lançar seu software. Você pode modelar e configurar rapidamente os diferentes estágios de um processo de lançamento de software. CodePipeline automatiza as etapas necessárias para liberar suas alterações de software continuamente.
Amazon ECS — O Amazon Elastic Container Service (AmazonECS) é um serviço de gerenciamento de contêineres rápido e altamente escalável que é usado para executar, parar e gerenciar contêineres em um cluster. Você pode executar suas tarefas e serviços em uma infraestrutura sem servidor gerenciada pelo AWS Fargate. Como alternativa, para ter mais controle sobre sua infraestrutura, você pode executar suas tarefas e serviços em um cluster de instâncias do Amazon Elastic Compute Cloud (AmazonEC2) que você gerencia.
Docker
: o Docker ajuda os desenvolvedores a empacotar, enviar e executar facilmente qualquer aplicativo como um contêiner leve, portátil e autossuficiente.
Código
O código desse padrão está disponível nos arquivos cicdstarter.zip
e starter-code.zip
(anexado).
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Configure o diretório de trabalho para AWSCDK. |
| AWS DevOps, Infraestrutura em nuvem |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie a infraestrutura compartilhada. |
| AWS DevOps, Infraestrutura em nuvem |
Monitore a AWS CloudFormation pilha. |
| AWS DevOps, Infraestrutura em nuvem |
Teste a AWS CloudFormation pilha. |
Importante: Certifique-se de registrar o IDs para os dois VPCs e o grupo de segurança IDs para os grupos de segurança padrão em ambosVPCs. | AWS DevOps, Infraestrutura em nuvem |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie a infraestrutura para o microsserviço. |
Observação: você também pode fornecer os valores para ambos os comandos usando o arquivo | AWS DevOps, Infraestrutura em nuvem |
Monitore a AWS CloudFormation pilha. | Abra o AWS CloudFormation console e monitore o progresso da | AWS DevOps, Infraestrutura em nuvem |
Teste a AWS CloudFormation pilha. |
| |
Use o pipeline. |
| AWS DevOps, Infraestrutura em nuvem |
Repita esse épico para cada microsserviço. | Repita as tarefas desse épico para criar um pipeline de CI/CD para cada um dos seus microsserviços. | AWS DevOps, Infraestrutura em nuvem |
Recursos relacionados
Mais informações
Comando da cdk synth
cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
cdk deploy
command
cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
Anexos
Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip