Implementa grupos de trabajadores en Cloud Run

En esta página, se muestra cómo implementar imágenes de contenedor en un grupo de trabajadores nuevo de Cloud Run o en una revisión nueva de un grupo de trabajadores existente de Cloud Run.

Los grupos de trabajadores son un recurso de Cloud Run diseñado específicamente para cargas de trabajo que no son de solicitud. A diferencia de los servicios de Cloud Run, los grupos de trabajadores no tienen las siguientes funciones:

  • URL o extremo público
  • Requisito para exponer un puerto de entrada
  • Ajuste de escala automático impulsado por solicitudes

Para ver un ejemplo de cómo implementar un grupo de trabajadores nuevo, consulta Implementa una guía de inicio rápido de grupo de trabajadores de muestra.

Roles obligatorios

Para obtener los permisos que necesitas para implementar grupos de trabajadores de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:

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

Imágenes y registros de contenedores compatibles

Puedes usar directamente imágenes de contenedor almacenadas en Artifact Registry o Docker Hub. Google recomienda el uso de Artifact Registry. Las imágenes de Docker Hub se almacenan en caché por hasta una hora.

Puedes usar imágenes de contenedor de otros registros públicos o privados (como JFrog Artifactory, Nexus o GitHub Container Registry) a través de la configuración de un repositorio remoto de Artifact Registry.

Solo debes considerar Docker Hub para implementar imágenes de contenedor populares, como las imágenes oficiales de Docker o las imágenes de OSS patrocinadas por Docker. Para obtener una mayor disponibilidad, Google recomienda implementar estas imágenes de Docker Hub con un repositorio remoto de Artifact Registry.

Cloud Run no admite capas de imágenes de contenedor de más de 9.9 GB cuando se realiza la implementación desde Docker Hub o un repositorio remoto de Artifact Registry con un registro externo.

Implementa grupos de trabajadores

Puedes implementar grupos de trabajadores de las siguientes maneras:

Implementa un grupo de trabajadores nuevo

Puedes especificar una imagen de contenedor con una etiqueta (por ejemplo, us-docker.pkg.dev/my-project/container/my-image:latest) o con un resumen exacto (por ejemplo, us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...).

Cuando implementas un grupo de trabajadores por primera vez, se crea su primera revisión. Ten en cuenta que las revisiones son inmutables. Si implementas desde una etiqueta de imagen de contenedor, se resolverá en un resumen y la revisión siempre entregará este resumen en particular.

Sigue las instrucciones con Google Cloud CLI o Terraform.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para implementar una imagen de contenedor del grupo de trabajadores, haz lo siguiente:

    1. Ejecuta el siguiente comando:

      gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL 

      Reemplaza lo siguiente:

      • WORKER_POOL: Es el nombre del grupo de trabajadores en el que deseas realizar la implementación. Si aún no existe, con este comando se crea el grupo de trabajadores durante la implementación. Puedes omitir este parámetro por completo, pero se te solicitará el nombre del grupo de trabajadores si lo haces. Los nombres de los grupos de trabajadores deben tener 49 caracteres o menos, usar un nombre único por región y proyecto, y no deben compartir el mismo nombre que un nombre de servicio existente de tu proyecto.
      • IMAGE_URL por una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest. Ten en cuenta que, si no proporcionas la marca --image, el comando de implementación intentará implementar desde el código fuente.
    2. Espera a que finalice la implementación. Una vez que se completa correctamente, Cloud Run muestra un mensaje de éxito junto con la información de la revisión sobre el grupo de trabajadores implementado.

      Para realizar una implementación en una ubicación diferente de la que estableciste con las propiedades run/region gcloud, usa lo siguiente:

      gcloud beta run worker-pools deploy WORKER_POOL --region REGION

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"
  launch_stage = "BETA"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }
}

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre del grupo de trabajadores.
  • REGION: La región Google Cloud , por ejemplo,europe-west1.
  • IMAGE_URL por una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

Implementa una revisión nueva de un grupo de trabajadores existente

Ten en cuenta que cambiar la configuración de un grupo de trabajadores genera la creación de una revisión nueva, incluso si no hay cambios en la imagen del contenedor. Cada revisión creada es inmutable.

