Pipeline de livraison et configuration cible

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Le ou les fichiers de configuration Google Cloud Deploy définissent le pipeline de livraison, les cibles sur lesquelles déployer et la progression de ces cibles.

Le fichier de configuration du pipeline de livraison peut inclure des définitions de cibles, ou se trouver dans un ou plusieurs fichiers distincts. Par convention, un fichier contenant à la fois la configuration du pipeline de livraison et les configurations cibles s'appelle clouddeploy.yaml, tandis qu'une configuration de pipeline sans cibles s'appelle delivery-pipeline.yaml. Vous pouvez toutefois leur attribuer le nom de votre choix.

Configuration matérielle

Google Cloud Deploy utilise deux fichiers de configuration principaux:

Il peut s'agir de fichiers distincts, ou le pipeline de livraison et les cibles peuvent être configurés dans le même fichier.

Structure d'un fichier de configuration du pipeline de livraison

La configuration suivante inclut une définition de cible:

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:
multiTarget:
 targetIds: []
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:

---

Ce fichier YAML comprend deux composants principaux:

  • Le pipeline de livraison principal et sa progression

    Le fichier de configuration peut inclure un nombre illimité de définitions de pipeline.

  • Définitions des cibles

    Pour des raisons de simplicité, une seule cible est présentée dans cet exemple, mais il peut y en avoir plusieurs. Les cibles peuvent également être définies dans un ou plusieurs fichiers distincts.

Ces composants sont définis dans le reste de ce document.

Définition et progression du pipeline

Outre les métadonnées de pipeline, telles que name, la définition principale du pipeline inclut une liste de références à des cibles dans l'ordre de la séquence de déploiement. Autrement dit, la première cible répertoriée est la première cible de déploiement. Une fois que vous avez déployé sur cette cible, la promotion de la version est déployée sur la cible suivante de la liste.

Voici les propriétés de configuration d'un pipeline de livraison, à l'exclusion des définitions de cible.

metadata.name

Le champ name utilise une chaîne qui doit être unique pour chaque projet et emplacement.

metadata.annotations et metadata.labels

La configuration du pipeline de livraison peut inclure des annotations et des étiquettes. Les annotations et les étiquettes sont stockées avec la ressource de pipeline de livraison après l'enregistrement du pipeline.

Pour en savoir plus, consultez Utiliser des libellés et des annotations avec Google Cloud Deploy.

description

Chaîne arbitraire décrivant ce pipeline de livraison. Cette description est affichée dans les détails du pipeline de livraison dans Google Cloud Console.

suspended

Une valeur booléenne qui, si true suspend le pipeline de livraison, ne peut pas être utilisé pour créer, promouvoir, effectuer un rollback ou redéployer des versions. De plus, si le pipeline de livraison est suspendu, vous ne pouvez pas approuver ni rejeter un déploiement créé à partir de ce pipeline.

La valeur par défaut est false.

serialPipeline

Début de la définition d'un pipeline de livraison avec progression en série. Cette instance est obligatoire.

stages

Liste de toutes les cibles sur lesquelles ce pipeline de livraison est configuré pour être déployé.

La liste doit être dans l'ordre de la séquence de diffusion souhaitée. Par exemple, si vous avez des cibles appelées dev, staging et production, répertoriez-les dans le même ordre, de sorte que votre premier déploiement soit sur dev et votre déploiement final dans production.

Dans chaque champ stages.targetId, indiquez la valeur du champ metadata.name dans la définition cible correspondante. Sous targetId, ajoutez profiles:

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

targetId

Identifie la cible spécifique à utiliser pour cette étape du pipeline de livraison. La valeur est la propriété metadata.name de la définition de la cible.

strategy

Inclut les propriétés permettant de spécifier une stratégie de déploiement. La seule stratégie compatible est standard:.

Le paramètre strategy.standard.verify défini sur true active la validation du déploiement sur la cible. Si aucune stratégie de déploiement n'est spécifiée, la stratégie de déploiement standard est utilisée, avec la validation définie sur false. La configuration de pipeline de livraison suivante est valide:

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

verify

Booléen facultatif indiquant si la validation du déploiement est disponible ou non pour cette cible. La valeur par défaut est false.

