Développer et déployer des applications avec Cloud Code, Cloud Build, Google Cloud Deploy et GKE.

Date d'actualisation : 18/11/2022

Ce tutoriel explique comment configurer et utiliser un système de développement, d'intégration continue (CI) et de livraison continue (CD) grâce à un ensemble intégré d'outils Google Cloud. Vous pouvez utiliser ce système pour développer et déployer des applications sur Google Kubernetes Engine (GKE).

Ce tutoriel est destiné à la fois aux développeurs logiciels et aux opérateurs, et vous pouvez jouer ces deux rôles au fur et à mesure que vous avancez dans le tutoriel. Vous agirez d'abord en tant qu'opérateur pour configurer le pipeline CI/CD. Les principaux composants de ce pipeline sont Cloud Build, Artifact Registry et Google Cloud Deploy.

Vous agirez ensuite en tant que développeur pour modifier une application en utilisant Cloud Code. En agissant en tant que développeur, vous pourrez témoigner de l'expérience intégrée fournie par ce pipeline.

Enfin, vous agirez à nouveau en tant qu'opérateur afin de suivre les étapes permettant de déployer une application en production.

Dans ce tutoriel, nous partons du principe que vous savez exécuter des commandes gcloud sur Google Cloud et déployer des conteneurs d'applications sur GKE.

Voici les principales fonctionnalités de ce système intégré :

  • Développer et déployer des applications plus rapidement.

    La boucle de développement est efficace, car vous pouvez valider les modifications dans l'espace de travail du développeur. Le déploiement est rapide, car le système CI/CD automatisé et la parité des différents environnements vous permettent de détecter plus de problèmes lorsque vous déployez des modifications en production.

  • Bénéficier d'une parité accrue entre le développement, la préproduction et la production.

    Les composants de ce système utilisent un ensemble commun d'outils Google Cloud.

  • Réutiliser des configurations dans les différents environnements.

    Cette réutilisation est effectuée avec Skaffold, qui permet d'utiliser un format de configuration commun pour différents environnements. Il permet également aux développeurs et aux opérateurs de mettre à jour et d'utiliser la même configuration.

  • Appliquer la gouvernance dès le début du workflow.

    Ce système applique des tests de validation pour la gouvernance en production ainsi que dans le système CI et l'environnement de développement. L'application de la gouvernance dans l'environnement de développement permet d'identifier et de résoudre les problèmes plus tôt.

  • Laissez des outils avisés gérer pour vous la livraison logicielle.

    La livraison continue est entièrement gérée, en séparant les étapes de votre pipeline CD des détails de rendu et de déploiement.

Présentation de l'architecture

Le schéma suivant montre les ressources utilisées dans ce tutoriel :

Développer et déployer un système avec Cloud Code, Cloud Build, Artifact Registry, Google Cloud Deploy et GKE

Les trois principaux composants de ce pipeline sont les suivants :

  1. Cloud Code en tant qu'espace de travail de développement

    Dans le cadre de cet espace de travail, vous pouvez voir les modifications apportées au cluster de développement, qui s'exécute sur minikube. Vous exécutez Cloud Code et le cluster Minikube dans Cloud Shell. Cloud Shell est un environnement de développement en ligne accessible depuis votre navigateur. Il dispose de ressources de calcul, de mémoire, d'un environnement de développement intégré (IDE) et de Cloud Code.

  2. Cloud Build, pour la création et le test de l'application (la partie "CI" du pipeline)

    Cette partie du pipeline comprend les actions suivantes :

    • Cloud Build surveille les modifications apportées au dépôt source à l'aide d'un déclencheur Cloud Build.
    • Lorsqu'une modification est validée dans la branche principale, le déclencheur Cloud Build effectue les opérations suivantes :
      • Recompile le conteneur d'applications.
      • Place des artefacts de build dans un bucket Cloud Storage.
      • Place le conteneur d'applications dans Artifact Registry.
      • Exécute des tests sur le conteneur.
      • Il appelle Google Cloud Deploy pour déployer le conteneur dans l'environnement de préproduction. Dans ce tutoriel, l'environnement de préproduction est un cluster Google Kubernetes Engine.
    • Si la compilation et les tests sont réussis, vous pouvez utiliser Google Cloud Deploy pour promouvoir le conteneur de la préproduction à la production.
  3. Google Cloud Deploy pour gérer le déploiement : la partie "CD" du pipeline

    Dans cette partie du pipeline, Google Cloud Deploy effectue les opérations suivantes :

    • Enregistre un pipeline de diffusion et des cibles. Les cibles représentent les clusters de préproduction et de production.
    • Crée un bucket Cloud Storage et stocke la source de rendu Skaffold et les fichiers manifestes rendus dans ce bucket.
    • Génère une nouvelle version pour chaque modification du code source. Ce tutoriel compte une modification, ce qui implique une nouvelle version.
    • Déploie l'application dans l'environnement de production. Pour ce déploiement en production, un opérateur (ou une autre personne désignée) approuve manuellement le déploiement. Dans ce tutoriel, l'environnement de production est un cluster Google Kubernetes Engine.

