Configura grupos de trabajadores de compilación (implementación de origen)

Cuando implementas el código fuente de la función en Cloud Run, esa fuente se almacena en un bucket de Cloud Storage. A continuación, Cloud Build compila el código de forma automática 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 Functions accede a esta imagen cuando necesita ejecutar el contenedor para ejecutar la función.

Si deseas personalizar el grupo de trabajadores de compilación que usa Cloud Build para un contexto de compilación seguro de los Controles del servicio de VPC, debes personalizar el grupo de trabajadores. Esta página es relevante para los desarrolladores de plataformas que implementan funciones en Cloud Run y configuran grupos privados que usa Cloud Build.

Antes de comenzar

Habilita la API de Cloud Build

gcloud services enable cloudbuild.googleapis.com

Roles obligatorios

Para obtener los permisos que necesitas para implementar desde la fuente, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta roles de IAM de Cloud Run y permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con las APIs de Google Cloud, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información acerca de cómo otorgar roles, consulta Permisos de implementación y Administra el acceso.

Protege tu compilación con grupos privados

De forma predeterminada, Cloud Build tiene acceso a Internet ilimitado durante el proceso de compilación. Si configuraste un perímetro de los Controles del servicio de VPC (VPC SC) y deseas limitar el acceso de la compilación solo a las dependencias almacenadas dentro del perímetro (por ejemplo, paquetes de Administración de socios de red), puedes usar el Función de grupos de trabajadores privados de Cloud Build.

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

  1. Crea tu grupo de trabajadores privados. Consulta Crea y administra grupos privados.
  2. Configura el perímetro de los Controles del servicio de VPC. Consulta Usa los Controles del servicio de VPC.

  3. Si tu grupo de trabajadores privados está en un proyecto diferente al de tu función de Cloud Run, debes otorgar al agente de servicio de Cloud Run (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com) la función Usuario de grupo de trabajadores de Cloud Build (cloudbuild.workerPoolUser) 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
    

    Reemplaza lo siguiente:

    • PROJECT_NUMBER por el número del proyecto en el que se ejecuta la función.
    • PRIVATE_POOL_PROJECT_ID por el ID del proyecto en el que se encuentra el grupo de trabajadores. Consulta Ejecuta compilaciones en un grupo privado para obtener más información.
  4. Implementa la función para compilar con un grupo privado:

gcloud

Para especificar un grupo privado que se compilará cuando se implemente una función a partir del código fuente, haz lo siguiente:

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

Reemplaza lo siguiente:

  • SERVICE por el nombre de tu función.
  • FUNCTION_ENTRY_POINT por el punto de entrada a tu función en tu código fuente.
  • WORKER_POOL por el nombre del grupo privado.

Borrar grupos de trabajadores de compilación

Puedes borrar grupos de trabajadores de compilación para funciones existentes.

gcloud

Para borrar el grupo de trabajadores de Cloud Build de una función, haz lo siguiente:

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

Reemplaza lo siguiente:

  • SERVICE por el nombre de tu función.
  • FUNCTION_ENTRY_POINT por el punto de entrada a tu función en tu código fuente.
  • WORKER_POOL por el nombre del grupo privado que deseas borrar.