Premiers pas avec Skaffold dans Google Cloud Deploy

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

Ce document explique comment utiliser Skaffold dans le cadre de Google Cloud Deploy, y compris:

  • Configurer Skaffold pour une utilisation avec un pipeline de livraison Google Cloud Deploy
  • Utilisation de Skaffold et Google Cloud Deploy avec des outils de rendu tiers, tels que Helm et Kustomize
  • (Facultatif) Utiliser Skaffold pour le développement local
  • (Facultatif) Utiliser Skaffold pour l'intégration et le déploiement continus (CI/CD)

Pourquoi Skaffold ?

Vous souhaitez savoir pourquoi Google Cloud Deploy utilise Skaffold et pourquoi vous devez gérer une configuration Skaffold ? Lisez la suite.

J'ai l'expérience du CI/CD, mais je n'utilise pas Skaffold

Skaffold est un outil de ligne de commande Open Source destiné à améliorer la productivité des développeurs. Il orchestre le développement continu, l'intégration continue (CI) et la livraison continue (CD).

Skaffold fournit une configuration portable déclarative et utilisant une architecture connectable vous permettant d'utiliser différents outils pour la phase de rendu.

Lorsqu'une version est créée, Google Cloud Deploy appelle Skaffold pour afficher vos fichiers manifestes. Au moment du déploiement, Google Cloud Deploy appelle à nouveau Skaffold pour appliquer ces fichiers manifestes afin de déployer votre application à chaque cible de votre progression. Après le déploiement, Skaffold effectue des vérifications de l'état afin de surveiller le bon déroulement de l'exécution cible.

Skaffold pour le développement continu

Lorsque vous utilisez Skaffold pour le développement continu, les images sont compilées, testées et déployées sur un cluster (ou Minikube) lorsque vous modifiez le code. Les extensions IDE Cloud Code pour VS Code et Cloud Code pour IntelliJ intègrent Skaffold aux IDE de Visual Studio Code et JetBrains pour un développement continu.

Skaffold pour la livraison continue

Vous pouvez également utiliser Skaffold pour la livraison continue, avec les étapes de compilation, de déploiement, de rendu et d’application. Google Cloud Deploy utilise les fonctionnalités d'affichage et d'application de Skaffold. Pour utiliser Google Cloud Deploy, vous devez disposer d'au moins un fichier de configuration skaffold.yaml valide.

Avec Skaffold, vous pouvez également intégrer des outils de gestion de fichiers manifestes tiers, tels que Helm et Kustomize. L'utilisation de Skaffold vous permet d'utiliser les fonctionnalités de ces outils pour afficher les fichiers manifestes. kubectl reste le déployeur de ces fichiers manifestes.

Je n'ai jamais déployé sur Kubernetes

Avec Skaffold, vous pouvez configurer un ensemble de fichiers manifeste de base pour tous vos déploiements. Vous pouvez ensuite utiliser le moteur de rendu de Skaffold via Google Cloud Deploy pour effectuer le rendu, puis déployer chaque fichier manifeste spécifique à un déploiement à partir de l'un de ces fichiers manifestes de base.

En savoir plus sur la gestion des fichiers manifestes, y compris des exemples d'utilisation de Skaffold et Google Cloud Deploy avec des outils de création de modèles courants, tels que Helm et Kustomize

Quels sont les éléments requis pour faire fonctionner Google Cloud Deploy ?

Pour que vous puissiez utiliser un pipeline de livraison Google Cloud Deploy de base, le fichier de configuration skaffold.yaml doit comporter au moins la configuration suivante:

  • Informations d'en-tête dont toutes les configurations skaffold.yaml ont besoin:

    apiVersion: skaffold/v2beta28
    Kind: Config
    
  • Un bloc deploy, avec deploy.kubectl, pour le déploiement sur GKE ou sur Anthos, ou deploy.cloudrun pour un déploiement sur Cloud Run.

    Pour GKE : yaml deploy: kubectl: manifests: - ...

    Dans le module manifests, liste de tous les fichiers manifestes bruts Kubernetes. Si vous prévoyez d'utiliser un moteur de rendu (tel que Helm ou Kustomize) pour effectuer le rendu des fichiers manifestes, reportez-vous aux pages Ajouter Kustomize à votre fichier skaffold.yaml et Ajouter la compatibilité Helm à votre fichier skaffold.yaml pour obtenir des conseils sur la configuration de Skaffold.

    Pour Cloud Run:

    metadata:
      name:
    manifests:
      rawYaml:
      - ...
    deploy:
      cloudrun: {}
    

Créer un fichier skaffold.yaml

Google Cloud Deploy utilise Skaffold pour le rendu et le déploiement de vos applications.