Cloud Run importa la imagen del contenedor cuando se implementa. Cloud Run conserva esta copia de la imagen de contenedor mientras la use una revisión.

Sigue estas instrucciones con Google Cloud CLI o Terraform:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para implementar una imagen de contenedor, sigue estos pasos:

    1. Ejecuta el siguiente comando:

      gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL 

      Reemplaza lo siguiente:

      • WORKER_POOL: Es el nombre del grupo de trabajadores en el que deseas realizar la implementación. Si aún no existe, con este comando se crea el grupo de trabajadores durante la implementación. Puedes omitir este parámetro por completo, pero se te solicitará el nombre del grupo de trabajadores si lo haces. Los nombres de los grupos de trabajadores deben tener 49 caracteres o menos, usar un nombre único por región y proyecto, y no deben compartir el mismo nombre que un nombre de servicio existente de tu proyecto.
      • IMAGE_URL por una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest. Ten en cuenta que, si no proporcionas la marca --image, el comando de implementación intentará implementar desde el código fuente.

      El sufijo de revisión se asigna de forma automática para las revisiones nuevas. Si deseas proporcionar tu propio sufijo de revisión, usa el parámetro --revision-suffix de gcloud CLI.

    2. Espera a que finalice la implementación. Una vez que se completa correctamente, Cloud Run muestra un mensaje de éxito junto con la información de la revisión sobre el grupo de trabajadores implementado.

Terraform

Asegúrate de haber configurado Terraform como se describe en el ejemplo Implementa un grupo de trabajadores nuevo.

  1. Realiza un cambio en el archivo de configuración.

  2. Aplica la configuración de Terraform:

    terraform apply

    Ingresa yes para confirmar que deseas aplicar las acciones descritas.

Implementa imágenes de otros Google Cloud proyectos

Para implementar imágenes desde otros proyectos de Google Cloud , tú o tu administrador deben otorgar los roles de IAM requeridos a la cuenta del implementador y al agente de servicio de Cloud Run.

Para conocer los roles necesarios para la cuenta del implementador, consulta roles requeridos.

Para otorgar los roles requeridos al agente de servicio de Cloud Run, consulta las siguientes instrucciones:

  1. En la consola de Google Cloud , abre el proyecto de tu grupo de trabajadores de Cloud Run.

    Ve a la página IAM

  2. Selecciona Incluir asignaciones de roles proporcionadas por Google.

  3. Copia el correo electrónico del agente de servicio de Cloud Run. Tiene el sufijo @serverless-robot-prod.iam.gserviceaccount.com

  4. Abre el proyecto que posee el registro de contenedores que deseas usar.

    Ve a la página IAM

  5. Haz clic en Agregar para agregar una principal nueva.

  6. En el campo Principales nuevas, pega el correo electrónico de la cuenta de servicio que copiaste antes.

  7. En el menú desplegable Seleccionar una función, si usas Container Registry, elige la función Almacenamiento -> Visualizador de objetos de Storage. Si usas Artifact Registry, selecciona la función Artifact Registry -> Lector de Artifact Registry.

  8. Implementa la imagen del contenedor en el proyecto que contiene tu grupo de trabajadores de Cloud Run.

Implementa imágenes de otros registros

Para implementar imágenes de contenedor públicas o privadas que no se almacenan en Artifact Registry ni en Docker Hub, configura un repositorio remoto de Artifact Registry.

Los repositorios remotos de Artifact Registry te permiten hacer lo siguiente:

  • Implementar cualquier imagen de contenedor pública, por ejemplo, GitHub Container Registry (ghcr.io)
  • Implementa imágenes de contenedor de repositorios privados que requieran autenticación, por ejemplo, JFrog Artifactory o Nexus.

Si no es posible usar un repositorio remoto de Artifact Registry, puedes extraer y enviar imágenes de contenedor de forma temporal a Artifact Registry implementándolas en Cloud Run con docker push. Cloud Run importa la imagen del contenedor durante la implementación y, después, puedes borrarla de Artifact Registry.