Facilitant le développement continu pour les applications Kubernetes natives, Skaffold est un outil de ligne de commande qui sous-tend ces composants et permet de partager une même configuration entre les environnements de développement, préproduction et production.

Google Cloud stocke le code source de l'application dans GitHub et, dans le cadre de ce tutoriel, vous clonez ce dépôt dans Cloud Source Repositories pour le connecter au pipeline CI/CD.

Ce tutoriel utilise les produits Google Cloud pour la plupart des composants du système, et Skaffold pour permettre l'intégration du système. Skaffold étant une solution Open Source, vous pouvez appliquer ces principes pour créer un système similaire en combinant des composants Google Cloud avec des composants tiers ou développés en interne. La modularité de cette solution signifie que vous pouvez l'adopter de manière incrémentielle dans le cadre de votre pipeline de développement et de déploiement.

Objectifs

En tant qu'opérateur, vous devez effectuer les actions suivantes :

  • Configurer le pipeline CI et le pipeline CD. Cette configuration comprend les éléments suivants :
    • Configurer les autorisations requises.
    • Créer les clusters GKE pour les environnements de préproduction et de production.
    • Créer un dépôt dans Cloud Source Repositories pour le code source.
    • Créer un dépôt dans Artifact Registry pour le conteneur d'applications.
    • Créer un déclencheur Cloud Build sur le dépôt GitHub principal.
    • Créer un pipeline de diffusion et des cibles Google Cloud Deploy Les cibles sont l'environnement de préproduction et l'environnement de production.
  • Démarrer le processus CI/CD pour le déployer en préproduction, puis passez-le en production.

En tant que développeur, vous apportez des modifications à l'application. Pour ce faire, vous devrez effectuer les actions suivantes :

  • Cloner le dépôt pour travailler avec un environnement de développement préconfiguré.
  • Apporter une modification à l'application dans votre espace de travail de développement.
  • Compiler et tester la modification. Les tests incluent un test de validation de gouvernance.
  • Afficher et valider la modification dans un cluster de développement. Ce cluster s'exécute sur Minikube.
  • Effectuer un commit de la modification dans le dépôt principal.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  3. Activer les API Artifact Registry, Cloud Build, Google Cloud Deploy, Cloud Source Repositories, Google Kubernetes Engine, Resource Manager, and Service Networking.

    Activer les API

  4. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

Préparer votre environnement

Dans cette section, vous agissez en tant qu'opérateur d'application et effectuez les opérations suivantes :

  • Configurer les autorisations requises.
  • Créer les clusters GKE pour les environnements de préproduction et de production.
  • Cloner le dépôt source.
  • Créer un dépôt dans Cloud Source Repositories pour le code source.
  • Créer un dépôt dans Artifact Registry pour l'application de conteneurs.

Configurer les autorisations