Vous devez au moins fournir un fichier skaffold.yaml identifiant les fichiers manifestes à utiliser. Exemple :

apiVersion: skaffold/v2beta28
kind: Config
deploy:
  kubectl:
    manifests:
      - MANIFEST

Dans cette configuration, MANIFEST correspond au chemin d'accès au ou aux fichiers manifestes à traiter par Skaffold.

Demandez à Google Cloud Deploy de générer votre skaffold.yaml

Si vous n'avez pas de fichier skaffold.yaml, mais que vous disposez d'un fichier manifeste Kubernetes ou d'un fichier de définition de service Cloud Run, Google Cloud Deploy peut générer un fichier skaffold.yaml à votre place .

Le fichier Skaffold généré sera disponible dans le répertoire de préproduction source de Cloud Storage une fois la version terminée.

La commande suivante inclut l'option --from-k8s-manifest qui transmet le fichier manifeste Kubernetes. Google Cloud Deploy utilise les informations du fichier manifeste pour générer le fichier skaffold.yaml, qui est ensuite utilisé pour la version.

gcloud deploy releases create  RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --from-k8s-manifest=MANIFEST --region=REGION

Pour générer la valeur skaffold.yaml à partir d'un fichier YAML de service Cloud Run, exécutez la même commande, mais avec --from-run-manifest au lieu de --from-k8s-manifest.

L'utilisation de l'une de ces options avec l'option --skaffold-file ou --source génère une erreur.

Utiliser le fichier skaffold.yaml généré