L'activation de la validation du déploiement nécessite également un bloc verify dans skaffold.yaml. Si vous ne fournissez pas cette propriété, la tâche de validation échouera.

profiles

Prend une liste de zéro ou plusieurs noms de profil Skaffold, à partir de skaffold.yaml. Google Cloud Deploy utilise le profil avec skaffold render lors de la création de la version. Les profils Skaffold vous permettent de faire varier la configuration entre les cibles tout en utilisant un seul fichier de configuration.

Définitions des cibles

Le fichier de définition du pipeline de livraison peut contenir des définitions de cibles. Vous pouvez également spécifier des cibles dans un fichier distinct. Vous pouvez répéter les noms des cibles dans un projet, mais ils doivent être uniques dans un pipeline de livraison.

Vous pouvez réutiliser des cibles dans plusieurs pipelines de livraison. Toutefois, vous ne pouvez référencer une cible qu'une seule fois depuis la progression d'un seul pipeline de livraison.

Pour les cibles GKE

Le fichier YAML suivant montre comment configurer une cible qui se déploie sur un cluster GKE:

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     multiTarget:
      targetIds: []

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

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

metadata.name

Nom de la cible. Ce nom doit être unique.

metadata.annotations et metadata.labels

La configuration cible accepte les annotations Kubernetes et les libellés, mais Google Cloud Deploy ne les requiert pas.

Les annotations et les libellés sont stockés avec la ressource cible. Pour en savoir plus, consultez la page Utiliser des étiquettes et des annotations avec Google Cloud Deploy.

description

Ce champ utilise une chaîne arbitraire qui décrit l'utilisation de cette cible.

multiTarget.targetIds: []

Cette propriété est facultative et permet de configurer un multiobjectif à utiliser pour le déploiement parallèle.

La valeur est une liste de cibles enfants séparées par des virgules. Les cibles enfants sont configurées en tant que cibles normales et n'incluent pas cette propriété multiTarget.

requireApproval

Indique si la promotion sur cette cible nécessite une approbation manuelle. Il peut s'agir de true ou false.

Cette propriété est facultative. La valeur par défaut est false.

Lorsque vous configurez un déploiement parallèle, vous pouvez uniquement exiger une approbation sur la cible multicible, et non sur des cibles enfants.

gke

Pour les clusters GKE uniquement, le chemin d'accès à la ressource identifiant le cluster sur lequel votre application sera déployée:

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

    Projet Google Cloud dans lequel réside le cluster.

  • location

    Emplacement où réside le cluster. Par exemple, us-central1. Le cluster peut également être zonal (us-central1-c).

  • cluster_name

    Nom du cluster, tel qu'il apparaît dans votre liste de clusters dans Google Cloud Console.

Exemple :

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

Omettez la propriété gke lors de la configuration d'une cible multiple. Le cluster GKE est plutôt configuré dans la cible enfant correspondante.

Consultez la section executionConfigs de cet article pour obtenir une description des propriétés de l'environnement d'exécution.

internalIp

Indique si le cluster GKE spécifié utilise une adresse IP privée. Cette propriété est facultative. Par défaut, Google Cloud Deploy utilise l'adresse IP publique du cluster. S'il existe une adresse IP privée et que vous souhaitez l'utiliser, définissez-la sur true.

Pour les cibles Cloud Run

Le fichier YAML suivant montre comment configurer une cible qui se déploie sur un service Cloud Run:

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     multiTarget:
      targetIds: []

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

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

metadata.name

Nom de la cible. Ce nom doit être unique pour chaque région.

metadata.annotations et metadata.labels

La configuration cible accepte les annotations et les étiquettes, mais Google Cloud Deploy n'en a pas besoin.

Les annotations et les libellés sont stockés avec la ressource cible. Pour en savoir plus, consultez la page Utiliser des étiquettes et des annotations avec Google Cloud Deploy.

description

Ce champ utilise une chaîne arbitraire qui décrit l'utilisation de cette cible.

multiTarget.targetIds: []

Cette propriété est facultative et permet de configurer un multiobjectif à utiliser pour le déploiement parallèle.

La valeur est une liste de cibles enfants séparées par des virgules. Les cibles enfants sont configurées en tant que cibles normales et n'incluent pas cette propriété multiTarget.

requireApproval