Dans cette section, vous accordez les autorisations nécessaires pour configurer le pipeline CI/CD.

  1. Si vous utilisez une nouvelle instance de l'éditeur Cloud Shell, spécifiez le projet à utiliser pour ce tutoriel :

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID du projet que vous avez sélectionné ou créé pour ce tutoriel.

    Si une boîte de dialogue s'affiche, cliquez sur Autoriser.

  2. Accordez les autorisations nécessaires aux comptes de service :

    1. Assurez-vous que le compte de service Compute Engine par défaut dispose des autorisations suffisantes pour exécuter des tâches dans Google Cloud Deploy et extraire des conteneurs à partir d'Artifact Registry. Cloud Build et Google Cloud Deploy utilisent ce compte de service par défaut.

      Ce compte de service dispose peut-être déjà des autorisations nécessaires. Cette étape garantit que les autorisations nécessaires sont accordées pour les projets qui désactivent l'attribution automatique de rôles pour les comptes de service par défaut.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/clouddeploy.jobRunner"
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/artifactregistry.reader"
      
    2. Accordez au compte de service Cloud Build le droit d'appeler les déploiements avec Google Cloud Deploy, et de mettre à jour le pipeline de diffusion et les définitions cibles :

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")@cloudbuild.gserviceaccount.com \
          --role="roles/clouddeploy.operator"
      

      Pour en savoir plus sur ce rôle IAM, consultez le rôle clouddeploy.operator.

    3. Accordez au compte de service Cloud Build et Google Cloud Deploy le droit de déployer sur GKE :

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/container.admin"
      

      Pour en savoir plus sur ce rôle IAM, consultez le rôle container.admin.

    4. Accordez au compte de service Cloud Build les autorisations nécessaires pour appeler les opérations Google Cloud Deploy :

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")@cloudbuild.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser"
      

      Lorsque Cloud Build appelle Google Cloud Deploy, il utilise un compte de service Compute Engine pour créer une version. C'est pourquoi cette autorisation est nécessaire.

      Pour en savoir plus sur ce rôle IAM, consultez la documentation sur le rôle iam.serviceAccountUser.

Vous disposez maintenant des autorisations nécessaires pour le pipeline CI/CD.

Créer les clusters GKE