Implementa varios contenedores (sidecars) en un grupo de trabajadores

En una implementación de Cloud Run con sidecars, hay un contenedor principal del grupo de trabajadores y uno o más contenedores sidecar. Los sidecars pueden comunicarse entre sí y con el contenedor del grupo de trabajadores a través de un puerto localhost. El puerto de localhost varía según los contenedores que uses.

Puedes implementar hasta 10 contenedores por instancia, incluido el contenedor del grupo de trabajadores. Todos los contenedores dentro de una instancia comparten el mismo espacio de nombres de red y también pueden compartir archivos a través de un volumen compartido en la memoria.

Puedes exigir que todas las implementaciones usen un sidecar específico si creas políticas de organización personalizadas.

Implementa un servicio con contenedores de sidecar

Sigue estas instrucciones con Google Cloud CLI o Terraform para implementar varios contenedores en un grupo de trabajadores de Cloud Run:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para implementar varios contenedores en un grupo de trabajadores, ejecuta el siguiente comando:

    gcloud beta run worker-pools deploy WORKER_POOL \
     --container WORKER_POOL_CONTAINER_NAME \
     --image='WORKER_POOL_IMAGE' \
     --container SIDECAR_CONTAINER_NAME \
     --image='SIDECAR_IMAGE'

    Reemplaza lo siguiente:

    • WORKER_POOL: Es el nombre del grupo de trabajadores en el que realizas la implementación. Si omites este parámetro, se te solicitará el nombre del grupo de trabajadores.
    • WORKER_POOL_CONTAINER_NAME: Es el nombre del contenedor del grupo de trabajadores.
    • IMAGE_URL por una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • SIDECAR_CONTAINER_NAME: Es un nombre para el contenedor de archivo adicional, por ejemplo, sidecar.
    • SIDECAR_IMAGE por una referencia a la imagen del contenedor del sidecar.

    Para configurar cada contenedor en el comando de implementación, proporciona la configuración de cada contenedor después de los parámetros de container, por ejemplo:

    gcloud beta run worker-pools deploy WORKER_POOL \
      --container CONTAINER_1_NAME \
      --image='WORKER_POOL_IMAGE' \
      --set-env-vars=KEY=VALUE \
      --container SIDECAR_CONTAINER_NAME \
      --image='SIDECAR_IMAGE' \
      --set-env-vars=KEY_N=VALUE_N
  3. Espera a que finalice la implementación. Una vez que la operación se completa de manera correcta, Cloud Run muestra un mensaje de éxito.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"
  launch_stage = "BETA"

  template {
    containers {
      name = "CONTAINER_NAME"
      image = "IMAGE_URL"
    }
    containers {
      name = "SIDECAR_CONTAINER_NAME"
      image = "SIDECAR_IMAGE_URL"
    }
  }
}

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre del grupo de trabajadores.
  • REGION: La región Google Cloud , por ejemplo,europe-west1.
  • CONTAINER_NAME: Es el nombre del contenedor.
  • IMAGE_URL por una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • SIDECAR_CONTAINER_NAME: Es el nombre del contenedor de archivo adicional.
  • SIDECAR_IMAGE_URL: Es una referencia a la imagen del contenedor de sidecar.

Funciones destacadas disponibles para implementaciones con sidecars

Puedes especificar el orden de inicio del contenedor dentro de una implementación con varios contenedores si tienes dependencias que requieren que algunos contenedores se inicien antes que otros contenedores en la implementación.

Si tienes contenedores que dependen de otros contenedores, debes usar verificaciones de estado en tu implementación. Cuando usas verificaciones de estado, Cloud Run sigue el orden de inicio del contenedor y verifica el estado de cada contenedor antes de iniciar el siguiente. Sin verificaciones de estado, Cloud Run intenta iniciar todos los contenedores, incluso si los contenedores de los que dependen aún no se están ejecutando o no se pudieron iniciar.

Varios contenedores dentro de una sola instancia pueden acceder a un volumen en memoria compartido, al que puede acceder cada contenedor con los puntos de activación que creas.

¿Qué sigue?

Después de implementar un grupo de trabajadores nuevo, puedes hacer lo siguiente: