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
Uma conta AWS ativa
Uma GitHub conta ativa.
Terraform versão 1 ou posterior instalado e configurado
. Um bucket do Amazon Simple Storage Service (Amazon S3) para o back-end do Terraform.
Uma tabela do Amazon DynamoDB
para bloqueio e consistência do estado do Terraform. A tabela deve ter uma chave de partição nomeada LockID
com um tipo deString
. Se isso não estiver configurado, o bloqueio de estado será desativado.Uma função do AWS Identity and Access Management (IAM) que tem permissões para configurar o back-end 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 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.](images/pattern-img/c39c110e-cbe5-459e-a0aa-de27e884fb10/images/298e0e16-3054-49b7-8695-db510e0df2df.png)
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
O Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado de registro de contêineres seguro, escalável e confiável.
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
Tarefa | Descrição | Habilidades 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 | Administrador da AWS, AWS DevOps, AWS geral |
Clone o GitHub repositório. | Clone o repositório GitHub Docker ECR Actions Workflow
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Personalize o evento que inicia o fluxo de trabalho do Docker. | O fluxo de trabalho dessa solução está em workflow.yaml | DevOps engenheiro |
Personalize o fluxo de trabalho. | O arquivo workflow.yaml
| 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 | AWS DevOps, DevOps engenheiro |
Solução de problemas
Problema | Soluçã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 |
Não é possível executar ou iniciar o fluxo de trabalho com o | O fluxo de trabalho configurado para implantação a partir do |