Dans cette section, vous allez créer les environnements de préproduction et de production, qui sont tous deux des clusters GKE. (Vous n'avez pas besoin de configurer le cluster de développement, car il utilise Minikube.)

  1. Créez les clusters GKE de préproduction et de production :

    gcloud container clusters create-auto staging \
        --region us-central1 \
        --project=$(gcloud config get-value project) \
        --async
    
    gcloud container clusters create-auto prod \
        --region us-central1 \
        --project=$(gcloud config get-value project) \
        --async
    

    Le cluster de préproduction est l'endroit où vous testez les modifications apportées à votre code. Après avoir vérifié que le déploiement en préproduction n'a pas eu d'impact négatif sur l'application, vous le déployez en production.

  2. Exécutez la commande suivante et assurez-vous que le résultat comporte STATUS: RUNNING pour les clusters de préproduction et de production :

    gcloud container clusters list
    
  3. Récupérez les identifiants dans vos fichiers kubeconfig pour les clusters de préproduction et de production.

    Ces identifiants vous permettent d'interagir avec les clusters GKE, par exemple pour vérifier si une application s'exécute correctement.

    gcloud container clusters get-credentials staging --region us-central1
    
    gcloud container clusters get-credentials prod --region us-central1
    

Vous venez de créer les clusters GKE pour l'environnement de préproduction et de production.

Ouvrir l'IDE et cloner le dépôt

Pour cloner le dépôt et afficher l'application dans votre environnement de développement, procédez comme suit :

  1. Clonez le dépôt et ouvrez-le dans Cloud Shell.

  2. Cliquez sur Confirmer.

    L'éditeur Cloud Shell s'ouvre et clone l'exemple de dépôt.

    Vous pouvez maintenant afficher le code de l'application dans votre éditeur Cloud Shell.

  3. Spécifiez le projet à utiliser pour ce tutoriel :

    gcloud config set project PROJECT_ID
    

    Si une boîte de dialogue s'affiche, cliquez sur Autoriser.

Vous disposez désormais du code source de l'application dans votre environnement de développement.

Ce dépôt source inclut les fichiers Cloud Build et Google Cloud Deploy nécessaires au pipeline CI/CD.

Créer des dépôts pour le code source et les conteneurs

Dans cette section, vous allez configurer un dépôt dans Cloud Source Repositories pour le code source et un dépôt dans Artifact Registry pour stocker les conteneurs créés par le pipeline CI/CD.

  1. Créez un dépôt dans Cloud Source Repositories pour stocker le code source et l'associer au processus CI/CD :

    gcloud source repos create cicd-sample
    
  2. Assurez-vous que les configurations Google Cloud Deploy ciblent le bon projet :

    sed -i s/project-id-placeholder/$(gcloud config get-value project)/g deploy/*
    git config --global credential.https://source.developers.google.com.helper gcloud.sh
    git remote add google https://source.developers.google.com/p/$(gcloud config get-value project)/r/cicd-sample
    
  3. Transférez votre code source vers le dépôt :

    git push --all google
    
  4. Créez un dépôt d'images dans Artifact Registry :

    gcloud artifacts repositories create cicd-sample-repo \
        --repository-format=Docker \
        --location us-central1
    

Vous disposez maintenant d'un dépôt pour le code source dans Cloud Source Repositories et d'un dépôt pour le conteneur d'applications dans Artifact Registry. Le dépôt Cloud Source Repositories vous permet de cloner le code source et de le connecter au pipeline CI/CD.

Configurer le pipeline CI/CD

Dans cette section, vous agissez en tant qu'opérateur d'application et vous configurez le pipeline CI/CD. Le pipeline utilise Cloud Build pour la CI et Google Cloud Deploy pour la CD. Les étapes du pipeline sont définies dans le déclencheur Cloud Build.

  1. Créez un bucket Cloud Storage pour que Cloud Build stocke le fichier artifacts.json (qui suit les artefacts générés par Skaffold pour chaque compilation) :

    gsutil mb gs://$(gcloud config get-value project)-gceme-artifacts/
    

    Le stockage du fichier artifacts.json de chaque compilation dans un emplacement central est une bonne pratique, car il fournit une traçabilité, ce qui facilite le dépannage.

  2. Examinez le fichier cloudbuild.yaml, qui définit le déclencheur Cloud Build et est déjà configuré dans le dépôt source que vous avez cloné.

    Ce fichier définit le déclencheur appelé à chaque nouveau transfert (push) vers la branche principale du dépôt de code source.

    Les étapes du pipeline CI/CD sont définies dans ce fichier :

    • Cloud Build utilise Skaffold pour créer le conteneur d'applications.

    • Cloud Build place le fichier artifacts.json de la compilation dans le bucket Cloud Storage.

    • Cloud Build place le conteneur d'applications dans Artifact Registry.

    • Cloud Build exécute des tests sur le conteneur d'applications.

    • La commande gcloud deploy apply enregistre les fichiers suivants auprès du service Google Cloud Deploy :

      • deploy/pipeline.yaml, qui est le pipeline de livraison.
      • deploy/staging.yaml et deploy/prod.yaml, qui sont les fichiers cibles.

        Une fois les fichiers enregistrés, Google Cloud Deploy crée le pipeline et les cibles si elles n'existent pas encore, ou les recrée si la configuration a été modifiée. Les cibles sont les environnements de préproduction et de production.

    • Google Cloud Deploy crée une version pour le pipeline de livraison.

      Cette version fait référence au conteneur d'applications créé et testé dans le processus CI.

    • Google Cloud Deploy déploie la version dans l'environnement de préproduction.

    Les pipelines et les cibles de diffusion sont gérés par Google Cloud Deploy et sont découplés du code source. Ce découplage signifie que vous n'avez pas besoin de mettre à jour le pipeline de livraison et les fichiers cibles lorsqu'une modification est apportée au code source de l'application.

  3. Créez le déclencheur Cloud Build :

    gcloud beta builds triggers create cloud-source-repositories \
        --name="cicd-sample-main" \
        --repo="cicd-sample" \
        --branch-pattern="main" \
        --build-config="cloudbuild.yaml"
    

    Ce déclencheur indique à Cloud Build de surveiller le dépôt source et d'utiliser le fichier cloudbuild.yaml pour réagir aux modifications apportées au dépôt. Ce déclencheur est appelé lors de chaque nouveau déploiement dans la branche principale.

  4. Accédez à Cloud Build et notez qu'il n'existe aucune compilation pour votre application.

Vous avez maintenant configuré les pipelines CI et CD, puis créé un déclencheur sur la branche principale du dépôt.

Modifier votre application depuis votre espace de travail de développeur

Dans cette section, vous agissez en tant que développeur d'applications.

Lorsque vous développez votre application, vous effectuez des vérifications itératives en utilisant Cloud Code comme espace de travail de développement :

  • Apportez une modification à l'application.
  • Créez et testez le nouveau code.
  • Déployez l'application sur le cluster Minikube et vérifiez les modifications impactant l'utilisateur.
  • Envoyez la modification vers le dépôt principal.

Une fois cette modification validée ("commit") dans le dépôt principal, le déclencheur Cloud Build démarre le pipeline CI/CD.

Créer, tester et exécuter l'application

Dans cette section, vous allez créer, tester, déployer et accéder à votre application.

Utilisez la même instance de l'éditeur Cloud Shell que celle utilisée dans la section précédente. Si vous avez fermé l'éditeur, ouvrez l'éditeur Cloud Shell dans votre navigateur en accédant à ide.cloud.google.com.

  1. Dans le terminal, démarrez Minikube :

    minikube start
    

    Minikube configure un cluster Kubernetes local dans Cloud Shell. Cette configuration prend quelques minutes. Une fois l'opération terminée, le processus Minikube s'exécute en arrière-plan sur l'instance Cloud Shell.

  2. Dans le volet situé au bas de l'éditeur Cloud Shell, sélectionnez Cloud Code.

  3. Dans le panneau fin qui s'affiche entre le terminal et l'éditeur, sélectionnez Exécuter sur Kubernetes.

    Si l'invite Use current context (minikube) to run the app? s'affiche, cliquez sur Oui.

    Cette commande compile le code source et exécute les tests. Cette opération peut prendre quelques minutes. Les tests incluent des tests unitaires ainsi qu'une étape de validation préconfigurée qui vérifie les règles définies pour l'environnement de déploiement. Cela vous permet d'être averti en cas de problème de déploiement, même lorsque vous travaillez toujours dans votre environnement de développement.

    L'onglet Résultat affiche la progression de Skaffold lors de la création et du déploiement de votre application.

    Laissez cet onglet ouvert tout au long de la présente section.

    Une fois la compilation et les tests terminés, l'onglet Résultat indique Update succeeded et affiche deux URL.

    Lorsque vous créez et testez votre application, Cloud Code renvoie les journaux et les URL dans l'onglet Résultat. Lorsque vous effectuez des modifications et exécutez des tests dans votre environnement de développement, vous pouvez consulter la version de l'application dans votre environnement de développement et vérifier qu'elle fonctionne correctement.

    Le résultat indique également Watching for changes..., ce qui signifie que le mode de surveillance est activé. Lorsque Cloud Code est en mode de surveillance, le service détecte les modifications enregistrées dans votre dépôt, puis recrée et redéploie automatiquement l'application avec les dernières modifications.

  4. Dans le terminal Cloud Code, placez le curseur sur la première URL du résultat (http://localhost:8080).

  5. Dans l'info-bulle qui s'affiche, sélectionnez Ouvrir l'aperçu sur le Web.

    En arrière-plan, Cloud Code transfère automatiquement le trafic vers le service cicd-sample exécuté sur Minikube.

  6. Dans votre navigateur, actualisez la page.

    Le nombre indiqué à côté de Compteur augmente, indiquant que l'application répond à votre actualisation.

    Dans votre navigateur, laissez cette page ouverte afin de pouvoir afficher l'application lorsque vous apportez des modifications dans votre environnement local.

Vous venez de créer et de tester votre application dans l'environnement de développement. Vous avez déployé l'application dans le cluster de développement exécuté sur Minikube et vous avez observé le comportement de l'application du point de vue de l'utilisateur.

Effectuer une modification

Dans cette section, vous allez modifier l'application et en afficher la version modifiée en l'exécutant dans le cluster de développement.

  1. Dans l'éditeur Cloud Shell, ouvrez le fichier index.html.

  2. Recherchez la chaîne Sample App Info et remplacez-la par sample app info, de sorte que le titre utilise désormais des lettres minuscules.

    Le fichier est automatiquement enregistré et une recompilation du conteneur d'applications est déclenchée.

    Cloud Code détecte la modification et effectue automatiquement un nouveau déploiement. L'onglet Résultat affiche Update initiated. L'exécution de ce nouveau déploiement prend quelques minutes.

    Cette fonctionnalité de redéploiement automatique est disponible pour toute application s'exécutant sur un cluster Kubernetes.

  3. Une fois la compilation terminée, accédez au navigateur dans lequel l'application est ouverte et actualisez la page.

    Lorsque vous actualisez, vérifiez que le texte s'affiche maintenant en lettres minuscules.

Cette configuration vous permet d'actualiser automatiquement l'architecture, quels qu'en soient les composants. Lorsque vous utilisez Cloud Code et Minikube, tous les composants exécutés dans Kubernetes disposent de cette fonctionnalité d'actualisation de code à chaud.

Vous pouvez déboguer des applications déployées sur un cluster Kubernetes dans Cloud Code. Ces étapes ne sont pas abordées dans le présent tutoriel. Pour en savoir plus, consultez la section Déboguer une application Kubernetes.

Effectuer un commit du code

Maintenant que vous avez modifié l'application, effectuez le commit du code :

  1. Configurez votre identité Git :

    git config --global user.email "YOU@EXAMPLE.COM"
    git config --global user.name "NAME"
    

    Remplacez les éléments suivants :

    • YOU@EXAMPLE.COM par l'adresse e-mail connectée à votre compte GitHub.
    • NAME par le nom associé à votre compte GitHub.
  2. À partir du terminal, effectuez le commit du code :

    git add .
    git commit -m "use lowercase for: sample app info"
    

    Vous n'avez pas besoin d'exécuter la commande git push ici. Cette étape intervient plus tard.

Dans l'environnement de développement, vous avez maintenant modifié l'application, compilé et testé la modification, puis vérifié le comportement des modifications pour vos utilisateurs. Les tests de l'environnement de développement incluent des vérifications de gouvernance qui permettent de résoudre des problèmes susceptibles de se manifester dans l'environnement de production.

Dans ce tutoriel, lorsque vous effectuez un commit du code dans le dépôt principal, aucun examen du code n'est mis en œuvre. Toutefois, l'examen ou l'approbation des modifications du code font partie des processus recommandés pour le développement logiciel.

Pour en savoir plus sur les bonnes pratiques d'approbation des changements, consultez la section Simplifier l'approbation des changements.

Déployer une modification en production

Dans cette section, vous agissez en tant qu'opérateur d'application et effectuez les opérations suivantes :

  • Déclencher le pipeline CI/CD afin de déployer la version dans l'environnement de préproduction.
  • Promouvoir et approuver la version en production.

Démarrer le pipeline CI/CD et le déployer en préproduction.

Dans cette section, vous allez démarrer le pipeline CI/CD en appelant le déclencheur Cloud Build. Ce déclencheur est appelé chaque fois qu'une modification est validée dans le dépôt principal. Vous pouvez également lancer le système CI avec un déclencheur manuel.

  1. Dans l'éditeur Cloud Shell, exécutez la commande suivante pour déclencher une compilation :

    git push google
    

    Cette compilation inclut la modification que vous avez apportée à cicd-sample.

  2. Revenez au tableau de bord Cloud Build et vérifiez qu'une compilation a bien été créée.

  3. Cliquez sur Running: cicd-sample - cicd-sample-main dans le journal de compilation situé à droite, puis recherchez le texte bleu indiquant le début et la fin de chaque étape.

    L'étape 0 affiche la sortie des instructions skaffold build et skaffold test du fichier cloudbuild.yaml. Les tâches de compilation et de test de l'étape 0 (la partie CI du pipeline) ont réussi. Les tâches de déploiement de l'étape 1 (la partie CD du pipeline) sont maintenant en cours d'exécution.

    Le message ci-dessous s'affiche une fois l'étape réussie :

    Created Google Cloud Deploy rollout ROLLOUT_NAME in target staging

  4. Ouvrez la page Pipelines de diffusion Google Cloud, puis cliquez sur le pipeline cicd-sample delivery.

    L'application est déployée en préproduction, mais pas en production.

  5. Vérifiez que l'application fonctionne correctement dans l'environnement de préproduction :

    kubectl proxy --port 8001 --context gke_$(gcloud config get-value project)_us-central1_staging
    

    Cette commande configure un proxy kubectl pour accéder à l'application.

  6. Accédez à l'application depuis Cloud Shell :

    1. Dans l'éditeur Cloud Shell, ouvrez un nouvel onglet de terminal.

    2. Envoyez une requête à localhost pour incrémenter un compteur :

      curl -s http://localhost:8001/api/v1/namespaces/default/services/cicd-sample:8080/proxy/ | grep -A 1 Counter
      

      Vous pouvez exécuter cette commande plusieurs fois et voir la valeur du compteur s'incrémenter à chaque fois.

      Lorsque vous affichez l'application, notez que le texte que vous avez modifié se trouve dans la version de l'application que vous avez déployée en préproduction.

    3. Fermez ce deuxième onglet.

    4. Dans le premier onglet, appuyez sur Control+C pour arrêter le proxy.

Vous avez maintenant appelé le déclencheur Cloud Build pour démarrer le processus CI, qui comprend la compilation de l'application, son déploiement dans l'environnement de préproduction et l'exécution de tests pour vérifier que l'application fonctionne correctement en préproduction.

Le processus CI est réussi lorsque la compilation et les tests du code réussissent dans l'environnement de préproduction. La réussite du processus CI déclenche ensuite le système CD dans Google Cloud Deploy.

Promouvoir la version en production

Dans cette section, vous allez promouvoir la version de préproduction en production. La cible de production est préconfigurée pour nécessiter une approbation. Vous devez donc l'approuver manuellement.

Pour votre propre pipeline CI/CD, vous pouvez utiliser une stratégie de déploiement qui lance le déploiement progressivement avant de procéder à un déploiement complet en production. Le lancement progressif du déploiement facilite la détection des problèmes et, si nécessaire, la restauration d'une version précédente.

Pour promouvoir la version en production, procédez comme suit :

  1. Ouvrez la présentation des pipelines de livraison Google Cloud et sélectionnez le pipeline cicd-sample.

  2. Promouvez le déploiement de la préproduction à la production. Pour ce faire :

    1. Dans le schéma du pipeline en haut de la page, cliquez sur le bouton bleu Promouvoir dans la zone de préproduction.

    2. Dans la fenêtre qui s'affiche, cliquez sur le bouton Promouvoir en bas de la page.

    Le déploiement n'est pas encore exécuté en production. Il est en attente de l'approbation manuelle requise.

  3. Approuvez manuellement le déploiement :

    1. Dans la visualisation du pipeline, cliquez sur le bouton Vérifier entre les zones de préproduction et de production.

    2. Dans la fenêtre qui s'affiche, cliquez sur le bouton Vérifier.

    3. Dans la fenêtre suivante, cliquez sur Approuver.

    4. Revenez à la présentation des pipelines de livraison Google Cloud et sélectionnez le pipeline cicd-sample.

  4. Une fois que la visualisation du pipeline affiche la zone de production en vert (ce qui signifie un déploiement réussi), vérifiez que l'application fonctionne en production en configurant un proxy kubectl que vous utilisez pour accéder à l'application :

    kubectl proxy --port 8002 --context gke_$(gcloud config get-value project)_us-central1_prod
    
  5. Accédez à l'application depuis Cloud Shell :

    1. Dans l'éditeur Cloud Shell, ouvrez un nouvel onglet de terminal.

    2. Incrémentez le compteur :

      curl -s http://localhost:8002/api/v1/namespaces/default/services/cicd-sample:8080/proxy/ | grep -A 1 Counter
      

      Vous pouvez exécuter cette commande plusieurs fois et voir la valeur du compteur s'incrémenter à chaque fois.

    3. Fermez ce deuxième onglet de terminal.

    4. Dans le premier onglet, appuyez sur Control+C pour arrêter le proxy.

Vous venez de promouvoir et d'approuver le déploiement en production. L'application contenant votre modification récente est désormais exécutée en production.

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Option 1 : supprimer le projet

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Option 2 : supprimer les ressources individuelles

  1. Supprimer le pipeline Google Cloud Deploy :

    gcloud deploy delivery-pipelines delete cicd-sample --region=us-central1 --force
    
  2. Supprimer le déclencheur Cloud Build :

    gcloud beta builds triggers delete cicd-sample-main
    
  3. Supprimer les clusters de préproduction et de production :

    gcloud container clusters delete staging
    
    gcloud container clusters delete prod
    
  4. Supprimer le dépôt dans Cloud Source Repositories :

    gcloud source repos delete cicd-sample
    
  5. Supprimer les buckets Cloud Storage :

    gsutil rm -r gs://$(gcloud config get-value project)-gceme-artifacts/
    
    gsutil rm -r gs://$(gcloud config get-value project)_clouddeploy/
    
  6. Supprimer le dépôt dans Artifact Registry :

    gcloud artifacts repositories delete cicd-sample-repo \
        --location us-central1
    

Étape suivante