Crea e invia immagini Docker ad Amazon ECR utilizzando GitHub Actions e Terraform - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea e invia immagini Docker ad Amazon ECR utilizzando GitHub Actions e Terraform

Creato da Ruchika Modi (AWS)

Repository di codice: docker-ecr-actions-workflow

Ambiente: produzione

Tecnologie: DevOps; Contenitori e microservizi; Infrastruttura

Carico di lavoro: tutti gli altri carichi di lavoro

Servizi AWS: Amazon ECR

Riepilogo

Questo modello spiega come creare GitHub flussi di lavoro riutilizzabili per creare il tuo Dockerfile e inviare l'immagine risultante ad Amazon Elastic Container Registry (Amazon ECR). Il pattern automatizza il processo di creazione dei tuoi Dockerfile utilizzando Terraform e Actions. GitHub Ciò riduce al minimo la possibilità di errori umani e riduce notevolmente i tempi di implementazione.

Un'azione GitHub push sul ramo principale del GitHub repository avvia la distribuzione delle risorse. Il flusso di lavoro crea un repository Amazon ECR unico basato sulla combinazione del nome dell' GitHub organizzazione e del repository. Quindi invia l'immagine Dockerfile al repository Amazon ECR.

Prerequisiti e limitazioni

Prerequisiti

Limitazioni

Questo codice riutilizzabile è stato testato solo con GitHub Actions.

Architettura

Stack tecnologico Target

  • Repository Amazon ECR

  • GitHub Azioni

  • Terraform

Architettura Target

Flusso di lavoro per creare GitHub flussi di lavoro riutilizzabili per creare Dockerfile e inviare immagini ad Amazon ECR.

Il diagramma illustra quanto segue:

1. Un utente aggiunge un modello Dockerfile e Terraform al repository. GitHub

2. Queste aggiunte avviano un flusso di lavoro Actions. GitHub

3. Il flusso di lavoro verifica se esiste un repository Amazon ECR. In caso contrario, crea il repository in base all' GitHub organizzazione e al nome del repository.

4. Il flusso di lavoro crea il Dockerfile e invia l'immagine al repository Amazon ECR.

Strumenti

Servizi Amazon

Altri strumenti

  • GitHub Actions è integrato nella GitHub piattaforma per aiutarti a creare, condividere ed eseguire flussi di lavoro all'interno dei tuoi GitHub repository. Puoi utilizzare GitHub Actions per automatizzare attività come la creazione, il test e la distribuzione del codice.

  • Terraform è uno strumento open source di infrastruttura as code (IaC) HashiCorp che ti aiuta a creare e gestire infrastrutture cloud e locali.

Archivio di codici

Il codice per questo pattern è disponibile nel repository GitHub Docker ECR Actions Workflow.

  • Quando crei GitHub Actions, i file del flusso di lavoro Docker vengono salvati nella /.github/workflows/ cartella di questo repository. Il flusso di lavoro per questa soluzione si trova nel file workflow.yaml.

  • La e2e-test cartella fornisce un Dockerfile di esempio per riferimento e test.

Best practice

Epiche

AttivitàDescrizioneCompetenze richieste

Configura OpenID Connect.

Crea un provider OpenID Connect (OIDC). Utilizzerai il provider nella policy di fiducia per il ruolo IAM utilizzato in questa azione. Per istruzioni, consulta Configurazione di OpenID Connect in Amazon Web Services GitHub nella documentazione.

Amministratore AWS, AWS DevOps, AWS generale

Clona il GitHub repository.

Clona il repository GitHub Docker ECR Actions Workflow nella tua cartella locale:

$git clone https://github.com/aws-samples/docker-ecr-actions-workflow
DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Personalizza l'evento che avvia il flusso di lavoro Docker.

Il flusso di lavoro per questa soluzione è in workflow.yaml. Questo script è attualmente configurato per distribuire risorse quando riceve l'evento. workflow_dispatch È possibile personalizzare questa configurazione modificando l'evento in un altro flusso di lavoro principale workflow_call e richiamando il flusso di lavoro da un altro flusso di lavoro principale.

DevOps ingegnere

Personalizza il flusso di lavoro.

Il file workflow.yaml è configurato per creare un flusso di lavoro dinamico e riutilizzabile. GitHub Puoi modificare questo file per personalizzare la configurazione predefinita oppure puoi passare i valori di input dalla console GitHub Actions se utilizzi l'evento per avviare la workflow_dispatch distribuzione manualmente.

DevOps ingegnere

Implementa i modelli Terraform.

Il flusso di lavoro distribuisce automaticamente i modelli Terraform che creano il repository Amazon ECR, in base all' GitHub evento configurato. Questi modelli sono disponibili come .tf file nella radice del repository Github.

AWS DevOps, DevOps ingegnere

Risoluzione dei problemi

ProblemaSoluzione

Problemi o errori durante la configurazione di Amazon S3 e DynamoDB come backend remoto Terraform.

Segui le istruzioni nella documentazione di Terraform per configurare le autorizzazioni richieste sulle risorse Amazon S3 e DynamoDB per la configurazione del backend remoto.

Impossibile eseguire o avviare il flusso di lavoro con l'evento. workflow_dispatch

Il flusso di lavoro configurato per l'implementazione dall'workflow_dispatchevento funzionerà solo se è configurato anche nel ramo principale.

Risorse correlate