Gérer des fichiers manifestes dans Google Cloud Deploy

Cette page explique comment configurer Google Cloud Deploy pour afficher la configuration de chaque cible dans un pipeline de diffusion.

Google Cloud Deploy utilise Skaffold pour afficher vos fichiers manifestes Kubernetes. Le service accepte le rendu des fichiers manifestes bruts et des outils de gestion des fichiers manifestes plus avancés, tels que Helm, Kustomize et kpt.

Le processus de rendu comporte deux étapes:

  1. L'outil de gestion des fichiers manifestes génère le fichier manifeste.

  2. Skaffold remplace les références d'images du fichier manifeste par les images que vous souhaitez déployer dans votre version.

Cette page présente des exemples de configuration avec Helm et Kustomize.

Utiliser Skaffold pour générer votre configuration

Si vous ne possédez pas déjà de fichier de configuration Skaffold (skaffold.yaml), vous pouvez l'utiliser pour en générer un automatiquement, en fonction du contenu de votre dépôt.

  1. Installez Skaffold à l'aide du SDK Cloud:

    gcloud components install skaffold

  2. Exécutez skaffold init dans le dépôt contenant vos fichiers manifestes:

    skaffold init --skip-build

Cette commande crée un fichier skaffold.yaml dans votre dépôt. Ce fichier fait référence aux fichiers manifestes de ce dépôt. Le contenu ressemble à ceci:

apiVersion: skaffold/v2beta15
kind: Config
metadata:
 name: sample-app
deploy:
 kubectl:
   manifests:
   - k8s-manifests/deployment.yaml
   - k8s-manifests/rbac.yaml
   - k8s-manifests/redis.yaml
   - k8s-manifests/service.yaml

Effectuer le rendu des fichiers manifestes bruts

Les fichiers manifestes bruts sont des fichiers manifestes qui ne sont pas gérés par un outil tel que Helm ou Kustomize. Ils ne nécessitent donc aucun prétraitement avant d'être hydratés et déployés sur un cluster.

Par défaut, Google Cloud Deploy utilise skaffold render pour afficher vos fichiers manifestes Kubernetes, en remplaçant les noms d'images non taguées par les noms d'images taguées des images de conteneurs que vous déployez. Ensuite, lorsque vous promouvez la version, Google Cloud Deploy utilise skaffold apply pour appliquer les fichiers manifestes et déployer les images sur votre cluster Google Kubernetes Engine.

Un stanza deploy d'une configuration de base ressemble à ceci:

deploy:
  kubectl:
    manifests:
      - PATH_TO_MANIFEST

Consultez la documentation Skaffold pour en savoir plus sur les valeurs pouvant être transmises ici.

Effectuer le rendu à l'aide de Helm

Vous pouvez afficher vos graphiques Helm à l'aide de Google Cloud Deploy. Pour ce faire, incluez les détails du graphique Helm dans un stanza deploy dans un profil Skaffold.

Voici à quoi ressemble une telle définition:

apiVersion: skaffold/v2beta16
kind: Config
deploy:
 helm:
   releases:
     - name: RELEASE_NAME
       chartPath: PATH_TO_HELM_CHART
       artifactOverrides:
         image: IMAGE_NAME

Où :

RELEASE_NAME est le nom de l'instance de graphique Helm pour cette version.

PATH_TO_HELM_CHART est le chemin d'accès local à un graphique Helm empaqueté ou à un répertoire de graphique Helm décompressé.

IMAGE_NAME est le nom de l'image de conteneur que vous déployez.

Votre graphique Helm doit avoir une valeur image qui définit l'image à déployer dans le graphique.

Vous pouvez utiliser des options de configuration Helm supplémentaires, comme décrit dans la documentation Skaffold.

Rendu à l'aide de Kustomize

Vous pouvez utiliser Kustomize avec Google Cloud Deploy. Pour ce faire, placez le curseur sur les fichiers Kustomization à partir du stanza deploy dans la configuration de votre profil skaffold.yaml.

Vous devez inclure une configuration Kustomize distincte pour chaque cible pour laquelle vous utilisez Kustomize, sous chaque profile correspondant dans votre skaffold.yaml.

Voici à quoi ressemble une telle définition:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started-kustomize
deploy:
 kustomize:
   paths:
     - PATH_TO_KUSTOMIZE

Où :

PATH_TO_KUSTOMIZE pointe vers vos fichiers Kustomization. La valeur par défaut est ["."].

Vous pouvez utiliser des options de configuration Kustomize supplémentaires, comme décrit dans la documentation de Skaffold.

Configurer différents fichiers manifestes par cible

Chaque cible nécessite souvent une configuration légèrement différente. Par exemple, vous pouvez avoir plus d'instances dupliquées dans vos déploiements de production que dans vos déploiements de préproduction.

Vous pouvez afficher un ensemble de fichiers manifestes différent pour chaque cible en fournissant chaque variante sous la forme d'un profil Skaffold différent.

Profils avec fichiers manifestes bruts

Lorsque vous utilisez des fichiers manifestes bruts, vous pouvez diriger Google Cloud Deploy vers un fichier différent, en fonction de la cible. Vous pouvez configurer cela comme suit:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started-kustomize
profiles:
 - name: prod
   deploy:
     kubectl:
       manifests:
         - prod.yaml
 - name: staging
   deploy:
     kubectl:
       manifests:
         - staging.yaml

Profils avec Kustomize

Voici un exemple de skaffold.yaml comportant différents profils de préproduction et de production à l'aide de Kustomize, où chaque profil pointe vers un fichier Kustomization différent:

apiVersion: skaffold/v2beta16
kind: Config
profiles:
 - name: prod
   deploy:
     kustomize:
       paths:
         - environments/prod
 - name: staging
   deploy:
     kustomize:
       paths:
         - environments/staging

Profils référencés dans le pipeline de diffusion

Ces profils, définis dans skaffold.yaml, sont référencés dans la configuration du pipeline de diffusion par cible:

serialPipeline:
 stages:
 - targetId: staging-target
   profiles:
   - staging
 - targetId: prod-target
   profiles:
   - prod

Étape suivante