Canalización de entrega y configuración de destino

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Los archivos de configuración de Google Cloud Deploy definen la canalización de entrega, los objetivos para implementar y la progreso de esos destinos.

El archivo de configuración de la canalización de entrega puede incluir definiciones de destino, o pueden estar en un archivo o archivos diferentes. Por convención, un archivo que contiene la configuración de la canalización de entrega y la configuración de destino se llama clouddeploy.yaml, y una configuración de canalización sin destinos se llama delivery-pipeline.yaml. Pero puedes nombrarlos como quieras.

Componentes

Google Cloud Deploy usa dos archivos de configuración principales:

Pueden ser archivos separados, o la canalización de entrega y los destinos se pueden configurar en el mismo archivo.

Estructura de un archivo de configuración de la canalización de entrega

La siguiente configuración incluye una definición de destino:

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name:
 annotations:
 labels:
description:
suspended:
serialPipeline:
 stages:
 - targetId:
   profiles: []
   strategy:
     standard:
       verify:
 - targetId:
   profiles: []
   strategy:
     standard:
       verify:
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name:
 annotations:
 labels:
description:
requireApproval:
#
# Runtimes
# one of the following runtimes:
gke:
 cluster:
 internalIp:
#
# or:
anthosCluster:
 membership:
#
# or:
run:
 location:
# (End runtimes. See documentation in this article for more details.)
#
executionConfigs:
- usages:
  - [RENDER | DEPLOY | VERIFY]
  workerPool:
  serviceAccount:
  artifactStorage:
  executionTimeout:

---

Este YAML tiene dos componentes principales:

  • La canalización y la progresión de entrega principales

    El archivo de configuración puede incluir cualquier cantidad de definiciones de canalización.

  • Las definiciones de destino

    Para simplificar, en este ejemplo solo se muestra un destino, pero puede haber cualquier cantidad. Además, los objetivos se pueden definir en archivos separados.

Estos componentes se definen en el resto de este documento.

Definición y progreso de la canalización

Además de los metadatos de la canalización, como name, la definición de la canalización principal incluye una lista de referencias a los objetivos en el orden de la secuencia de implementación. Es decir, el primer objetivo de la lista es el primer objetivo de implementación. Después de realizar la implementación en ese destino, la promoción de la versión se implementa en el siguiente destino de la lista.

Las siguientes son las propiedades de configuración para una canalización de entrega, sin incluir definiciones de destino.

metadata.name

El campo name toma una string que debe ser única en cada proyecto y ubicación.

metadata.annotations y metadata.labels

La configuración de la canalización de entrega puede incluir anotaciones y etiquetas. Las anotaciones y las etiquetas se almacenan con el recurso de canalización de entrega después de que se registra la canalización.

Para obtener más información, consulta Usa etiquetas y anotaciones con Google Cloud Deploy.

description

Una string arbitraria que describe esta canalización de entrega. Esta descripción se muestra en los detalles de la canalización de entrega en Google Cloud Console.

suspended

Un valor booleano, que si true suspende la canalización de entrega de modo que no se pueda usar para crear, promover, revertir o volver a implementar actualizaciones Además, si la canalización de entrega está suspendida, no puedes aprobar ni rechazar un lanzamiento creado a partir de esa canalización.

El valor predeterminado es false.

serialPipeline

El comienzo de la definición de una canalización de entrega de progreso en serie. Esta estrofa es obligatoria.

stages

Una lista de todos los destinos en los que esta canalización de entrega está configurada para implementarse.

La lista debe estar en el orden de la secuencia de publicación que desee. Por ejemplo, si tienes objetivos llamados dev, staging y production, enuméralos en el mismo orden, para que tu primera implementación sea en dev y tu implementación final esté en production.

Propaga cada campo stages.targetId con el valor del campo metadata.name en la definición de destino correspondiente. En targetId, incluye profiles:

serialPipeline:
 stages:
 - targetId:
   profiles: []
   strategy:
     standard:
       verify:

targetId

Identifica el objetivo específico que se usará en esta etapa de la canalización de entrega. El valor es la propiedad metadata.name de la definición de destino.

strategy

