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
Resumo
Esse padrão descreve como criar automaticamente a integração contínua e a entrega contínua (CI/CD) pipelines and underlying infrastructure for building and deploying microservices on Amazon Elastic Container Service (Amazon ECS). You can use this approach if you want to set up proof-of-concept CI/CD pipelines to show your organization the benefits of CI/CD, microservices, and DevOps. You can also use this approach to create initial CI/CDpipelines) que você pode personalizar ou alterar 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 CI/CD pipeline for each microservice. These CI/CD pipeline, extrai as alterações de um repositório de origem AWS CodeCommit, cria automaticamente as alterações e as implanta 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. |
ImportanteCertifique-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. |
notaVocê também pode fornecer os valores para ambos os comandos usando o | 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