Le fichier skaffold.yaml généré convient à l'intégration, à l'apprentissage et à la démonstration de Google Cloud Deploy. Une fois familiarisé avec Google Cloud Deploy et pour les charges de travail de production, vous souhaiterez peut-être configurer une configuration Skaffold qui se différencie entre vos cibles (à l'aide des profils Skaffold).

Lorsque vous utilisez le fichier skaffold.yaml généré comme point de départ pour créer votre propre configuration Skaffold, assurez-vous de l'utiliser dans l'archive source du rendu, et non dans le fichier rendu. Vous pouvez télécharger la source de rendu à partir de l'onglet Artefacts de la page **Informations sur la version **.

  • Ce skaffold.yaml généré est inclus dans la source de rendu stockée dans un bucket Cloud Storage.

    Pour afficher ce fichier, téléchargez le fichier .tar.gz et extrayez-le.

  • Le rendu skaffold.yaml est disponible dans Cibler les artefacts.

    Dans la section Artefacts cibles, cliquez sur Afficher les artefacts.

    Page d'informations de la version affichant les artefacts source et cible du rendu

Utiliser Skaffold pour le développement local

L'un des points forts de Skaffold est que vous pouvez l'utiliser pour le développement local et pour la CI/CD. En mode dev, Skaffold surveille vos fichiers sources. S'il détecte une modification, Skaffold recompile les images, reteste et redéploie les conteneurs sur un cluster Minikube (par exemple, sur votre machine locale).

Lorsque vous utilisez Skaffold de cette manière, vous pouvez exécuter les mêmes commandes localement que pour un déploiement à distance.

Si vous utilisez Skaffold pour le développement local, vous pouvez définir des profils Skaffold distincts pour vos cibles et un cluster de déploiement par défaut pour le développement local.

Lorsque vous arrêtez le mode dev, Skaffold nettoie les artefacts déployés du cluster.

Utiliser Skaffold pour la CI/CD

En plus d'utiliser Skaffold pour les builds et les déploiements locaux en continu, vous pouvez utiliser Skaffold pour la CI/CD. Google Cloud Deploy utilise les fonctionnalités CI/CD de Skaffold pour afficher et appliquer vos fichiers manifestes, et déployer votre application sur vos cibles définies, à l'aide d'images de conteneurs créées à l'aide d'un outil de CI comme Cloud Build et d'un registre d'images tel que Artifact Registry.

Effectuer le rendu, déployer et appliquer

Skaffold sépare le processus de rendu du fichier manifeste du déploiement. Google Cloud Deploy appelle skaffold render pour afficher les fichiers manifestes, puis skaffold apply pour les appliquer à la cible.

Cette séparation entre le rendu et l'application vous permet de capturer l'état déclaratif complet de votre application en configuration, de sorte qu'elle puisse être appliquée de manière sûre et répétée (par exemple, pour les rollbacks). Cette technique facilite également les approbations. Comme les fichiers manifestes sont affichés pour toutes les cibles avant le premier déploiement, vous pouvez voir le fichier YAML rendu qui sera appliqué à chaque cible.

Google Cloud Deploy ne permet pas de déployer votre application à l'aide d'autres déployeurs. Toutefois, vous pouvez utiliser des outils tels que Helm ou Kustomize pour le rendu.

Pour en savoir plus sur le déploiement de Google Cloud Deploy avec kubectl comme déployeur, consultez la page Architecture du service Google Cloud Deploy.

À propos des profils Skaffold

Vous pouvez créer des profils Skaffold distincts, identifiés dans skaffold.yaml, dans un bloc profiles:.

Lorsque vous utilisez des profils Skaffold avec Google Cloud Deploy, vous pouvez créer des profils distincts pour toutes vos cibles, ou une partie. Par exemple, différents profils pour dev, staging et prod.

Les profils ne sont pas nécessaires pour utiliser Skaffold dans Google Cloud Deploy, mais ils permettent de définir des personnalisations de fichier manifeste pour vos cibles, par exemple en utilisant différents fichiers Kustomize kustomization.yaml par cible.

Ajoutez la prise en charge de Kustomize à votre skaffold.yaml

L'intégration de votre configuration Kustomize à votre configuration Google Cloud Deploy/Skaffold comprend les éléments suivants:

  1. Incluez un fichier kustomization.yaml dans vos fichiers de configuration.

    Vous pouvez stocker vos fichiers de configuration dans un répertoire local ou dans un bucket Cloud Storage.

  2. Dans votre fichier skaffold.yaml, créez un bloc deploy pour chaque profil.

    Vous pouvez également disposer d'un bloc deploy en dehors d'un profil défini, si vous n'utilisez pas de profils ou pour une configuration de déploiement par défaut qui n'est associée à aucun profil. Exemple :

    apiVersion: skaffold/v2beta28
    kind: Config
    build:
      artifacts:
        - image: leeroy-web-profiles
          context: leeroy-web-profiles
        - image: leeroy-app-profiles
          context: leeroy-app-profiles
      googleCloudBuild:
        projectId: ${PROJECT_ID}
    profiles:
    - name: local
      deploy:
        kustomize:
          paths:
            - leeroy-app-profiles/kubernetes/local
    - name: test
      deploy:
        kustomize:
          paths:
            - leeroy-app-profiles/kubernetes/test
    - name: staging
      deploy:
        kustomize:
          paths:
            - leeroy-app-profiles/kubernetes/staging
    - name: prod
      deploy:
        kustomize:
          paths:
            - leeroy-app-profiles/kubernetes/prod
    

    La configuration Skaffold présentée ici comporte des profils distincts pour les cibles test, staging et prod. Il affiche également un profil de développement local. Chaque profil contient une strophe deploy.kustomize avec un chemin d'accès qui pointe vers l'emplacement de la kustomisation à utiliser pour cette cible.

Ajouter la compatibilité Helm à votre skaffold.yaml

Vous pouvez utiliser Helm pour afficher vos fichiers manifestes. Google Cloud Deploy n'utilise pas Helm pour déployer vos applications, et accepte uniquement kubectl en tant que déployeur.

Pour utiliser Helm, vous avez besoin de votre ou de vos charts Helm, qui sont stockés dans tous les emplacements auxquels vous pouvez faire référence depuis votre fichier skaffold.yaml. Cet emplacement peut se trouver dans un système de fichiers, un dépôt, éventuellement avec votre skaffold.yaml, ou un dépôt Open Container Initiative (OCI).

Pour utiliser un graphique Helm, vous ajoutez un bloc helm à votre fichier skaffold.yaml.

apiVersion: skaffold/v2beta28
kind: Config
build:
  artifacts:
  - image: skaffold-helm-image
deploy:
  helm:
    releases:
    - name: skaffold-helm-image
      chartPath: charts

La documentation de référence sur skaffold.yaml indique les éléments requis dans cette phase helm.

Utiliser Kpt avec Skaffold

Nous vous recommandons de ne pas utiliser kpt avec Skaffold V1 dans Google Cloud Deploy.

Fonctionnalités Skaffold non compatibles

Les fonctionnalités suivantes de Skaffold ne peuvent pas être utilisées dans Google Cloud Deploy:

Étapes suivantes

  • Consultez le site Skaffold pour découvrir son fonctionnement et ses avantages.

  • Entraînez-vous à utiliser Google Cloud Deploy avec des profils Kustomize et Skaffold.

  • Découvrez comment Google Cloud Deploy sélectionne la version de Skaffold à utiliser, quand la version de Skaffold change et comment déterminer quelle version est utilisée.

  • Découvrez comment utiliser les profils Skaffold avec des outils avancés de gestion des fichiers manifestes tels que Helm, Kustomize et Kpt.