Implemente um pipeline de CI/CD para microsserviços Java na Amazon ECS - Recomendações da AWS

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

Arquitetura de origem para implantar um pipeline de CI/CD para microsserviços Java na Amazon ECS

Pilha de tecnologias de destino

  • Amazon ECR

  • Amazon ECS

  • AWS Fargate

  • AWS CodePipeline

  • AWS CodeBuild

Arquitetura de destino

Arquitetura de destino para implantar um pipeline de CI/CD para microsserviços Java na Amazon ECS

Automação e escala

CodeBuild buildspec.ymlarquivo:

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

TarefaDescriçãoHabilidades necessárias

Crie um projeto de CodeBuild construção.

No AWS CodeBuild console, crie um projeto de compilação e especifique seu nome.

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:

  • Amazon Linux 2 (Observação: o Amazon Linux 2 está chegando ao fim do suporte. Para obter mais informações, consulte o Amazon Linux 2 FAQs.)

  • Runtime: Padrão

  • Imagem versão 1.0

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:

  • AWS_ DEFAULT _ REGION para a AWS região padrão

  • AWS_ ACCOUNT _ID para o número da conta do usuário

  • IMAGE_ REPO para o repositório ECR privado da Amazon

  • BUILD_ TAG para a versão da compilação (a versão mais recente é o valor dessa variável)

  • DOCKER_ CONTAINER _ NAME para o nome do contêiner na tarefa

Essas variáveis são espaços reservados no arquivo buildspec.yml e serão substituídas por seus respectivos valores.

Desenvolvedor de aplicativos, administrador AWS de sistemas

Crie um arquivo buildspec.

Você pode criar um arquivo buildspec.yml no mesmo local de pom.xml e adicionar a configuração fornecida nesse padrão ou usar o editor buildspec on-line e adicionar a configuração. Configure as variáveis ambientais com os valores apropriados seguindo as etapas fornecidas.

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
TarefaDescriçãoHabilidades necessárias

Crie um pipeline.

No AWS CodePipeline console, crie um pipeline e especifique seu nome. Para obter mais informações sobre como criar um pipeline, consulte a AWS CodePipeline documentação.

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

Recursos relacionados