Desplegar en Cloud Run con Cloud Build

En esta página se explica cómo desplegar automáticamente servicios de Cloud Run con Cloud Build. Si es la primera vez que usas Cloud Build, consulta primero las guías de inicio rápido y la descripción general de la configuración de compilación.

Cloud Run te permite ejecutar imágenes sin estado en un entorno sin servidor. Con Cloud Build, puedes desplegar imágenes de Artifact Registry en Cloud Run. Puedes implementar una imagen que ya tengas, crear e implementar una imagen o automatizar la implementación.

Antes de empezar

  • Enable the Cloud Build, Cloud Run, Artifact Registry, and Resource Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

Permisos de Gestión de Identidades y Accesos necesarios

  1. En la Google Cloud consola, ve a la página Permisos de Cloud Build:

    Ve a Permisos.

  2. En la cuenta de servicio de Cloud Build especificada o en la cuenta de servicio de Cloud Build predeterminada, asigna el estado Habilitado a los siguientes roles:

    • Administrador de Cloud Run (roles/run.admin): permite a Cloud Build desplegar nuevos servicios en Cloud Run.
    • Administrador de almacenamiento (roles/storage.admin): permite leer y escribir en Cloud Storage.
    • Escritor de Artifact Registry (roles/artifactregistry.writer): permite extraer imágenes de Artifact Registry y escribir en él.
    • Escritor de registros (roles/logging.logWriter): permite escribir entradas de registro en Cloud Logging.
    • Editor de Cloud Build (roles/cloudbuild.builds.editor): permite que tu cuenta de servicio ejecute compilaciones.

Crear y desplegar una imagen

Cloud Build te permite compilar una imagen, almacenarla en Artifact Registry y, a continuación, desplegarla en Cloud Run.

Para crear y desplegar una imagen, sigue estos pasos:

  1. En el directorio raíz de tu proyecto, crea un archivo de configuración llamado cloudbuild.yaml.

  2. En el archivo de configuración de compilación, añade docker pasos de compilación para crear la imagen y enviarla a Artifact Registry. A continuación, añade un gcloud paso de compilación para invocar el comando gcloud run deploy y desplegar la imagen en Cloud Run:

    steps:
    # Build the image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.']
    # Push the image to Artifact Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE']
    # Deploy image to Cloud Run
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION']
    images:
    - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
    

    Donde:

    • REPOSITORY es el nombre del repositorio de Artifact Registry desde el que implementas la imagen.
    • LOCATION es la ubicación de tu repositorio de Artifact Registry, como us-east1.
    • PROJECT_ID es el ID del proyecto Google Cloud en el que se almacena la imagen.
    • SERVICE_NAME es el nombre del servicio de Cloud Run.
    • SERVICE_REGION es la región del servicio de Cloud Run que vas a desplegar.
    • IMAGE es el nombre de la imagen en Artifact Registry.
  3. Ve al directorio raíz de tu proyecto y ejecuta el siguiente comando, donde LOCATION es una de las regiones de compilación admitidas para ejecutar la compilación:

     gcloud builds submit --region=LOCATION
    

Una vez completado el proceso, se muestra un mensaje de éxito junto con la URL del servicio implementado.

Despliegue continuo

Puedes automatizar el despliegue de tu software en Cloud Run creando activadores de Cloud Build. Puedes configurar tus activadores para compilar y desplegar imágenes cada vez que actualices tu código fuente.

Para automatizar el despliegue, sigue estos pasos:

  1. En la raíz de tu repositorio, añade un archivo de configuración llamado cloudbuild.yaml con los pasos para crear la imagen, enviarla a Artifact Registry y, a continuación, invocar el comando gcloud run deploy:

    steps:
    # Build the image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.']
    # Push the image to Artifact Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA']
    # Deploy image to Cloud Run
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: 
        - 'run'
        - 'deploy'
        - 'SERVICE_NAME'
        - '--image'
        - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
        - '--region'
        - 'SERVICE_REGION'
    images:
    - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
    

    Donde:

    • REPOSITORY es el nombre del repositorio de Artifact Registry desde el que implementas la imagen.
    • LOCATION es la ubicación de tu repositorio de Artifact Registry, como us-east1.
    • PROJECT_ID es el ID del proyecto Google Cloud en el que se almacena la imagen.
    • SERVICE_NAME es el nombre del servicio de Cloud Run.
    • SERVICE_REGION es la región del servicio de Cloud Run que vas a desplegar.
    • IMAGE es el nombre de la imagen en Artifact Registry.

    Cloud Build rellena la variable de sustitución $COMMIT_SHA cuando se activa desde un repositorio de Git.

  2. Crea un activador de compilación con el archivo de configuración que has creado en el paso anterior:

    1. Abre la página Activadores:

      Ir a la página Activadores

    2. Haz clic en Crear activador.

    3. En el campo Nombre, introduce un nombre para el activador.

    4. En Región, selecciona la región de tu activador.

    5. En Evento, selecciona el evento del repositorio para iniciar el activador.

    6. En Source (Origen), selecciona tu repositorio y el nombre de la rama o etiqueta que activará el activador. Para obtener más información sobre cómo especificar qué ramas se deben compilar automáticamente, consulta Crear un activador de compilación.

    7. En Configuración, selecciona Archivo de configuración de Cloud Build (YAML o JSON).

    8. En el campo Ubicación del archivo de configuración de Cloud Build, escribe cloudbuild.yaml después de /.

    9. Haz clic en Crear para guardar el activador de compilación.

    Ahora, cuando envíes código nuevo a tu repositorio, Cloud Build invocará una compilación y desplegará el servicio en Cloud Run.

Para obtener más información sobre cómo crear activadores de Cloud Build, consulta el artículo Crear y gestionar activadores de compilación.

Ejemplos de código

Aquí tienes algunos repositorios de ejemplo, cada uno de los cuales contiene una aplicación de ejemplo y un archivo de configuración de compilación para desplegar la aplicación en Cloud Run:

  • deploy-prebuilt: un ejemplo de código que muestra cómo desplegar una imagen prediseñada en Cloud Run.
  • run-example-builddeploy: un ejemplo de código que muestra cómo crear y desplegar una imagen en Cloud Run.

Siguientes pasos