En este documento, se describe cómo implementar tus aplicaciones, incluidos los servicios, los trabajos y los grupos de trabajadores de Cloud Run.
Cloud Deploy te permite implementar tus cargas de trabajo basadas en contenedores en cualquier servicio de Cloud Run, trabajo o grupo de trabajadores. Se admiten todas las funciones de Cloud Deploy cuando implementas en destinos de Cloud Run para servicios o grupos de trabajadores de Cloud Run, pero no se admiten las implementaciones canary para trabajos de Cloud Run.
En este documento, se describen las tres configuraciones principales que debes completar para implementar en Cloud Run:
- Crea tu configuración de destino
- Crea tu configuración de Skaffold
- Crea tus definiciones de servicio, definiciones de trabajo o definiciones de grupo de trabajadores de Cloud Run
Limitaciones
Solo puedes implementar un servicio, trabajo o grupo de trabajadores de Cloud Run por destino.
No puedes ejecutar una implementación de versiones canary en un trabajo de Cloud Run.
Sin embargo, los servicios y los grupos de trabajadores de Cloud Run pueden usar una implementación de versiones canary.
Para implementar una función de Cloud Run con Cloud Deploy, debes modificar tu flujo de trabajo de CI para compilar la función en un contenedor y, luego, implementarla como un servicio de Cloud Run.
Antes de comenzar
Asegúrate de usar la versión
541.0.0o una posterior de gcloud CLI.
Crea tu configuración de destino
El destino se puede configurar en tu YAML de canalización de entrega o en un archivo separado. Además, puedes configurar más de un destino en el mismo archivo.
Los objetivos deben definirse en el mismo proyecto y región que la canalización de entrega. Sin embargo, los servicios, los trabajos o los grupos de trabajadores en los que se implementan los destinos pueden estar en diferentes proyectos y regiones, siempre que la cuenta de servicio tenga acceso a esos proyectos.
En la definición de destino, crea una sección run para identificar la ubicación en la que se creará el servicio de Cloud Run.
La sintaxis para especificar el servicio, el trabajo o el grupo de trabajadores de Cloud Run en la definición de destino es la siguiente:
run:
location: projects/[project_name]/locations/[region_name]
Este identificador de recursos usa los siguientes elementos:
project_namees el nombre del Google Cloud proyecto en el que se creará tu servicio, trabajo o grupo de trabajadores de Cloud Run.Lo harás para cada destino. Recomendamos un proyecto diferente para cada servicio, trabajo o grupo de trabajadores de Cloud Run. Si deseas más de un servicio, trabajo o grupo de trabajadores en el mismo proyecto, debes usar perfiles de Skaffold en tu
skaffold.yamlarchivo de configuración.region_namees la región en la que se creará el servicio, el trabajo o el grupo de trabajadores. Tu servicio, trabajo o grupo de trabajadores puede estar en cualquier región que admita Cloud Run.
El siguiente es un ejemplo de configuración de destino que define el servicio, el trabajo o el grupo de trabajadores de Cloud Run que se creará:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development service
run:
location: projects/my-app/locations/us-central1
Puedes definir este destino dentro de una definición de canalización de entrega de Cloud Deploy o por separado. De cualquier manera, debes registrar el destino antes de crear la versión para implementar tu servicio, trabajo o grupo de trabajadores de Cloud Run.
Crea tu configuración de Skaffold
El siguiente es un ejemplo skaffold.yaml archivo para una
implementación de Cloud Run:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: cloud-run-application
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
En este archivo skaffold.yaml...
manifests.rawYamlproporciona los nombres de las definiciones de servicio de Cloud Run.En este ejemplo,
service.yamles el archivo que define un servicio de Cloud Run que Skaffold implementará. Este nombre de archivo puede ser cualquiera, pero, por convención, esservice.yamlpara un servicio,job.yamlpara un trabajo yworkerpool.yamlpara un grupo de trabajadores.La sección
deployespecifica cómo deseas que se implemente el manifiesto, en particular, el proyecto y la ubicación.deployes obligatorio.Te recomendamos que dejes el
{}vacío. Cloud Deploy lo propaga durante la renderización, según el proyecto y la ubicación de la definición de destino.Sin embargo, para el desarrollo local, puedes proporcionar valores aquí. Sin embargo, Cloud Deploy siempre usa el proyecto y la ubicación de la definición de destino, independientemente de si se proporcionan valores aquí.
Crea tus definiciones de servicio de Cloud Run
Para crear una definición de servicio de Cloud Run, puedes crear una de forma manual o copiar una de un servicio existente. Ambas opciones se describen en esta sección.
Opción 1: Crea un nuevo service.yaml de Cloud Run
El archivo service.yaml define tu servicio de Cloud Run. Cuando creas una versión, Skaffold usa esta definición para implementar tu servicio.
Este es un ejemplo simplificado:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: [SERVICE_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Aquí:
[SERVICE_NAME]es un nombre para este servicio de Cloud Run.[IMAGE_PATH]apunta a la imagen o las imágenes de contenedor que implementas con este servicio.
Opción 2: Copia un service.yaml de un servicio existente con la consola Google Cloud
Puedes crear un servicio con la Google Cloud consola o usar uno existente,
y copiar tu service.yaml desde allí.
Para obtener el service.yaml con Google Cloud CLI, haz lo siguiente:
gcloud run services describe [service_name] --format=export
Para obtener el service.yaml desde la Google Cloud consola, haz lo siguiente:
En la Google Cloud consola, ve a la página Servicios de Cloud Run.
Selecciona el servicio existente cuya definición deseas usar.
O bien, puedes crear uno nuevo y, luego, seleccionarlo. Cuando seleccionas el servicio, se muestra la página de detalles del servicio:

Selecciona la pestaña YAML.
Haz clic en Editar y, luego, copia el contenido del YAML en un archivo nuevo llamado
service.yamlen tu sistema de archivos, de modo que Skaffold pueda usarlo cuando crees una versión.
Crea tus definiciones de trabajo de Cloud Run
Para implementar una definición de trabajo de Cloud Run, puedes crear una de forma manual o copiar una de un trabajo existente. Ambas opciones se describen en esta sección.
Ten en cuenta que los trabajos no se ejecutan necesariamente cuando Cloud Deploy los implementa. Esto es diferente de los servicios, que son aplicaciones en ejecución después de su implementación. La forma en que se invoca un trabajo depende del trabajo en sí.
Opción 1: Crea un nuevo job.yaml de Cloud Run
El archivo job.yaml define tu trabajo de Cloud Run. Cuando creas una versión, Skaffold usa esta definición para implementar el trabajo.
Este es un ejemplo simplificado:
apiVersion: run.googleapis.com/v1
kind: Job
metadata:
name: [JOB_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Aquí:
[JOB_NAME]es un nombre para este trabajo de Cloud Run.[IMAGE_PATH]apunta a la imagen de contenedor que implementas para este trabajo.
Opción 2: Copia un job.yaml de un trabajo existente con la consola Google Cloud
Puedes crear un trabajo con la Google Cloud consola o usar uno existente,
y copiar tu job.yaml desde allí.
Para obtener el job.yaml con Google Cloud CLI, haz lo siguiente:
gcloud run jobs describe [job_name] --format=export
Para obtener el job.yaml desde Google Cloud la consola, haz lo siguiente:
En la Google Cloud consola, ve a la página Trabajos de Cloud Run.
Selecciona el trabajo existente cuya definición deseas usar.
O bien, puedes crear uno nuevo y, luego, seleccionarlo. Cuando seleccionas el trabajo, se muestra la página de detalles del trabajo:

Selecciona la pestaña YAML.
Haz clic en Editar y, luego, copia el contenido del YAML en un archivo nuevo llamado
job.yamlen tu sistema de archivos, de modo que Skaffold pueda usarlo cuando crees una versión.
Crea tus definiciones de grupo de trabajadores de Cloud Run
Para implementar una definición de grupo de trabajadores de Cloud Run, puedes crear una de forma manual o copiar una de un grupo de trabajadores existente. Ambas opciones se describen en esta sección.
Opción 1: Crea un nuevo workerpool.yaml de Cloud Run
El archivo workerpool.yaml define tu grupo de trabajadores de Cloud Run. Cuando creas una versión, Skaffold usa esta definición para implementar el grupo de trabajadores.
Este es un ejemplo simplificado:
apiVersion: run.googleapis.com/v1
kind: WorkerPool
metadata:
name: [WORKERPOOL_NAME]
annotations:
run.googleapis.com/launch-stage: BETA
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Aquí:
[WORKERPOOL_NAME]es un nombre para este grupo de trabajadores de Cloud Run.[IMAGE_PATH]apunta a la imagen de contenedor que implementas para este grupo de trabajadores.
Opción 2: Copia un workerpool.yaml de un grupo de trabajadores existente con la consola Google Cloud
Puedes crear un grupo de trabajadores con la Google Cloud consola o usar uno existente,
y copiar tu workerpool.yaml desde allí.
Para obtener el workerpool.yaml con Google Cloud CLI, haz lo siguiente:
gcloud beta run worker-pools describe [workerpool_name] --format=export
Para obtener el workerpool.yaml desde la Google Cloud consola, haz lo siguiente:
En la Google Cloud consola, ve a la página Grupos de trabajadores de Cloud Run.
Selecciona el grupo de trabajadores existente cuya definición deseas usar.
O bien, puedes crear uno nuevo y, luego, seleccionarlo. Cuando seleccionas el grupo de trabajadores, se muestra la página de detalles del grupo de trabajadores:

Selecciona la pestaña YAML.
Copia el contenido del YAML en un archivo nuevo llamado
workerpool.yamlen tu sistema de archivos, de modo que Skaffold pueda usarlo cuando crees una versión.
Revisión general
Ahora que tienes tu definición de servicio, trabajo o grupo de trabajadores de Cloud Run, tu
skaffold.yaml configuración y tu definición de destino de Cloud Deploy
, y
registraste tu destino
como un recurso de Cloud Deploy, puedes
invocar tu canalización de entrega
para crear una versión y hacer que avance por la progresión de destinos definidos
en la canalización.
En la guía de inicio rápido Implementa una app en Cloud Run con Cloud Deploy , se muestra todo esto en acción.
Comportamiento de los servicios en todas las revisiones
Cuando vuelves a implementar un servicio, la nueva revisión se basa en el service.yaml recién implementado. No se mantiene nada sobre la revisión anterior, a menos que sea lo mismo en el YAML recién implementado. Por ejemplo, si hay parámetros de configuración o etiquetas en la revisión anterior que no están en el YAML nuevo, esos parámetros o etiquetas no estarán en la revisión nueva.
Cómo activar trabajos de Cloud Run
Después de implementar un trabajo, puedes activarlo como se describe en la documentación de Cloud Run.
Implementación de servicios, trabajos y grupos de trabajadores de Cloud Run en varios proyectos
Si necesitas implementar servicios, trabajos o grupos de trabajadores que se encuentran en diferentes proyectos, tu cuenta de servicio de ejecución necesita permiso para acceder a los proyectos en los que se definen esos servicios, trabajos o grupos de trabajadores.
Consulta Cuenta de servicio de ejecución de Cloud Deploy y Funciones y permisos de Identity and Access Management para obtener más información.
Implementación de Cloud Run Functions
Cloud Run Functions compila tu código fuente cada vez que se implementa una función. Debido a esto, cada entorno de ejecución de destino en tu canalización podría obtener un artefacto ligeramente diferente. Esto es contrario a las prácticas recomendadas en Cloud Deploy. En cambio, te sugerimos que uses un servicio de Cloud Run directamente. Esto te permite compilar un solo artefacto y promoverlo en tus entornos.
Registra el
service.yamlpara tu función de Cloud Run.Para obtenerlo, ejecuta el siguiente comando:
gcloud run services describe FUNCTION_NAME \ --format=export \ --region=REGION \ --project=PROJECTQuita las siguientes anotaciones, si están presentes:
run.googleapis.com/build-base-imagerun.googleapis.com/build-namerun.googleapis.com/build-source-locationrun.googleapis.com/build-enable-automatic-updates
Reemplaza el valor en
spec.spec.containers.imageporIMAGE_TAG.Crea tu canalización de entrega y tus destinos, con el servicio de Cloud Run como destino.
Separa el paso de compilación del paso de implementación en tu proceso de CI. En lugar de usar Google Cloud CLI para implementar tu función, reemplázala por los siguientes pasos:
Compila la función en un contenedor con Cloud Build:
gcloud builds submit --pack image=REGION-docker.pkg.dev/PROJECT/cloud-run-source-deploy/IMAGE_NAME \ --project=PROJECT \ --region=REGIONCrea una versión con Cloud Deploy:
gcloud deploy releases create RELEASE_NAME \ --project=DEPLOY_PROJECT \ --region=REGION \ --delivery-pipeline=DELIVERY_PIPELINE \ --images=IMAGE_TAG=REGION-docker.pkg.dev/PROJECT/cloud-run-source-deploy/IMAGE_NAMEEn este comando...
RELEASE_NAMEes un nombre para esta versión. El nombre debe ser único entre todas las versiones de esta canalización de entrega.DEPLOY_PROJECTes el ID del proyecto en el que creaste la canalización de implementación.DELIVERY_PIPELINEes el nombre de la canalización de entrega que administrará la implementación de esta versión a través de la progresión de destinos. Este nombre debe coincidir con elnamecampo en la definición de la canalización.REGIONes el nombre de la región en la que creas la versión, por ejemplo,us-central1. Este campo es obligatorio.IMAGE_NAMEes el nombre que le diste a la imagen en el paso anterior, cuando compilaste la función.
¿Qué sigue?
Prueba la guía de inicio rápido: Implementa una aplicación en Cloud Run
Obtén más información sobre cómo configurar destinos de Cloud Deploy
Obtén información sobre los entornos de ejecución de Cloud Deploy.
Obtén más información sobre la compatibilidad de Skaffold con Cloud Run
Obtén más información sobre Cloud Run