Skip to content

🔄 Entendiendo la Configuración del Pipeline de CI/CD

Ahora que hemos configurado la conexión con GitHub y desplegado nuestra plantilla de CloudFormation, entendamos cómo está configurado nuestro pipeline de CI/CD para integrar Docker Build Cloud, Docker Scout y el despliegue en Amazon ECS.

📋 Descripción General de la Arquitectura del Pipeline

Nuestra plantilla de CloudFormation crea un pipeline de CI/CD completo con estos componentes clave:

Arquitectura del Pipeline

  1. Etapa de Fuente (Source): Obtiene el código de tu repositorio de GitHub.
  2. Etapa de Construcción (Build): Usa Docker Build Cloud para una construcción eficiente de imágenes de contenedor.
  3. Etapa de Escaneo de Seguridad (Security Scan): Integra Docker Scout para la evaluación de vulnerabilidades.
  4. Etapa de Despliegue (Deploy): Despliega la aplicación en Amazon ECS.

🔍 Componentes Clave en la Plantilla de CloudFormation

1️⃣ Integración con Docker Build Cloud

La plantilla incluye un proyecto de CodeBuild configurado específicamente para usar Docker Build Cloud:

yaml
# Proyecto CodeBuild para la construcción Docker
DockerBuildProject:
  Type: AWS::CodeBuild::Project
  Properties:
    Name: docker-build-cloud-project
    Environment:
      Type: ARM_CONTAINER
      ComputeType: BUILD_GENERAL1_SMALL
      Image: aws/codebuild/amazonlinux2-aarch64-standard:2.0
      PrivilegedMode: true
    Source:
      Type: CODEPIPELINE
      BuildSpec: |
        version: 0.2
        env:
          secrets-manager:
            DOCKER_USERNAME: "dockerhub-credentials:DOCKER_USERNAME"
            DOCKER_TOKEN: "dockerhub-credentials:DOCKER_TOKEN"
        phases:
          pre_build:
            commands:
              - echo Iniciando sesión en Docker Hub...
              - echo $DOCKER_TOKEN | docker login -u $DOCKER_USERNAME --password-stdin
              - # Configuración de Docker Buildx...
          build:
            commands:
              - echo Construyendo imagen con BuildKit...
              - docker buildx build --platform linux/arm64 -t $DOCKER_USERNAME/rent-a-room:latest --push .
          post_build:
            commands:
              - echo Generando imagedefinitions.json...
              - echo '[{"name":"rent-a-room","imageUri":"'$DOCKER_USERNAME/rent-a-room:$IMAGE_TAG'"}]' > imagedefinitions.json

🔹 Elementos Clave de la Configuración

ElementoDescripciónBeneficio
ARM_CONTAINEREntorno de construcción basado en ARM.Optimizado para imágenes ARM64.
PrivilegedMode: trueHabilita capacidades de Docker-in-Docker.Requerido para Docker Buildx.
--platform linux/arm64Especifica la arquitectura de destino.Asegura compatibilidad con instancias ECS basadas en ARM.
--pushEnvía directamente al registro.Agiliza el proceso de construcción y envío.

2️⃣ Integración de Seguridad con Docker Scout

El proyecto de CodeBuild dedicado al escaneo de seguridad:

yaml
# Proyecto CodeBuild para Escaneo con Docker Scout
DockerScoutProject:
  Type: AWS::CodeBuild::Project
  Properties:
    BuildSpec: |
      phases:
        build:
          commands:
            - echo Ejecutando escaneo de seguridad con Docker Scout...
            - >
              docker run --rm
              -e DOCKER_SCOUT_HUB_USER=$DOCKER_USERNAME
              -e DOCKER_SCOUT_HUB_PASSWORD=$DOCKER_TOKEN
              docker/scout-cli cves $DOCKER_USERNAME/rent-a-room:$IMAGE_TAG --exit-code --only-severity critical,high

🔹 Elementos Clave de Docker Scout

ElementoDescripciónBeneficio
docker/scout-cliUsa la CLI de Scout en un contenedor.No requiere instalación por separado.
--exit-code --only-severity critical,highImplementa compuertas de seguridad (security gates).Falla la construcción si se hallan vulnerabilidades críticas o altas.
recommendationsSugerencias de mejora.Proporciona acciones concretas de seguridad.

3️⃣ Estructura Completa del Pipeline

EtapaPropósitoComponentes Clave
SourceObtener código de GitHub.Conexión CodeStar, Repo GitHub.
BuildConstruir imagen Docker.Docker Build Cloud, Buildx, Opt. ARM64.
Security ScanEscanear vulnerabilidades.Docker Scout, Security gates, Recomendaciones.
DeployDesplegar en ECS.Amazon ECS, Despliegue de contenedor.

💡 Integración de Tecnologías Docker

  1. Docker Build Cloud con Buildx: Optimiza el rendimiento con construcción distribuida y soporte para ARM64 (compatible con AWS Graviton).
  2. Docker Scout: Previene el despliegue de imágenes vulnerables y genera informes detallados.
  3. Docker Hub: Almacena imágenes de forma segura y permite el despliegue fluido a Amazon ECS.

🔍 Soporte Multi-Arquitectura

Aunque nuestro pipeline está optimizado para ARM64, Docker Build Cloud permite construir para múltiples arquitecturas simultáneamente:

bash
docker buildx build --platform linux/amd64,linux/arm64 -t usuario/app:latest --push .

Esto permite:

  • Soporte AWS Graviton: Mejor relación precio-rendimiento.
  • Flexibilidad: Ejecución en cualquier tipo de instancia ECS.
  • Futuro: Compatibilidad asegurada ante la diversificación de arquitecturas de CPU.

🚀 Próximos Pasos

Ahora que entiendes la configuración, completemos el workshop:

  1. Realizando un cambio en la aplicación.
  2. Disparando el pipeline.
  3. Observando el proceso de construcción, escaneo y despliegue.

¡En la siguiente sección, realizaremos un cambio personalizado y veremos nuestro pipeline en acción!

Released under the GPL-3.0 License.