Desplegar una aplicación en contenedores en Cloud Run con Cloud Build

En esta página se muestra cómo usar Cloud Build para desplegar una aplicación en contenedores en Cloud Run.


Para seguir las instrucciones paso a paso de esta tarea directamente en el editor de Cloud Shell, haz clic en Ayúdame:

Guíame


Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build, Cloud Run, Artifact Registry, and Compute Engine APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  7. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build, Cloud Run, Artifact Registry, and Compute Engine APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  13. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  14. Conceder permisos

    Cloud Build requiere los permisos Administrador de Cloud Run y Usuario de cuenta de servicio de IAM para poder implementar una imagen en Cloud Run.

    1. Abre una ventana de terminal.

    2. Define variables de entorno para almacenar el ID y el número de tu proyecto:

      PROJECT_ID=$(gcloud config list --format='value(core.project)')
      PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
      
    3. Asigna el rol Administrador de Cloud Run a la cuenta de servicio de Cloud Build:

      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role=roles/run.admin
      
    4. Asigna el rol Usuario de objetos de Storage a la cuenta de servicio de Cloud Build:

      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/storage.objectUser"
      
    5. Asigna el rol Usuario de cuenta de servicio de IAM a la cuenta de servicio de Cloud Build para la cuenta de servicio de tiempo de ejecución de Cloud Run:

      gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe $PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser" \
          --project=$PROJECT_ID
      

    Desplegar una imagen prediseñada

    Puedes configurar Cloud Build para desplegar en Cloud Run una imagen prediseñada que esté almacenada en Artifact Registry.

    Para desplegar una imagen prediseñada, sigue estos pasos:

    1. Abre una ventana de terminal (si aún no lo has hecho).

    2. Crea un directorio llamado helloworld y accede a él:

      mkdir helloworld
      cd helloworld
      
    3. Crea un archivo llamado cloudbuild.yaml con el siguiente contenido. Este archivo es el archivo de configuración de Cloud Build. Contiene instrucciones para que Cloud Build despliegue la imagen llamada us-docker.pkg.dev/cloudrun/container/hello en el servicio de Cloud Run llamado cloudrunservice.

      steps:
      - name: 'gcr.io/cloud-builders/gcloud'
        script: |
          gcloud run deploy cloudrunservice --image us-docker.pkg.dev/cloudrun/container/hello --region us-central1 --platform managed --allow-unauthenticated
    4. Para desplegar la imagen, ejecuta el siguiente comando:

      gcloud builds submit --region=us-west2 --config cloudbuild.yaml
      

    Cuando se complete la compilación, verás un resultado similar al siguiente:

    DONE
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    ID                                    CREATE_TIME                DURATION  SOURCE                                                                                            IMAGES  STATUS
    784653b2-f00e-4c4b-9f5f-96a5f115bef4  2020-01-23T14:53:13+00:00  23S       gs://cloudrunqs-project_cloudbuild/source/1579791193.217726-ea20e1c787fb4784b19fb1273d032df2.tgz  -       SUCCESS
    

    Acabas de desplegar la imagen hello en Cloud Run.

    Ejecutar la imagen desplegada

    1. Abre la página Cloud Run en la Google Cloud consola:

      Abre la página de Cloud Run.

    2. Selecciona el proyecto y haz clic en Abrir.

      Verás la página Servicios de Cloud Run.

    3. En la tabla, busca la fila con el nombre cloudrunservice y haz clic en cloudrunservice.

      Se muestra la página Detalles del servicio de cloudrunservice.

    4. Para ejecutar la imagen que has implementado en cloudrunservice, haz clic en la URL:

      Captura de pantalla de la página de detalles del servicio de Cloud Run

    Siguientes pasos