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á.
Implemente um pipeline de CI/CD para microsserviços Java na Amazon ECS
Criado por Vijay Thompson (AWS) e Sankar Sangubotla () AWS
Ambiente: PoC ou piloto | Tecnologias: DevOps; Contêineres e microsserviços | AWSserviços: AWS CodeBuild; Amazon EC2 Container Registry; AmazonECS; AWS Fargate; AWS CodePipeline |
Resumo
Esse padrão orienta você pelas etapas de implantação de um pipeline de integração contínua e entrega contínua (CI/CD) para microsserviços Java em um cluster existente do Amazon Elastic Container Service (AmazonECS) usando. AWS CodeBuild Quando o desenvolvedor confirma as alterações, o pipeline de CI/CD é iniciado e o processo de construção começa. CodeBuild Quando a compilação é concluída, o artefato é enviado para o Amazon Elastic Container Registry (AmazonECR) e a versão mais recente da Amazon ECR é coletada e enviada para o ECS serviço da Amazon.
Pré-requisitos e limitações
Pré-requisitos
Um aplicativo de microsserviços Java existente em execução na Amazon ECS
Familiaridade com e AWS CodeBuild AWS CodePipeline
Arquitetura
Pilha de tecnologia de origem
Microsserviços Java em execução na Amazon ECS
Repositório de código na Amazon ECR
AWS Fargate
Arquitetura de origem
Pilha de tecnologias de destino
Amazon ECR
Amazon ECS
AWS Fargate
AWS CodePipeline
AWS CodeBuild
Arquitetura de destino
Automação e escala
CodeBuild buildspec.yml
arquivo:
version: 0.2 phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws --version - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email) - REPOSITORY_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) - IMAGE_TAG=build-$(echo $CODEBUILD_BUILD_ID | awk -F":" '{print $2}') build: commands: - echo Build started on `date` - echo building the Jar file - mvn clean install - echo Building the Docker image... - docker build -t $REPOSITORY_URI:$BUILD_TAG . - docker tag $REPOSITORY_URI:$BUILD_TAG $REPOSITORY_URI:$IMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker images... - docker push $REPOSITORY_URI:$BUILD_TAG - docker push $REPOSITORY_URI:$IMAGE_TAG - echo Writing image definitions file... - printf '[{"name":"%s","imageUri":"%s"}]' $DOCKER_CONTAINER_NAME $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json - cat imagedefinitions.json artifacts: files: - imagedefinitions.json - target/DockerDemo.jar
Ferramentas
AWSserviços
AWS CodeBuildé um serviço de compilação totalmente gerenciado que ajuda você a compilar o código-fonte, executar testes de unidade e produzir artefatos prontos para implantação. AWS CodeBuild escala continuamente e processa várias compilações simultaneamente, para que suas compilações não fiquem na fila.
AWS CodePipelineajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software e automatizar as etapas necessárias para liberar alterações de software continuamente. Você pode se integrar AWS CodePipeline a serviços de terceiros GitHub, como, ou usar AWS serviços como AWS CodeCommit o AmazonECR.
O Amazon Elastic Container Registry (AmazonECR) é um registro totalmente gerenciado que facilita para os desenvolvedores armazenar, gerenciar e implantar imagens de contêineres do Docker. A Amazon ECR está integrada ECS à Amazon para simplificar seu development-to-production fluxo de trabalho. A Amazon ECR hospeda suas imagens em uma arquitetura altamente disponível e escalável para que você possa implantar contêineres para seus aplicativos de forma confiável. A integração com AWS Identity and Access Management (IAM) fornece controle em nível de recursos de cada repositório.
O Amazon Elastic Container Service (AmazonECS) é um serviço de orquestração de contêineres altamente escalável e de alto desempenho que oferece suporte a contêineres Docker e permite que você execute e escale facilmente aplicativos em contêineres. AWS A Amazon ECS elimina a necessidade de você instalar e operar seu próprio software de orquestração de contêineres, gerenciar e escalar um cluster de máquinas virtuais ou programar contêineres nessas máquinas virtuais.
AWSO Fargate é um mecanismo de computação para a Amazon ECS que permite que você execute contêineres sem precisar gerenciar servidores ou clusters. Com o AWS Fargate, você não precisa mais provisionar, configurar e escalar clusters de máquinas virtuais para executar contêineres. Isso elimina a necessidade de escolher tipos de servidor, decidir quando dimensionar clusters ou otimizar o agrupamento de clusters.
Outras ferramentas
Docker
é uma plataforma que permite criar, testar e entregar aplicativos em pacotes chamados contêineres. Git
é um sistema distribuído de controle de versão para rastrear alterações no código-fonte durante o desenvolvimento do software. Ele foi projetado para coordenar o trabalho entre programadores, mas pode ser usado para rastrear alterações em nenhum conjunto de arquivos. Seus objetivos incluem velocidade, integridade de dados e suporte para fluxos de trabalho distribuídos e não lineares. Você também pode usar AWS CodeCommit como alternativa ao Git.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie um projeto de CodeBuild construção. | No AWS CodeBuild console | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Selecione a origem. | Esse padrão usa o Git para o repositório de código, então escolha na lista GitHub de opções disponíveis. Escolha um repositório público ou da sua GitHub conta. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Selecione um repositório. | Selecione o repositório a partir do qual você deseja compilar o código. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Selecione o ambiente. | Você pode selecionar em uma lista de imagens gerenciadas ou optar por uma imagem personalizada usando o Docker. Esse padrão usa a seguinte imagem gerenciada:
| Desenvolvedor de aplicativos, administrador AWS de sistemas |
selecione um perfil de serviço. | Você pode criar um perfil de serviço ou selecionar em uma lista de funções existentes. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Adicionar variáveis de ambiente. | Na seção Configuração adicional, configure as seguintes variáveis de ambiente:
Essas variáveis são espaços reservados no arquivo | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Crie um arquivo buildspec. | Você pode criar um arquivo | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Configure o projeto para artefatos. | (Opcional) Configure o projeto de construção para artefatos, se necessário. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Configure o Amazon CloudWatch Logs. | (Opcional) Configure o Amazon CloudWatch Logs para o projeto de construção, se necessário. Esta etapa é opcional, mas recomendada. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Configurar logs do Amazon S3. | (Opcional) Configure logs do Amazon Simple Storage Service (Amazon S3) para o projeto de compilação, se quiser armazenar logs. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie um pipeline. | No AWS CodePipeline console | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Selecionar um perfil de serviço. | Crie um perfil de serviço ou selecione na lista de perfis de serviço existentes. Se você estiver criando uma função de serviço, forneça um nome para a função e selecione a opção CodePipeline para criar a função. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Selecione uma loja de artefatos. | Em Configurações avançadas, se você quiser que o Amazon S3 crie um bucket e armazene os artefatos nele, use o local padrão para o armazenamento de artefatos. Ou selecione um local personalizado e especifique um bucket existente. Você também pode optar por criptografar o artefato usando uma chave de criptografia. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Especificar o provedor de origem. | Em Provedor de origem, escolha GitHub (Versão 2). | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Selecione o repositório e a ramificação do código. | Se você não estiver conectado, forneça os detalhes da conexão à qual se conectar GitHub e selecione o nome do repositório e o nome da ramificação. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Altere as opções de detecção. | selecione Iniciar o pipeline na alteração do código-fonte e vá para a próxima página. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Selecione um provedor de compilação. | Em Provedor de compilação AWS CodeBuild, escolha e forneça os detalhes da AWS região e do nome do projeto para o projeto de construção. Em Tipo de compilação, selecione Compilação única. | Desenvolvedor de aplicativos, administrador AWS de sistemas |
Selecione um provedor de implantação. | Em Deploy provider, escolha AmazonECS. Selecione o nome do cluster, o nome do serviço, o arquivo de definições de imagens, se houver, e um valor de tempo limite de implantação, se necessário. Selecione Criar pipeline. | Desenvolvedor de aplicativos, administrador AWS de sistemas |