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á.
Compile automaticamente pipelines de CI/CD e clusters do Amazon ECS para microsserviços usando o 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 cluster do Amazon ECS 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 na 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)AWS Cloud Development Kit (AWS CDK), instalado e configurado. Para obter mais informações, consulte Conceitos básicos do AWS CDK na documentação do AWS CDK.
Python 3 e
pip
instalado e configurado Para obter mais informações, consulte a documentação do Pyton. Familiaridade com o AWS CDK, AWS CodeBuild, CodePipeline AWS, CodeCommit Amazon Elastic Container Registry (Amazon ECR), Amazon ECS e AWS Fargate.
Familiaridade com o Docker.
Uma compreensão do CI/CD e. DevOps
Limitações
Os limites gerais da conta da AWS se aplicam. Para obter mais informações, consulte Service Quotas da AWS, na documentação de Referência geral da AWS.
Versões do produto
Esse código foi testado usando o Nose.js versão 16.13.0 e o 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 Amazon ECR
CodePipeline implanta uma nova imagem em um serviço Fargate existente em um cluster Amazon ECS não produtivo.
O Amazon ECS extrai a imagem do repositório Amazon ECR para um serviço Fargate que não é de produção.
O teste é realizado usando um URL que não é de produção.
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 do Amazon ECS
O Amazon ECS extrai a imagem do repositório Amazon ECR para um serviço Fargate de produção.
Os usuários de produção acessam seu atributo usando uma URL de produção.
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 da AWS. CloudFormation A automação pode criar mais de um cluster do Amazon ECS em cada VPC e também criar pipelines para microsserviços implantados em um cluster compartilhado do Amazon ECS. No entanto, isso exige que você forneça novas informações de recursos como entradas para a pilha do pipeline.
Ferramentas
AWS CDK — O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software para definir a infraestrutura de nuvem em código e provisioná-la por meio da AWS. CloudFormation
AWS CodeBuild — CodeBuild A AWS é 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 — CodeCommit A AWS é um serviço de controle de versão que permite que você armazene e gerencie de forma privada repositórios Git na nuvem da 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 — CodePipeline A AWS é 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 (Amazon ECS) é um serviço de gerenciamento de contêineres altamente escalável e rápido que é usado na execução, interrupção e gerenciamento de contêineres em um cluster. Você pode executar tarefas e serviços em uma infraestrutura com tecnologia 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 (Amazon EC2) 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 o AWS CDK. |
| AWS DevOps, infraestrutura de nuvem |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie a infraestrutura compartilhada. |
| AWS DevOps, infraestrutura de nuvem |
Monitore a CloudFormation pilha da AWS. |
| AWS DevOps, infraestrutura de nuvem |
Teste a CloudFormation pilha da AWS. |
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 ambos VPCs. | AWS DevOps, infraestrutura de 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 de nuvem |
Monitore a CloudFormation pilha da AWS. | Abra o CloudFormation console da AWS e monitore o progresso da | AWS DevOps, infraestrutura de nuvem |
Teste a CloudFormation pilha da AWS. |
| |
Use o pipeline. |
| AWS DevOps, infraestrutura de 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 de 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