Implementa en Cloud Run con Cloud Build

En esta página, se explica cómo implementar automáticamente los servicios de Cloud Run con Cloud Build. Si eres nuevo en Cloud Build, primero lee 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 servidores. Con Cloud Build, puedes implementar imágenes desde Artifact Registry en Cloud Run. Puedes implementar una imagen existente, compilar e implementar una imagen, o automatizar la implementación.

Antes de comenzar

  • 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 necesarios de Identity and Access Management

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

    Ir a Permisos

  2. Para la cuenta de servicio de Cloud Build especificada o la cuenta de servicio de Cloud Build predeterminada, establece el estado de los siguientes roles como Habilitado:

    • Administrador de Cloud Run (roles/run.admin): Permite que Cloud Build implemente servicios nuevos en Cloud Run.
    • Administrador de almacenamiento (roles/storage.admin) | Permite leer y escribir desde 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.

Compila e implementa una imagen

Cloud Build te permite compilar una imagen, almacenarla en Artifact Registry y, luego, implementarla en Cloud Run.

Para compilar e implementar una imagen, haz lo siguiente:

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

  2. En el archivo de configuración de compilación, agrega pasos de compilación docker para compilar la imagen y enviarla a Artifact Registry y, luego, agrega un paso de compilación de gcloud para invocar el comando gcloud run deploy a fin de implementar 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'
    

    Aquí:

    • REPOSITORY es el nombre del repositorio de Artifact Registry desde el que implementas tu 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 estás implementando.
    • IMAGE es el nombre de tu imagen en Artifact Registry.
  3. Navega al directorio raíz de tu proyecto y ejecuta el siguiente comando, en el que LOCATION es una de las regiones de compilación admitidas para ejecutar la compilación:

     gcloud builds submit --region=LOCATION
    

Una vez que la compilación se completa de manera correcta, se muestra un mensaje de éxito, además de la URL del servicio implementado.

Implementación continua

Puedes automatizar la implementación de tu software en Cloud Run si creas activadores de Cloud Build. Puedes configurar los activadores para compilar y, luego, implementar imágenes cada vez que actualices el código fuente.

Para automatizar tu implementación, haz lo siguiente:

  1. En la raíz del repositorio, agrega un archivo de configuración llamado cloudbuild.yaml con los pasos necesarios para compilar la imagen y enviarla a Artifact Registry y, luego, invoca 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'
    

    Aquí:

    • REPOSITORY es el nombre del repositorio de Artifact Registry desde el que implementas tu 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 estás implementando.
    • IMAGE es el nombre de tu imagen en Artifact Registry.

    Cloud Build propaga 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 generado en el paso anterior:

    1. Abrir la página Activadores:

      Ir a la página Activadores

    2. Haz clic en Crear activador.

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

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

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

    6. En Fuente, selecciona el repositorio y el nombre de la rama o de la etiqueta que iniciará el activador. Para obtener más información sobre cómo especificar qué ramas se deben compilar de manera automática, consulta Crea 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, luego, implementará el servicio en Cloud Run.

Para obtener más información sobre cómo crear activadores de Cloud Build, consulta Crea y administra activadores de compilación.

Ejemplos de código

Estos son algunos repositorios de muestra. Cada uno contiene una aplicación de muestra y un archivo de configuración de compilación para implementar la aplicación en Cloud Run:

  • deploy-prebuilt: Un ejemplo de código con el que se muestra cómo implementar una imagen ya compilada en Cloud Run.
  • run-example-builddeploy: Un ejemplo de código con el que se muestra cómo compilar y, también, implementar una imagen en Cloud Run.

¿Qué sigue?