Tutorial de configuración de despliegue continuo en GCP con Cloud Build

·

·

Tutorial de configuración de despliegue continuo en GCP con Cloud Build

En el ecosistema actual del desarrollo de software, la entrega continua y el despliegue continuo son prácticas fundamentales para acelerar la puesta en producción de funcionalidades, reducir errores humanos y garantizar la calidad. Google Cloud Platform (GCP) ofrece Cloud Build como servicio nativo para orquestar pipelines de CI/CD, integrándose de forma transparente con repositorios de código, contenedores y servicios de cómputo.

1. Visión general y arquitectura

El flujo de trabajo típico engloba:

  • Repositorio de código (Cloud Source Repositories, GitHub, GitLab).
  • Servicio Cloud Build para orquestar compilación, test y empaquetado.
  • Artifact Registry o Container Registry para almacenar imágenes.
  • Plataforma de destino (Cloud Run, GKE o App Engine) para desplegar la aplicación.
  • Triggers en Cloud Build que reaccionan a cambios en ramas o tags.

Diagrama simplificado:

Fuente CI/CD Artifact Despliegue
GitHub / CSR Cloud Build Artifact Registry Cloud Run / GKE

2. Requisitos previos

  • Cuenta en Google Cloud con permisos de Owner o rol personalizado con acceso a Cloud Build, IAM, Artifact Registry y al servicio de despliegue.
  • SDK de gcloud instalado y autenticado (gcloud init).
  • Repositorio de código en GitHub o Cloud Source Repositories.
  • Proyecto de GCP creado y seleccionado (gcloud config set project [PROJECT_ID]).

3. Habilitar APIs y configurar IAM

  1. Habilitar APIs:
    gcloud services enable 
      cloudbuild.googleapis.com 
      artifactregistry.googleapis.com 
      run.googleapis.com
  2. Crear cuenta de servicio para Cloud Build (opcional, usa la predeterminada si es suficiente):
    gcloud iam service-accounts create cb-builder 
      --display-name=Cloud Build Service Account
  3. Asignar roles necesarios:
    • roles/cloudbuild.builds.editor
    • roles/artifactregistry.writer o roles/storage.admin si usas Container Registry.
    • Roles de despliegue: roles/run.admin para Cloud Run, roles/container.developer para GKE.

4. Conectar el repositorio y crear un trigger

En la Console de GCP, navega a Cloud Build gt Triggers y:

  1. Selecciona origen: GitHub o Cloud Source Repositories.
  2. Autoriza la conexión y elige el repositorio y la rama (por ejemplo main).
  3. Configura filtro:

    • Evento: Push to a branch.
    • Branch (regex): ^main o ^release-..
  4. Define el archivo de build: cloudbuild.yaml.
  5. Guarda el trigger.

5. Archivo cloudbuild.yaml

Este archivo orquesta pasos secuenciales. Un ejemplo para construir imagen Docker y despliegue en Cloud Run:

steps:
- name: gcr.io/cloud-builders/docker
  args: [build, -t, us-central1-docker.pkg.dev/PROJECT_ID/my-repo/my-app:SHORT_SHA, .]
- name: gcr.io/cloud-builders/docker
  args: [push, us-central1-docker.pkg.dev/PROJECT_ID/my-repo/my-app:SHORT_SHA]
- name: gcr.io/google.com/cloudsdktool/cloud-sdk
  entrypoint: bash
  args:
    - -c
    - 
      gcloud run deploy my-app 
        --image=us-central1-docker.pkg.dev/PROJECT_ID/my-repo/my-app:SHORT_SHA 
        --region=us-central1 
        --platform=managed 
        --quiet
substitutions:
  _REGION: us-central1
images:
- us-central1-docker.pkg.dev/PROJECT_ID/my-repo/my-app:SHORT_SHA
timeout: 1200s
  • steps: lista de pasos a ejecutar.
  • substitutions: variables personalizadas.
  • images: para notificar a GCB de los artefactos creados.
  • timeout: tiempo máximo de ejecución.

6. Configurar Artifact Registry

  1. Crear repositorio:
    gcloud artifacts repositories create my-repo 
      --repository-format=docker 
      --location=us-central1 
      --description=Repositorio de Docker
  2. Configurar permisos a la cuenta de servicio de Cloud Build:
    gcloud artifacts repositories add-iam-policy-binding my-repo 
      --location=us-central1 
      --member=serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com 
      --role=roles/artifactregistry.writer

7. Despliegue y pruebas

Cada vez que se haga push a main, el trigger disparará:

  1. Construcción de la imagen.
  2. Push a Artifact Registry.
  3. Despliegue automático en Cloud Run.

Para ver logs y estado, en la Console ve a Cloud Build gt History o ejecuta:

gcloud builds list --filter=status=WORKING

8. Buenas prácticas y recomendaciones

  • Pruebas automatizadas: integra un paso de testing (npm test, pytest, etc.) antes del build de producción.
  • Escaneo de seguridad: utiliza Container Analysis o Binary Authorization.
  • Entornos separados: usa proyectos o repositorios distintos para staging y producción.
  • Evaluaciones manuales: añade aprobaciones antes de despliegues críticos.
  • Variables secretas: gestiona credenciales con Secret Manager.

9. Coste y monitorización

Cloud Build ofrece 2.000 minutos gratuitos mensuales. Más allá, se cobra por minuto de build. Para monitorizar:

  • Stackdriver Logging para logs de builds y despliegues.
  • Stackdriver Monitoring para métricas de Cloud Run o GKE.
  • Alertas en caso de fallos.

Recursos y enlaces útiles

Conclusión

Implementar un pipeline de despliegue continuo en GCP con Cloud Build permite automatizar tareas críticas, reducir errores y acelerar la entrega de valor. Con una configuración adecuada —repositorios, triggers, cloudbuild.yaml y políticas de seguridad— se logra un flujo robusto y eficiente. Explora las posibilidades de integración con tests, análisis de seguridad y distintos entornos para evolucionar tu estrategia de DevOps.



Leave a Reply

Your email address will not be published. Required fields are marked *