Pipeline de livraison et configuration cible

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

Les fichiers de configuration Google Cloud Deploy définissent le pipeline de livraison, les cibles sur lesquelles effectuer le déploiement 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 est appelé clouddeploy.yaml, tandis qu'une configuration de pipeline sans cibles est nommée delivery-pipeline.yaml. Toutefois, vous pouvez leur donner 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:
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:

  • Pipeline de livraison principal et progression

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

  • Définitions des cibles

    Pour des raisons de simplicité, cet exemple ne comporte qu'une seule cible, 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 la suite 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 séquentiel des déploiements. 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.

Vous trouverez ci-dessous les propriétés de configuration d'un pipeline de livraison, y compris les définitions des cibles.

metadata.name

Le champ name accepte 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. Une fois le pipeline enregistré, les annotations et les étiquettes sont stockées avec la ressource du pipeline de livraison.

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 s'affiche dans les détails du pipeline de livraison de Google Cloud Console.

suspended

Booléen qui, si true suspend le pipeline de livraison, de sorte qu'il ne puisse 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 à progression en série Ce champ est obligatoire.

stages

Liste de toutes les cibles dans 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 afin que votre premier déploiement soit sur dev et que votre déploiement final soit dans production.

Dans chaque champ stages.targetId, indiquez la valeur du champ metadata.name dans la définition de la 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 cible.

strategy

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

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 et la validation est 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 ou non disponible 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 le fichier skaffold.yaml. Si vous ne fournissez pas cette propriété, la tâche de vérification échouera.

profiles

Prend une liste de noms de profil Skaffold ou plus, à 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, ou vous pouvez 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. Cependant, vous ne pouvez référencer une cible qu'une seule fois dans 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:
     requireApproval:
     gke:
      cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
      internalIp:

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

metadata.name

Nom de cette 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 décrivant l'utilisation de cette cible.

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.

gke

Pour les clusters GKE uniquement, le chemin de ressource identifiant le cluster dans 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 du 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

Pour obtenir une description des propriétés de l'environnement d'exécution, consultez la section executionConfigs.

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:
     requireApproval:
     run:
      location: projects/[project_name]/locations/[location]

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

metadata.name

Nom de cette 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 décrivant l'utilisation de cette cible.

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.

run

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

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

    Projet Google Cloud dans lequel le service sera hébergé.

  • location

    Emplacement du service. Par exemple, us-central1.

Pour obtenir une description des propriétés de l'environnement d'exécution, consultez la section executionConfigs.

Pour les cibles Anthos

La configuration cible du déploiement sur un cluster Anthos est semblable à celle d'une cible pour une cible GKE, à ceci près que la propriété est anthosCluster.membership, au lieu de gke.cluster, que le chemin d'accès à la ressource est différent et que 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 d'enregistrement du cluster. 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

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 par défaut pour cette cible.

  • usages

    RENDER ou DEPLOY, voire les deux, plus VERIFY si la validation est activée sur la cible. Ils 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 l'affichage, le déploiement et la validation, procédez comme suit:

    usages:
    - RENDER
    - DEPLOY
    - VERIFY
    

    Si la validation est activée dans l'étape du pipeline et que vous ne spécifiez pas VERIFY dans une partie 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 élément usages que RENDER ou DEPLOY, ou dans son propre cas.

    Vous ne pouvez pas spécifier usages.VERIFY, sauf si RENDER, 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. Il s'agit d'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 éléments workerPool (un pour RENDER et un 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, il s'agit 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]

Étapes suivantes