View a markdown version of this page

Crie e envie imagens do Docker para o Amazon ECR usando GitHub Actions e Terraform - 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á.

Crie e envie imagens do Docker para o Amazon ECR usando GitHub Actions e Terraform

Ruchika Modi, Amazon Web Services

Resumo

Esse padrão explica como você pode criar GitHub fluxos de trabalho reutilizáveis para criar seu Dockerfile e enviar a imagem resultante para o Amazon Elastic Container Registry (Amazon ECR). O padrão automatiza o processo de criação de seus Dockerfiles usando o Terraform e o Actions. GitHub Isso minimiza a possibilidade de erros humanos e reduz consideravelmente o tempo de implantação.

Uma ação GitHub push para a ramificação principal do seu GitHub repositório inicia a implantação dos recursos. O fluxo de trabalho cria um repositório Amazon ECR exclusivo com base na combinação da GitHub organização e do nome do repositório. Em seguida, o fluxo envia a imagem do Dockerfile para o repositório do Amazon ECR.

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta AWS ativa

  • Uma GitHub conta ativa.

  • Um GitHub repositório.

  • O Terraform, na versão 1 ou em versões posteriores, instalado e configurado.

  • Um bucket do Amazon Simple Storage Service (Amazon S3) para o backend do Terraform.

  • Uma tabela do Amazon DynamoDB para controle de bloqueio e consistência do estado do Terraform. A tabela deve ter uma chave de partição chamada LockID, do tipo String. Se isso não for configurado, o bloqueio de estado será desabilitado.

  • Um perfil do AWS Identity and Access Management (IAM) com permissões para configurar o backend do Amazon S3 para o Terraform. Para obter instruções de configuração, consulte a documentação do Terraform.

Limitações

Esse código reutilizável foi testado somente com GitHub Actions.

Arquitetura

Pilha de tecnologias de destino

  • Repositório do Amazon ECR

  • GitHub Ações

  • Terraform

Arquitetura de destino

Fluxo de trabalho para criar GitHub fluxos de trabalho reutilizáveis para criar Dockerfile e enviar imagens para o Amazon ECR.

O diagrama ilustra o seguinte:

1. Um usuário adiciona modelos do Dockerfile e do Terraform ao repositório. GitHub

2. Essas adições iniciam um fluxo de trabalho de GitHub ações.

3. O fluxo de trabalho verifica a existência de um repositório do Amazon ECR. Caso contrário, ele cria o repositório com base na GitHub organização e no nome do repositório.

4. O fluxo de trabalho cria o Dockerfile e envia a imagem para o repositório do Amazon ECR.

Ferramentas

Serviço da Amazon

Outras ferramentas

  • GitHub O Actions é integrado à GitHub plataforma para ajudar você a criar, compartilhar e executar fluxos de trabalho em seus GitHub repositórios. Você pode usar o GitHub Actions para automatizar tarefas como criar, testar e implantar seu código.

  • O Terraform é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar a infraestrutura na nuvem e no local.

Repositório de código

O código desse padrão está disponível no repositório GitHub Docker ECR Actions Workflow.

  • Quando você cria GitHub ações, os arquivos do fluxo de trabalho do Docker são salvos na /.github/workflows/ pasta desse repositório. O fluxo de trabalho desta solução encontra-se no arquivo workflow.yaml.

  • A pasta e2e-test disponibiliza um Dockerfile de amostra para referência e testes.

Práticas recomendadas

  • Para obter as práticas recomendadas para a escrita de Dockerfiles, consulte a documentação do Docker.

  • Use um endpoint da VPC para o Amazon ECR. Os VPC endpoints são desenvolvidos pela AWS PrivateLink, uma tecnologia que permite que você acesse o Amazon APIs ECR de forma privada por meio de endereços IP privados. Para as tarefas do Amazon ECS que usam o tipo de execução do Fargate, o endpoint da VPC permite que a tarefa realize a extração de imagens privadas do Amazon ECR sem atribuir um endereço IP público à tarefa.

Épicos

TarefaDescriptionHabilidades necessárias

Configure o OpenID Connect.

Crie um provedor de OpenID Connect (OIDC) Você usará o provedor na política de confiança para o perfil do IAM usado nesta ação. Para obter instruções, consulte Configuração do OpenID Connect na Amazon Web Services GitHub na documentação.

Administrador da AWS, AWS DevOps, AWS geral

Clone o GitHub repositório.

Clone o repositório GitHub Docker ECR Actions Workflow em sua pasta local:

$git clone https://github.com/aws-samples/docker-ecr-actions-workflow
DevOps engenheiro
TarefaDescriptionHabilidades necessárias

Personalize o evento que inicia o fluxo de trabalho do Docker.

O fluxo de trabalho desta solução encontra-se em workflow.yaml. No momento, este script está configurado para implantar recursos quando recebe o evento workflow_dispatch. É possível personalizar esta configuração alterando o evento para workflow_call e chamando o fluxo de trabalho usando outro fluxo de trabalho principal.

DevOps engenheiro

Personalize o fluxo de trabalho.

O arquivo workflow.yaml está configurado para criar um fluxo de trabalho dinâmico e reutilizável. GitHub Você pode editar esse arquivo para personalizar a configuração padrão ou pode passar os valores de entrada do console GitHub Actions se estiver usando o workflow_dispatch evento para iniciar a implantação manualmente.

  • Certifique-se de especificar o ID da conta da AWS e a região de destino mais adequados.

  • Crie uma política de ciclo de vida do Amazon ECR (consulte a política de amostra) e atualize o caminho padrão (e2e-test/policy.json) adequadamente.

  • O arquivo do fluxo de trabalho necessita de dois perfis do IAM como parâmetros de entrada:

    • Um perfil do IAM com permissões para configurar o backend do Amazon S3 para o Terraform (consulte a seção Pré-requisitos). Você pode atualizar o nome do perfil padrão workload-assumable-role no arquivo .yaml, conforme necessário.

    • Uma função do IAM que tem permissões de acesso GitHub. Esse perfil também é usado na política do Amazon ECR para restringir as operações realizadas pelo Amazon ECR. Para obter mais informações, consulte o arquivo data.tf.

DevOps engenheiro

Implante os modelos do Terraform.

O fluxo de trabalho implanta automaticamente os modelos do Terraform que criam o repositório Amazon ECR, com base no evento que você configurou. GitHub Estes modelos estão disponíveis como arquivos .tf no diretório raiz do repositório do GitHub.

AWS DevOps, DevOps engenheiro

Solução de problemas

ProblemaSolução

Problemas ou erros ao configurar o Amazon S3 e o DynamoDB como o backend remoto do Terraform.

Siga as instruções apresentadas na documentação do Terraform para configurar as permissões necessárias nos recursos do Amazon S3 e do DynamoDB para a configuração do backend remoto.

Não é possível executar ou iniciar o fluxo de trabalho com o evento workflow_dispatch.

O fluxo de trabalho que está configurado para realizar a implantação usando o evento workflow_dispatch funcionará apenas se o fluxo de trabalho também estiver configurado na ramificação principal.

Recursos relacionados