Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cree e inserte imágenes de Docker en Amazon ECR mediante GitHub Actions y Terraform
Creado por Ruchika Modi (AWS)
Resumen
Este patrón explica cómo puede crear GitHub flujos de trabajo reutilizables para crear su Dockerfile y enviar la imagen resultante a Amazon Elastic Container Registry (Amazon ECR). El patrón automatiza el proceso de creación de sus Dockerfiles mediante Terraform y Actions. GitHub Esto minimiza la posibilidad de errores humanos y reduce considerablemente el tiempo de implementación.
Una GitHub acción de envío a la rama principal del GitHub repositorio inicia el despliegue de los recursos. El flujo de trabajo crea un repositorio Amazon ECR único en función de la combinación de la GitHub organización y el nombre del repositorio. A continuación, envía la imagen de Dockerfile al repositorio de Amazon ECR.
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa.
Una cuenta activa. GitHub
Instalación y configuración
de Terraform, versión 1 o posterior. Un bucket de Amazon Simple Storage Service (Amazon S3) para el backend de Terraform.
Una tabla de Amazon DynamoDB
para el bloqueo y la coherencia del estado de Terraform. La tabla debe tener una clave de partición denominada LockID
con un tipo de.String
Si esto no está configurado, se deshabilitará el bloqueo por estado.Un rol de AWS Identity and Access Management (IAM) que tiene permisos para configurar el backend de Amazon S3 para Terraform. Para obtener instrucciones de configuración, consulte la documentación de Terraform.
Limitaciones
Este código reutilizable se ha probado solo con GitHub Actions.
Arquitectura
Pila de tecnología de destino
Repositorio de Amazon ECR
GitHub Acciones
Terraform
Arquitectura de destino

En el siguiente diagrama se ilustra lo siguiente:
1. Un usuario añade plantillas de Dockerfile y Terraform al repositorio. GitHub
2. Estas adiciones inician un GitHub flujo de trabajo de acciones.
3. El flujo de trabajo comprueba si existe un repositorio de Amazon ECR. De lo contrario, crea el repositorio en función de la GitHub organización y el nombre del repositorio.
4. El flujo de trabajo crea el Dockerfile y envía la imagen al repositorio de Amazon ECR.
Herramientas
Servicios de Amazon
Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de contenedores gestionado que es seguro, escalable y fiable.
Otras herramientas
GitHub Actions
está integrado en la GitHub plataforma para ayudarlo a crear, compartir y ejecutar flujos de trabajo en sus GitHub repositorios. Puedes usar GitHub Actions para automatizar tareas como crear, probar e implementar tu código. Terraform
es una herramienta de código abierto de infraestructura como código (IaC) HashiCorp que le ayuda a crear y administrar infraestructuras locales y en la nube.
Repositorio de código
El código de este patrón está disponible en el repositorio GitHub Docker ECR
Al crear GitHub acciones, los archivos de flujo de trabajo de Docker se guardan en la
/.github/workflows/
carpeta de este repositorio. El flujo de trabajo de esta solución se encuentra en el archivo workflow.yaml. La
e2e-test
carpeta proporciona un ejemplo de Dockerfile para consultarlo y probarlo.
Prácticas recomendadas
Para conocer las mejores prácticas para escribir Dockerfiles, consulta la documentación de Docker.
Utilice un punto de enlace de VPC para Amazon ECR. Los puntos de enlace de VPC funcionan con AWS PrivateLink, una tecnología que le permite acceder de forma privada a Amazon ECR a APIs través de direcciones IP privadas. Para las tareas de Amazon ECS que utilizan el tipo de lanzamiento Fargate, el punto de enlace de VPC permite que la tarea extraiga imágenes privadas de Amazon ECR sin asignar una dirección IP pública a la tarea.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Configure OpenID Connect. | Cree un proveedor de OpenID Connect (OIDC). Utilizará el proveedor en la política de confianza para el rol de IAM utilizado en esta acción. Para obtener instrucciones, consulte Configuración de OpenID Connect en Amazon Web Services | Administrador de AWS DevOps, AWS general |
Clona el GitHub repositorio. | Clona el repositorio de GitHub Docker ECR Actions Workflow
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Personalice el evento que inicia el flujo de trabajo de Docker. | El flujo de trabajo de esta solución está en workflow.yaml. | DevOps ingeniero |
Personalice el flujo de trabajo. | El archivo workflow.yaml
| DevOps ingeniero |
Implemente las plantillas de Terraform. | El flujo de trabajo implementa automáticamente las plantillas de Terraform que crean el repositorio de Amazon ECR, en función del GitHub evento que haya configurado. Estas plantillas están disponibles como | AWS DevOps, DevOps ingeniero |
Solución de problemas
Problema | Solución |
---|---|
Problemas o errores al configurar Amazon S3 y DynamoDB como el backend remoto de Terraform. | Siga las instrucciones de la documentación de Terraform |
No se pudo ejecutar ni iniciar el flujo de trabajo con el evento. | El flujo de trabajo que está configurado para implementarse desde el |
Recursos relacionados
Reutilizar los flujos de trabajo
(GitHub documentación)