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

Criado por Ruchika Modi (AWS)

Repositório de códigos: docker-ecr-actions-workflow

Ambiente: produção

Tecnologias: DevOps; Contêineres e microsserviços; Infraestrutura

Workload: todas as outras workloads

Serviços da AWS: Amazon ECR

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 erro humano e reduz substancialmente 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, ele envia a imagem do Dockerfile para o repositório Amazon ECR.

Pré-requisitos e limitações

Pré-requisitos

Limitações

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

Arquitetura

Pilha de tecnologias de destino

  • Repositório Amazon ECR

  • GitHub Ações

  • Terraforma

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 se existe um repositório 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 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 de código aberto 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 dessa solução está no arquivo workflow.yaml.

  • A e2e-test pasta fornece um exemplo de Dockerfile para referência e teste.

Práticas recomendadas

  • Para ver as melhores práticas para escrever Dockerfiles, consulte a documentação do Docker.

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

Épicos

TarefaDescriçãoHabilidades necessárias

Configure o OpenID Connect.

Crie um provedor OpenID Connect (OIDC). Você usará o provedor na política de confiança para a função do IAM usada nessa 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
TarefaDescriçãoHabilidades necessárias

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

O fluxo de trabalho dessa solução está em workflow.yaml. Atualmente, esse script está configurado para implantar recursos ao receber o workflow_dispatch evento. Você pode personalizar essa configuração alterando o evento para workflow_call e chamando o fluxo de trabalho de 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.

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 Esses modelos estão disponíveis como .tf arquivos na raiz do repositório Github.

AWS DevOps, DevOps engenheiro

Solução de problemas

ProblemaSolução

Problemas ou erros ao configurar o Amazon S3 e o DynamoDB como o back-end remoto do Terraform.

Siga as instruções 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 back-end remoto.

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

O fluxo de trabalho configurado para implantação a partir do workflow_dispatch evento funcionará somente se o fluxo de trabalho também estiver configurado na ramificação principal.

Recursos relacionados