Incluye propiedades para especificar una estrategia de implementación. La única estrategia compatible es standard:.

strategy.standard.verify configurado como true habilita la verificación de implementación en el destino. Si no se especifica una estrategia de implementación, se usa la estrategia de implementación standard con la verificación establecida en false. La siguiente configuración de canalización de entrega es válida:

serialPipeline:
 stages:
 - targetId:
   profiles: []
 - targetId:
   profiles: []

verify

Booleano opcional que indica si se admite o no la verificación de implementación para este objetivo. El predeterminado es false.

Habilitar la verificación de implementaciones también requiere una estrofa verify en skaffold.yaml. Si no proporcionas esta propiedad, el trabajo de verificación fallará.

profiles

Toma una lista de cero o más nombres de perfil de Skaffold de skaffold.yaml. Google Cloud Deploy usa el perfil con skaffold render cuando crea la versión. Los perfiles de Skaffold te permiten variar la configuración entre destinos mientras usas un solo archivo de configuración.

Definiciones objetivo

El archivo de definición de la canalización de entrega puede contener definiciones de destino o puedes especificar objetivos en un archivo separado. Puedes repetir nombres de destino dentro de un proyecto, pero deben ser únicos dentro de una canalización de entrega.

Puedes reutilizar destinos entre varias canalizaciones de entrega. Sin embargo, solo puedes hacer referencia a un destino una vez desde el progreso de una sola canalización de entrega.

Para destinos de GKE

En el siguiente YAML, se muestra cómo configurar un destino que se implemente en un clúster de GKE:

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     requireApproval:
     gke:
      cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
      internalIp:

     executionConfigs:
     - usages:
       - [RENDER | DEPLOY]
       workerPool:
       serviceAccount:
       artifactStorage:
       executionTimeout:

metadata.name

Es el nombre de este destino. Este nombre debe ser único a nivel global.

metadata.annotations y metadata.labels

La configuración de destino admite anotaciones de Kubernetes y etiquetas, pero Google Cloud Deploy no las requiere.

Las anotaciones y las etiquetas se almacenan con el recurso de destino. Para obtener más información, consulta Usa etiquetas y anotaciones con Google Cloud Deploy.

description

Este campo toma una string arbitraria que describe el uso de este destino.

requireApproval

Si la promoción a este objetivo requiere aprobación manual. Puede ser true o false.

Esta propiedad es opcional. El valor predeterminado es false.

gke

Solo para clústeres de GKE, la ruta de acceso del recurso que identifica el clúster en el que se implementará tu aplicación:

gke:
  cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
  • project_name

    El proyecto de Google Cloud en el que reside el clúster

  • location

    La ubicación en la que reside el clúster. Por ejemplo, us-central1. El clúster también puede ser zonal (us-central1-c).

  • cluster_name

    El nombre del clúster, como aparece en tu lista de clústeres en Google Cloud Console.

Por ejemplo:

gke:
  cluster: projects/cd-demo-01/locations/us-central1/clusters/prod

Consulta executionConfigs, en este artículo, para obtener descripciones de las propiedades del entorno de ejecución.

internalIp

Si el clúster de GKE especificado usa o no una dirección IP privada Esta propiedad es opcional. De forma predeterminada, Google Cloud Deploy usa la dirección IP disponible de forma pública para el clúster. Si hay una dirección IP privada y deseas usarla, configúrala como true.

Para destinos de Cloud Run

En el siguiente YAML, se muestra cómo configurar un destino que se implemente en un servicio de Cloud Run:

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     requireApproval:
     run:
      location: projects/[project_name]/locations/[location]

     executionConfigs:
     - usages:
       - [RENDER | DEPLOY | VERIFY]
       workerPool:
       serviceAccount:
       artifactStorage:
       executionTimeout:

metadata.name

Es el nombre de este destino. Este nombre debe ser único por región.

metadata.annotations y metadata.labels

La configuración de destino admite anotaciones y etiquetas, pero Google Cloud Deploy no las requiere.

Las anotaciones y las etiquetas se almacenan con el recurso de destino. Para obtener más información, consulta Usa etiquetas y anotaciones con Google Cloud Deploy.

