Configuración de la canalización de entrega

El archivo de configuración de la canalización define la canalización de entrega de Google Cloud Deploy, los objetivos para implementar y el progreso de esos objetivos.

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

El archivo de configuración principal para Google Cloud Deploy es la configuración de la canalización de entrega.

Este archivo puede incluir definiciones de destino o puede estar en un archivo o archivos separados. Por convención, un archivo que contiene la configuración de la canalización de entrega y las configuraciones de destino se llama clouddeploy.yaml y una configuración de canalización sin destinos se llama delivery-pipeline.yaml. Pero puedes asignar estos nombres a estos archivos.

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

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

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

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

     ---

Este YAML tiene dos componentes principales:

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

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

  • Las definiciones de destino

    Para simplificar, solo se muestra un objetivo en este ejemplo, pero puede haber cualquier cantidad. Además, los destinos se pueden definir en un archivo o 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 canalización, como name, la definición de canalización principal incluye una lista de todos los objetivos en el orden de la secuencia de implementación. Es decir, el primer destino enumerado es el primer destino de implementación. Después de implementar en ese destino y promover la versión, Google Cloud Deploy se implementa en el siguiente destino de la lista.

metadata.name

En el campo name, se toma una string que debe ser única por 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 la canalización se registra.

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.

stages

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

La lista debe estar en el orden de la secuencia de entrega que deseas. Por ejemplo, si tienes objetivos llamados dev, staging y production, enuméralos en ese mismo orden para que tu primera implementación sea 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. Y en targetId, incluye profiles:

serialPipeline:
 stages:
 - targetId:
   profiles: []

targetId:

Identifica el objetivo específico para esta etapa de la canalización de entrega. El valor es la propiedad metadata.name de la definición de destino.

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 los destinos con un solo archivo de configuración.

Definiciones de destino

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

Puedes volver a usar objetivos entre varias canalizaciones de entrega. Sin embargo, solo puedes hacer referencia a un objetivo una vez desde el progreso de una sola canalización de entrega.

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

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

metadata.name

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 objetivo.

requireApproval

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

Esta propiedad es opcional. El valor predeterminado es false.

gke

La ruta del recurso que identifica el clúster en el que se implementa 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 se encuentra el clúster. Por ejemplo, us-central1. El clúster también puede ser zonal (us-central1-c).

  • cluster_name

    Es 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

executionConfigs

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

  • privatePool | defaultPool

    La configuración del grupo de trabajadores que se usará, ya sea privado o predeterminado. Un destino determinado puede tener ambos (uno para RENDER y otro para DEPLOY). Cuando configuras un defaultPool, puedes especificar una cuenta de servicio o una ubicación de almacenamiento alternativa o ambas.

    • workerPool

      Una ruta de acceso de recursos que identifica el grupo de trabajadores privados de Cloud Build para usar en este destino. Por ejemplo:

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

      Omite esta propiedad si estás configurando una cuenta de servicio o el almacenamiento para defaultPool. Esta propiedad es obligatoria para privatePool y se omite para defaultPool.

    • serviceAccount

      El nombre de la cuenta de servicio que se usará para esta operación en este destino.

    • artifactStorage

      El bucket de Cloud Storage que se usará, en lugar del bucket predeterminado, para esta operación de destino.

  • usages

    RENDER o DEPLOY, o ambos, que indican cuáles de esas operaciones se realizarán para este destino mediante este entorno de ejecución. A fin de indicar que se usará un entorno de ejecución personalizado para el procesamiento y la implementación, debes configurarlo de la siguiente manera:

    usages:
    - RENDER
    - DEPLOY
    

¿Qué sigue?