Implementa un servicio o trabajo de Cloud Run

En este documento, se describe cómo implementar tus aplicaciones, incluidas Servicios y trabajos de Cloud Run.

Cloud Deploy te permite implementar tus cargas de trabajo basadas en contenedores en cualquier Servicio de Cloud Run o trabajo. Todas las funciones de Cloud Deploy cuando implementas en destinos de Cloud Run Cloud Run, pero las implementaciones de versiones canary no son compatibles trabajos de Cloud Run.

Este documento describe las tres configuraciones principales que debes completar en para implementarlo en Cloud Run:

Limitaciones

  • Solo puedes implementar un servicio o trabajo de Cloud Run por destino.

  • No puedes ejecutar una implementación de versiones canary en un trabajo de Cloud Run.

    Sin embargo, los servicios de Cloud Run pueden usar una implementación de versiones canary.

Antes de comenzar

Crea tu configuración de destino.

El destino se puede configurar en el YAML de tu canalización de entrega o puede archivo separado. Además, puedes configurar más de un destino en el mismo archivo.

En la definición de destino, crea una estrofa run para identificar la ubicación en la que se creará el servicio de Cloud Run.

La sintaxis para especificar el servicio o trabajo de Cloud Run en tu definición del objetivo es la siguiente:

run:
 location: projects/[project_name]/locations/[region_name]

Este identificador de recursos usa los siguientes elementos:

  • [project_name] es el nombre del proyecto de Google Cloud en el que Se creará un trabajo o servicio de Cloud Run.

    Esto es lo que harás para cada objetivo. Recomendamos un proyecto diferente para cada servicio o trabajo de Cloud Run. Si quieres más de un servicio o trabajo en el mismo proyecto, debes usar Perfiles de Skaffold en el archivo de configuración skaffold.yaml.

  • [region_name] es la región en la que se creará el servicio o el trabajo. Tu servicio o trabajo puede estar en cualquier región que admite Cloud Run.

A continuación, se muestra un ejemplo de configuración de destino que define el Servicio o trabajo de Cloud Run para 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 canalización de entrega de Cloud Deploy definición o por separado. De cualquier manera, debes registrar el destino antes de crear la versión para implementar tu servicio de Cloud Run o trabajo.

Crea tu configuración de Skaffold

El siguiente es un archivo skaffold.yaml de ejemplo para un 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.rawYaml proporciona los nombres de Cloud Run las definiciones de servicios.

    En este ejemplo, service.yaml es el archivo que define una Servicio de Cloud Run que implementará Skaffold. El nombre de este archivo puede ser cualquier cosa, pero por convención es service.yaml para un servicio y job.yaml para un trabajo.

  • La estrofa deploy especifica cómo deseas que se implemente el manifiesto. específicamente, el proyecto y la ubicación. El campo deploy es obligatorio.

    Te recomendamos que dejes el {} vacío. Se propaga Cloud Deploy durante la renderización, en función del proyecto y la ubicación del destino definición.

    Sin embargo, para el desarrollo local, puedes proporcionar valores aquí. Sin embargo, Cloud Deploy siempre usa el proyecto y la ubicación del destino definición, sin importar si los valores se proporcionan aquí.

Crea las definiciones del servicio de Cloud Run

Para crear una definición del servicio de Cloud Run, puedes crear manualmente o copiar una desde un servicio existente. Ambos se describen en este sección.

Opción 1: Crea un service.yaml nuevo de Cloud Run

El archivo service.yaml define tu servicio de Cloud Run. Cuando crear una versión, Skaffold usa esta definición para implementar tu servicio.

A continuación, se muestra 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 las imágenes del contenedor con las que realizas la implementación este servicio.

Opción 2: Copia un service.yaml de un servicio existente con la consola de Google Cloud

Puedes crear un servicio con la consola de Google Cloud o usar uno existente. y copia tu service.yaml desde allí.

