Implementa una aplicación alojada en contenedores en Cloud Run con Cloud Build

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


Para seguir la guía paso a paso sobre esta tarea directamente en el editor de Cloud Shell, haz clic en Guiarme:

GUIARME


Antes de comenzar

  1. Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    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.

    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

  5. Instala Google Cloud CLI.

  6. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    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.

    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

  11. Instala Google Cloud CLI.

  12. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

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

    gcloud init

Otorgar permisos

Cloud Build requiere varios permisos antes de poder implementar una imagen en Cloud Run. Para otorgar esos permisos, haz lo siguiente:

  1. Abre una ventana de terminal.

  2. Configura las variables de entorno para almacenar el ID y el número del proyecto.

    PROJECT_ID=$(gcloud config list --format='value(core.project)')
    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
    
  3. Otorga el rol de Administrador de Cloud Run a tu 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. Otorga el rol de Usuario de objetos de almacenamiento a tu 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. Otorga el rol de Usuario de cuenta de servicio a tu 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/iam.serviceAccountUser
    

Implementa una imagen precompilada

Puedes configurar Cloud Build para implementar en Cloud Run una imagen compilada con anterioridad almacenada en Artifact Registry.

Para implementar una imagen compilada con anterioridad sigue estos pasos:

  1. Abre una ventana de la terminal (si no está abierta).

  2. Crea un directorio nuevo llamado helloworld y navega hasta él:

    mkdir helloworld
    cd helloworld
    
  3. Crea un archivo llamado cloudbuild.yaml con el siguiente contenido: Este es el archivo de configuración de Cloud Build. Contiene instrucciones para que Cloud Build implemente la imagen denominada us-docker.pkg.dev/cloudrun/container/hello en el servicio 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 implementar 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 implementar la imagen hello en Cloud Run.

Ejecuta la imagen implementada

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

    Abrir la página de Cloud Run

  2. Selecciona tu proyecto y haz clic en Open.

    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 (Service details) de cloudrunservice.

  4. Para ejecutar la imagen que implementó en cloudrunservice, haga clic en la URL:

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

¿Qué sigue?