description

Este campo toma una string arbitraria que describe el uso de este destino.

requireApproval

Si la promoción a este objetivo requiere aprobación manual. Puede ser true o false.

Esta propiedad es opcional. El valor predeterminado es false.

run

Solo para los servicios de Cloud Run, la ubicación en la que se creará el servicio:

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

    El proyecto de Google Cloud en el que se alojará el servicio.

  • location

    La ubicación donde se encontrará el servicio. Por ejemplo, us-central1.

Consulta executionConfigs, en este artículo, para obtener descripciones de las propiedades del entorno de ejecución.

Para destinos de Anthos

La configuración de destino a fin de implementar en un clúster de Anthos es similar a la configuración de un objetivo para un destino de GKE, excepto que la propiedad es anthosCluster.membership, en lugar de gke.cluster, la ruta de recursos es diferente y internalIp no es aplicable.

anthosCluster:
  membership: projects/[project_name]/locations/global/memberships/[membership_name]
  • project_name

    El proyecto de Google Cloud en el que reside el clúster de Anthos.

  • /location/global/

    La ubicación en la que está registrado el clúster. global, en todos los casos.

  • membership_name

    El nombre de la membresía del clúster de Anthos.

Por ejemplo:

anthosCluster:
  membership: projects/cd-demo-01/locations/global/memberships/prod

Para obtener más información sobre la implementación en clústeres de Anthos, consulta Implementa en clústeres de usuario de Anthos.

executionConfigs

Un conjunto de campos a fin de especificar un entorno de ejecución no predeterminado para este destino.

  • usages

    RENDER o DEPLOY, o ambos, más VERIFY si la verificación está habilitada en el destino. Estas indican cuáles de esas operaciones se deben realizar para este destino con este entorno de ejecución. A fin de indicar que se debe usar un entorno de ejecución personalizado para el procesamiento, la implementación y la verificación, debes configurarlo de la siguiente manera:

    usages:
    - RENDER
    - DEPLOY
    - VERIFY
    

    Si la verificación está habilitada en la etapa de canalización y no especificas VERIFY en una estrofa usages, Google Cloud Deploy usa el entorno de ejecución predeterminado para la verificación. Sin embargo, si hay un entorno de ejecución personalizado para RENDER, DEPLOY o ambos, debes especificar uno para VERIFY.VERIFY puede estar en el mismo usages que RENDER o DEPLOY, o bien en el suyo.

    No puedes especificar usages.VERIFY, a menos que RENDER o DEPLOY o ambos estén especificados en un entorno de ejecución personalizado.

  • workerPool

    La configuración que usará el grupo de trabajadores. Esto toma una ruta de acceso de recursos que identifique el grupo de trabajadores de Cloud Build que se usará para este destino. Por ejemplo:

    projects/p123/locations/us-central1/workerPools/wp123

    Para usar el grupo predeterminado de Cloud Build, omite esta propiedad.

    Un objetivo determinado puede tener dos workerPool (uno para RENDER y otro para DEPLOY). Cuando configuras el grupo predeterminado, puedes especificar una cuenta de servicio alternativa o una ubicación de almacenamiento, o ambas.

  • serviceAccount

    El nombre de la cuenta de servicio que se usará en esta operación (RENDER o DEPLOY) para este destino.

  • artifactStorage

    El bucket de Cloud Storage que se usará en esta operación (RENDER o DEPLOY) para este destino, en lugar del bucket predeterminado.

  • executionTimeout

    Opcional. Establece el tiempo de espera, en segundos, de las operaciones que realiza Cloud Build para Google Cloud Deploy. Según la configuración predeterminada, es de 3600 segundos (1 hora).
    Ejemplo: executionTimeout: "5000s"

Sintaxis alternativa admitida

La configuración de executionConfigs que se describe en este documento es nueva. Aún se admite la sintaxis anterior:

executionConfigs:
- privatePool:
    workerPool:
    serviceAccount:
    artifactStorage:
  usages:
  - [RENDER | DEPLOY]
- defaultPool:
    serviceAccount:
    artifactStorage:
  usages:
  - [RENDER | DEPLOY]

¿Qué sigue?