Definir grupos de trabajadores de compilación (despliegue de origen)

Cuando despliegas el código fuente en Cloud Run, este se almacena en un segmento de Cloud Storage. A continuación, Cloud Build compila automáticamente el código en una imagen de contenedor y envía esa imagen a un registro de imágenes. Cada compilación se ejecuta en su propio trabajador. Cloud Run importa la imagen creada al hacer el despliegue.

Si quieres personalizar el grupo de trabajadores de compilación que Cloud Build usa en un contexto de compilación protegido por Controles de Servicio de VPC, debes personalizar el grupo de trabajadores. Esta página está dirigida a desarrolladores de plataformas que despliegan servicios o funciones de Cloud Run desde una fuente mediante la CLI de Google Cloud y configuran grupos privados que usa Cloud Build. Las marcas de la CLI de gcloud de los grupos de trabajadores de compilación se admiten en las implementaciones de origen (--source), pero no en las implementaciones de imágenes de contenedor (--image).

Antes de empezar

  • Habilita las APIs Admin de Cloud Run y Cloud Build:

    gcloud services enable run.googleapis.com \
        cloudbuild.googleapis.com

    Una vez que se haya habilitado la API Cloud Run Admin, se creará automáticamente la cuenta de servicio predeterminada de Compute Engine.

Roles obligatorios

Tú o tu administrador debéis conceder los siguientes roles de gestión de identidades y accesos a la cuenta de implementación y a la cuenta de servicio de Cloud Build.

Haz clic para ver los roles necesarios de la cuenta de implementación

Para obtener los permisos que necesitas para compilar e implementar desde la fuente, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

Haz clic para ver los roles necesarios de la cuenta de servicio de Cloud Build

Cloud Build usa automáticamente la cuenta de servicio predeterminada de Compute Engine como cuenta de servicio predeterminada de Cloud Build para compilar tu código fuente y tu recurso de Cloud Run, a menos que anules este comportamiento. Para que Cloud Build compile tus fuentes, pide a tu administrador que conceda el rol Compilador de Cloud Run (roles/run.builder) a la cuenta de servicio predeterminada de Compute Engine de tu proyecto:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Sustituye PROJECT_NUMBER por el número de tu proyecto Google Cloud y PROJECT_ID por el ID de tu proyecto Google Cloud. Para obtener instrucciones detalladas sobre cómo encontrar el ID y el número de tu proyecto, consulta el artículo Crear y gestionar proyectos.

La concesión del rol de compilador de Cloud Run a la cuenta de servicio predeterminada de Compute Engine tarda un par de minutos en propagarse.

Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu servicio de Cloud Run interactúa con APIs, como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad del servicio.Google Cloud Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.

Protege tu compilación con grupos privados

De forma predeterminada, Cloud Build tiene acceso ilimitado a Internet durante el proceso de compilación. Si has configurado un perímetro de Controles de Servicio de VPC (VPC SC) y quieres limitar el acceso de la compilación solo a las dependencias almacenadas dentro del perímetro (por ejemplo, paquetes npm), puedes usar la función grupos de trabajadores privados de Cloud Build.

En general, sigue estos pasos para configurar tu grupo privado:

  1. Crea tu grupo de trabajadores privado. Consulta Crear y gestionar grupos privados.
  2. Configura tu perímetro de Controles de Servicio de VPC. Consulta Usar Controles de Servicio de VPC.

  3. Si tu grupo de trabajadores privado está en un proyecto diferente al de tu servicio de Cloud Run, debes conceder el rol Usuario de WorkerPool de Cloud Build (cloudbuild.workerPoolUser) al agente de servicio (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com) de Cloud Run para que el servicio de Cloud Build pueda acceder al grupo de trabajadores.

    gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \
        --member serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
        --role roles/cloudbuild.workerPoolUser

    Sustituye:

    • PROJECT_NUMBER con el número del proyecto en el que se ejecuta el servicio.
    • PRIVATE_POOL_PROJECT_ID por el ID del proyecto en el que se encuentra el grupo de trabajadores. Consulta más información en el artículo sobre cómo ejecutar compilaciones en un grupo privado.
  4. Despliega tu servicio desde el origen para compilarlo con un grupo privado:

    gcloud

    Para especificar un grupo privado que se va a compilar al implementar desde el código fuente, usa la marca --build-worker-pool:

    gcloud run deploy SERVICE \
        --source . \
        --build-worker-pool WORKER_POOL

    Sustituye:

    • SERVICE con el nombre de tu servicio.
    • WORKER_POOL con el nombre del grupo de trabajadores privado.

    Si vas a desplegar una función, añade la marca --function con el punto de entrada de la función de tu código fuente.

Eliminar grupos de trabajadores de compilación

Puedes eliminar grupos de trabajadores de compilación de servicios que ya tengas.

gcloud

Para borrar el grupo de trabajadores de Cloud Build de las implementaciones de origen, usa la marca --clear-build-worker-pool:

gcloud run deploy SERVICE \
    --source . \
    --clear-build-worker-pool WORKER_POOL

Sustituye:

  • SERVICE con el nombre de tu servicio.
  • WORKER_POOL con el nombre del grupo privado que quieras eliminar.

Si vas a desplegar una función, añade la marca --function con el punto de entrada de la función de tu código fuente.