Para obtener el service.yaml con Google Cloud CLI, sigue estos pasos:

gcloud run services describe [service_name] --format=export

Para obtener el service.yaml de la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a Servicios de Cloud Run .

  2. Selecciona el servicio existente cuya definición deseas usar.

También puedes crear una cuenta nueva y, luego, seleccionarla. Cuándo si seleccionas el servicio, se muestra la página Detalles del servicio:

página de detalles del servicio de la consola de Google Cloud, en la que se muestra la pestaña YAML

  1. Selecciona la pestaña YAML.

  2. Haz clic en Editar y, luego, copia el contenido del YAML en un nuevo archivo llamado service.yaml en tu sistema de archivos, de modo que Skaffold pueda usarlo cuando crea una versión.

Crea las definiciones de tus trabajos de Cloud Run

Para implementar una definición de trabajo de Cloud Run, puedes crear manualmente o copiar uno de un trabajo existente. Ambos se describen en este sección.

Ten en cuenta que los trabajos no necesariamente se ejecutan cuando los implementa Cloud Deploy. Esto es diferente de los servicios, que ejecutan aplicaciones después de implementarlas. La forma en que se invoca un trabajo depende del trabajo a sí mismo.

Opción 1: Crea un job.yaml nuevo de Cloud Run

job.yaml define tu trabajo de Cloud Run. Cuando creas una versión, Skaffold usa definición para implementar el trabajo.

A continuación, se muestra 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 del contenedor que estás implementando para este trabajo.

Opción 2: copiar un job.yaml de un trabajo existente con la consola de Google Cloud

Puedes crear un trabajo con la consola de Google Cloud o usar uno existente. y copia tu job.yaml desde allí.

Para obtener el job.yaml con Google Cloud CLI, sigue estos pasos:

gcloud run jobs describe [job_name] --format=export

Para obtener el job.yaml de la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a Trabajos de Cloud Run .

  2. Selecciona el trabajo existente cuya definición deseas usar.

También puedes crear una cuenta nueva y, luego, seleccionarla. Cuándo cuando seleccionas el trabajo, se muestra la página de detalles del trabajo:

Página de detalles del trabajo en la consola de Google Cloud, en la que se muestra la pestaña YAML

  1. Selecciona la pestaña YAML.

  2. Haz clic en Editar y, luego, copia el contenido del YAML en un nuevo archivo llamado job.yaml en tu sistema de archivos, de modo que Skaffold pueda usarlo cuando crea una versión.

Revisión general

Ahora que ya tienes la definición del trabajo o servicio de Cloud Run, Configuración de skaffold.yaml y tu destino de Cloud Deploy definición, y has registró tu objetivo como recurso de Cloud Deploy, ahora puedes invoca tu canalización de entrega para crear una versión y avanzar en el progreso de los objetivos definidos en la canalización.

La guía de inicio rápido Implementa una app en Cloud Run con Cloud Deploy muestra todo esto en acción.

Comportamiento de los servicios entre revisiones

Cuando vuelves a implementar un servicio, la nueva revisión se basa en el implementó service.yaml. No se mantiene nada de la revisión anterior. salvo que sea igual en el YAML recién implementado. Por ejemplo, hay parámetros de configuración o etiquetas de la revisión anterior que no en el YAML nuevo, esas opciones de configuración o etiquetas no están en la nueva revisión.

Activa trabajos de Cloud Run

Después de implementar un trabajo, puedes activarlo como se describe en la documentación de Cloud Run.

Implementa servicios y trabajos de Cloud Run en varios proyectos

Si necesitas implementar servicios o trabajos que están en proyectos diferentes, cuenta de servicio de ejecución necesita permiso para acceder a los proyectos en los que se definen esos servicios o trabajos.

Consulta Cuenta de servicio de ejecución de Cloud Deploy. y Roles y permisos de Identity and Access Management para obtener más información.

¿Qué sigue?