Configuration du pipeline de livraison

Le fichier de configuration de pipeline définit le pipeline de diffusion Google Cloud Deploy, les cibles vers lesquelles effectuer le déploiement, ainsi que la progression de ces cibles.

Structure d'un fichier de configuration de pipeline de diffusion

Le principal fichier de configuration de Google Cloud Deploy correspond à la configuration du pipeline de diffusion.

Ce fichier peut inclure des définitions de cibles ou des fichiers distincts. Par convention, un fichier contenant à la fois la configuration du pipeline de diffusion et les configurations cibles est appelé clouddeploy.yaml, et une configuration de pipeline sans cible est appelée delivery-pipeline.yaml. Mais vous donnez à ces fichiers le nom de votre choix.

La configuration suivante inclut la définition de la cible:

    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]

     ---

Ce code YAML comporte deux composants principaux:

  • Pipeline de diffusion 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é, une seule cible est affichée dans cet exemple, mais il peut y avoir un nombre quelconque de cibles. En outre, les cibles peuvent être définies dans un ou plusieurs fichiers distincts.

Ces composants sont définis dans la suite de ce document.

Définition et progression des pipelines

Outre les métadonnées de pipeline, telles que name, la définition principale du pipeline inclut la liste de toutes les cibles dans l'ordre des séquences 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é cette cible et promu la version, Google Cloud Deploy la déploie sur la cible suivante de la liste.

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 diffusion peut inclure des annotations et des libellés. Les annotations et les libellés sont stockés avec la ressource de pipeline de diffusion après l'enregistrement du pipeline.

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

description

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

stages

Liste de toutes les cibles sur lesquelles ce pipeline de diffusion est configuré pour le déploiement.

La liste doit être dans l'ordre de la séquence de livraison 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 dans dev, et votre déploiement final dans production.

Remplissez chaque champ stages.targetId avec la valeur du champ metadata.name dans la définition cible correspondante. Et sous targetId, incluez profiles:

serialPipeline:
 stages:
 - targetId:
   profiles: []

targetId:

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

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 diffusion peut contenir des définitions cibles ou vous pouvez spécifier des cibles dans un fichier distinct. Vous pouvez répéter les noms de cibles dans un projet, mais ils doivent être uniques dans un pipeline de diffusion.

Vous pouvez réutiliser des cibles entre plusieurs pipelines de diffusion. Cependant, vous ne pouvez référencer une cible qu'une seule fois à partir de la progression d'un seul pipeline de diffusion.

     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

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 libellés et des annotations avec Google Cloud Deploy.

description

Ce champ utilise une chaîne arbitraire qui décrit 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

Chemin d'accès à la ressource identifiant le cluster sur lequel votre application est 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ù se trouve 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 la liste des clusters dans Google Cloud Console.

Exemple :

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

executionConfigs

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

  • privatePool | defaultPool

    Configuration du pool de nœuds de calcul à utiliser, qu'il s'agisse d'un pool privé ou du pool par défaut. Une cible donnée peut avoir les deux (une pour RENDER et une pour DEPLOY). Lors de la configuration d'un defaultPool, vous pouvez spécifier un autre compte de service ou un autre emplacement de stockage, ou les deux.

    • workerPool

      Un chemin d'accès à la ressource identifiant le pool de nœuds de calcul privé Cloud Build à utiliser pour cette cible. Exemple :

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

      Omettez cette propriété si vous configurez le compte de service ou le stockage pour defaultPool. Cette propriété est requise pour privatePool et est omise pour defaultPool.

    • serviceAccount

      Nom du compte de service à utiliser pour cette opération pour cette cible.

    • artifactStorage

      Bucket Cloud Storage à utiliser au lieu du bucket par défaut pour cette opération pour cette cible.

  • usages

    RENDER ou DEPLOY, ou les deux, indiquant 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 et le déploiement, vous devez le configurer comme suit:

    usages:
    - RENDER
    - DEPLOY
    

Étape suivante