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:
-
Desarrollador de Cloud Run (
roles/run.developer
) en el grupo de trabajadores de Cloud Run -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad que usan tus grupos de trabajadores para interactuar con otros servicios de Google Cloud -
Lector de Artifact Registry (
roles/artifactregistry.reader
) en el repositorio de Artifact Registry de la imagen de contenedor implementada
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
- Actualiza un grupo de trabajadores existente
- Implementa imágenes de otros Google Cloud proyectos
- Implementa varios contenedores (sidecars) en un grupo de trabajadores
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
-
In the Google Cloud console, 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.
Para implementar una imagen de contenedor del grupo de trabajadores, haz lo siguiente:
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.
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
-
In the Google Cloud console, 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.
Para implementar una imagen de contenedor, sigue estos pasos:
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.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.
Realiza un cambio en el archivo de configuración.
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:
En la consola de Google Cloud , abre el proyecto de tu grupo de trabajadores de Cloud Run.
Selecciona Incluir asignaciones de roles proporcionadas por Google.
Copia el correo electrónico del agente de servicio de Cloud Run. Tiene el sufijo @serverless-robot-prod.iam.gserviceaccount.com
Abre el proyecto que posee el registro de contenedores que deseas usar.
Haz clic en Agregar para agregar una principal nueva.
En el campo Principales nuevas, pega el correo electrónico de la cuenta de servicio que copiaste antes.
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.
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
-
In the Google Cloud console, 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.
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
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:
- Cómo ver los registros del grupo de trabajadores
- Supervisa el rendimiento del grupo de trabajadores
- Establece límites de memoria
- Configure las variables de entorno
- Administra el grupo de trabajadores
- Administra revisiones del grupo de trabajadores