Indique si la promotion sur cette cible nécessite une approbation manuelle. Il peut s'agir de true ou false.

Cette propriété est facultative. La valeur par défaut est false.

Lorsque vous configurez un déploiement parallèle, vous pouvez uniquement exiger une approbation sur la cible multicible, et non sur des cibles enfants.

run

Pour les services Cloud Run uniquement, l'emplacement où le service sera créé:

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

    Projet Google Cloud dans lequel le service sera déployé.

  • location

    Emplacement du service. Par exemple, us-central1.

Omettez la propriété run lors de la configuration d'une [multi-cible]. L'emplacement du service Cloud Run est configuré à la place dans la cible enfant correspondante.

Consultez la section executionConfigs de cet article pour obtenir une description des propriétés de l'environnement d'exécution.

Pour les cibles Anthos

La configuration cible du déploiement sur un cluster Anthos est semblable à la configuration d'une cible pour une cible GKE, à la différence que la propriété est anthosCluster.membership, au lieu de gke.cluster, le chemin d'accès à la ressource est différent, et internalIp n'est pas applicable.

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

    Projet Google Cloud dans lequel réside le cluster Anthos.

  • /location/global/

    Emplacement où le cluster est enregistré. global, dans tous les cas.

  • membership_name

    Nom de l'appartenance au cluster Anthos.

Exemple :

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

Omettez la propriété anthosCluster lors de la configuration d'une [multi-cible]. Le cluster Anthos est plutôt configuré dans la cible enfant correspondante.

Pour en savoir plus sur le déploiement sur les clusters Anthos, consultez la page Déployer sur des clusters d'utilisateur Anthos.

executionConfigs

Ensemble de champs permettant de spécifier un environnement d'exécution autre que celui par défaut pour cette cible.

  • usages

    RENDER, DEPLOY ou les deux, plus VERIFY si la validation est activée sur la cible. Celles-ci indiquent les opérations à effectuer pour cette cible à l'aide de cet environnement d'exécution. Pour indiquer qu'un environnement d'exécution personnalisé doit être utilisé à la fois pour le rendu, le déploiement et la validation, procédez comme suit:

    usages:
    - RENDER
    - DEPLOY
    - VERIFY
    

    Si la validation est activée à l'étape du pipeline et que vous ne spécifiez pas VERIFY dans une phase usages, Google Cloud Deploy utilise l'environnement d'exécution par défaut pour la validation. Toutefois, s'il existe un environnement d'exécution personnalisé pour RENDER, DEPLOY ou les deux, vous devez en spécifier un pour VERIFY.VERIFY peut se trouver dans le même usages que RENDER ou DEPLOY, ou dans son propre bucket.

    Vous ne pouvez pas spécifier usages.VERIFY, sauf si RENDER ou DEPLOY, ou les deux, sont spécifiés dans un environnement d'exécution personnalisé.

  • workerPool

    Configuration que le pool de nœuds de calcul doit utiliser. Cela prend un chemin de ressource identifiant le pool de nœuds de calcul Cloud Build à utiliser pour cette cible. Exemple :

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

    Pour utiliser le pool Cloud Build par défaut, omettez cette propriété.

    Une cible donnée peut avoir deux valeurs workerPool (une pour RENDER et une pour DEPLOY). Lorsque vous configurez le pool par défaut, vous pouvez spécifier un autre compte de service, un autre emplacement de stockage ou les deux.

  • serviceAccount

    Nom du compte de service à utiliser pour cette opération (RENDER ou DEPLOY) pour cette cible.

  • artifactStorage

    Bucket Cloud Storage à utiliser pour cette opération (RENDER ou DEPLOY) pour cette cible, au lieu du bucket par défaut.

  • executionTimeout

    Facultatif. Définit le délai avant expiration, en secondes, des opérations effectuées par Cloud Build pour Google Cloud Deploy. Par défaut, cette valeur est de 3600 secondes (1 heure).
    Exemple: executionTimeout: "5000s"

Autre syntaxe compatible

La configuration executionConfigs décrite dans ce document est nouvelle. La syntaxe précédente est toujours acceptée:

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

Lorsque vous configurez un bloc executionConfigs pour une multicible, chaque cible enfant peut hériter de cet environnement d'exécution de cette cible.

Étapes suivantes