Points de contrôle
Set up your environment
/ 10
Deploy the Spinnaker chart using Kubernetes Helm
/ 20
Building the Docker image
/ 20
Create service load balancers
/ 20
Deploy an image to production
/ 10
Triggering pipeline from code changes
/ 20
Pipelines de livraison continue avec Spinnaker et Kubernetes Engine
- GSP114
- Présentation
- Architecture du pipeline
- Avant de commencer l'atelier
- Tâche 1 : Configurer votre environnement
- Tâche 2 : Configurer Cloud Pub/Sub pour déclencher les pipelines Spinnaker
- Tâche 3 : Déployer Spinnaker à l'aide de Helm
- Tâche 4 : Créer l'image Docker
- Tâche 5 : Configurer des pipelines de déploiement
- Tâche 6 : Déclencher le pipeline en réponse à des modifications de code
- Tâche 7 : Observer les déploiements Canary
- Félicitations !
GSP114
Présentation
Dans cet atelier, vous allez découvrir comment créer un pipeline de livraison continue à l'aide de Google Kubernetes Engine, Google Cloud Source Repositories, Google Cloud Container Builder et Spinnaker. Après avoir créé un exemple d'application, vous allez configurer ces services pour qu'ils conçoivent, testent et déploient le pipeline de façon automatique. Lorsque vous modifierez le code de l'application, le pipeline de livraison continue répétera automatiquement ces opérations (conception, test et déploiement) pour la nouvelle version.
Objectifs
- Configurer votre environnement en lançant Google Cloud Shell, en créant un cluster Kubernetes Engine et en paramétrant votre schéma de gestion des identités et des utilisateurs
- Télécharger un exemple d'application, créer un dépôt Git et l'importer dans un dépôt Google Cloud Source Repositories
- Déployer Spinnaker sur Kubernetes Engine à l'aide de Helm
- Créer votre image Docker
- Configurer des déclencheurs afin de créer des images Docker lorsque votre application est modifiée
- Configurer un pipeline Spinnaker afin de déployer votre application sur Kubernetes Engine de manière fiable et continue
- Modifier le code afin de déclencher le pipeline, et observer son déploiement en production
Architecture du pipeline
Pour livrer en continu vos mises à jour d'application à vos utilisateurs, vous devez vous doter d'un processus automatisé qui conçoit, teste et met à jour votre logiciel de manière fiable. Les modifications de code doivent automatiquement transiter par un pipeline chargé de la création de l'artefact, des tests unitaires et fonctionnels, et du déploiement en production. Dans certains cas, il peut être utile de n'appliquer une mise à jour de code qu'à un sous-ensemble d'utilisateurs. En effet, cette méthode permet de tester la mise à jour en conditions réelles avant de la propager à l'intégralité de votre base d'utilisateurs. Si l'une de ces versions Canary se révèle non satisfaisante, votre procédure automatisée doit être capable de restaurer rapidement la version utilisée avant modification.
Avec Kubernetes Engine et Spinnaker, vous pouvez créer un flux de livraison continue robuste, qui permet de vous assurer que votre logiciel est développé, validé et diffusé rapidement. Vous cherchez certainement à accélérer les itérations. Toutefois, vous devez tout d'abord vous assurer que chaque révision d'application obtient plusieurs validations automatisées avant d'être candidate à un déploiement en production. Lorsqu'une modification donnée a été approuvée automatiquement, vous pouvez également valider manuellement l'application et procéder à d'autres tests avant son lancement.
Lorsque votre équipe décide que l'application est prête pour la production, il suffit qu'un membre approuve son déploiement.
Pipeline de livraison d'application
Dans cet atelier, vous allez concevoir le pipeline de livraison continue présenté sur le diagramme ci-dessous.
Avant de commencer l'atelier
Avant de cliquer sur le bouton "Démarrer l'atelier"
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
- vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
- vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Démarrer l'atelier et se connecter à la console Google Cloud
-
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :
- Le bouton Ouvrir la console Google
- Le temps restant
- Les identifiants temporaires que vous devez utiliser pour cet atelier
- Des informations complémentaires vous permettant d'effectuer l'atelier
-
Cliquez sur Ouvrir la console Google. L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.
Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.
Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte. -
Si nécessaire, copiez le nom d'utilisateur inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue Se connecter. Cliquez sur Suivant.
-
Copiez le mot de passe inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue de bienvenue. Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis dans le panneau de gauche. Ne saisissez pas vos identifiants Google Cloud Skills Boost. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés. -
Accédez aux pages suivantes :
- Acceptez les conditions d'utilisation.
- N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
- Ne vous inscrivez pas aux essais offerts.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Activer Cloud Shell
Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.
- Cliquez sur Activer Cloud Shell en haut de la console Google Cloud.
Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :
gcloud
est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
- (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
-
Cliquez sur Autoriser.
-
Vous devez à présent obtenir le résultat suivant :
Résultat :
- (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
Résultat :
Exemple de résultat :
gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Tâche 1 : Configurer votre environnement
Configurez l'infrastructure et les identités requises pour cet atelier. Commencez par créer un cluster Kubernetes Engine permettant de déployer Spinnaker et l'exemple d'application.
- Définissez la zone de calcul par défaut :
- Créez un cluster Kubernetes Engine à l'aide de l'exemple d'application Spinnaker :
La création d'un cluster nécessite 5 à 10 minutes. Attendez que votre cluster soit provisionné avant de continuer.
Une fois le déploiement terminé, vous obtenez un rapport comprenant les informations suivantes : le nom, l'emplacement, la version, l'adresse IP, le type de machine, la version de nœud, le nombre de nœuds et l'état du cluster qui indique que le cluster est en cours d'exécution.
Configurer la gestion de l'authentification et des accès
Créez un compte de service Cloud Identity and Access Management (Cloud IAM) afin de déléguer à Spinnaker des autorisations lui permettant de stocker des données dans Cloud Storage. Spinnaker stocke les données des pipelines dans Cloud Storage pour plus de fiabilité et de résilience. Si votre déploiement Spinnaker échoue de manière inattendue, vous pouvez créer en quelques minutes un déploiement identique pouvant accéder aux mêmes données de pipeline que l'original.
Importez votre script de démarrage dans un bucket Cloud Storage en suivant les instructions ci-dessous :
- Créez le compte de service :
- Stockez l'adresse e-mail du compte de service et l'ID de votre projet dans des variables d'environnement en vue d'une utilisation ultérieure dans certaines commandes :
- Associez le rôle
storage.admin
à votre compte de service :
- Téléchargez la clé du compte de service. Lors d'une étape ultérieure, vous installerez Spinnaker et importerez cette clé dans Kubernetes Engine :
Résultat :
Tâche 2 : Configurer Cloud Pub/Sub pour déclencher les pipelines Spinnaker
- Créez le sujet Cloud Pub/Sub pour les notifications de Container Registry :
- Créez un abonnement que Spinnaker peut lire pour recevoir des notifications de transfert d'images :
- Accordez au compte de service de Spinnaker un accès en lecture pour l'abonnement "gcr-triggers" :
Tester la tâche terminée
Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à configurer l'environnement, vous verrez une note d'évaluation s'afficher.
Tâche 3 : Déployer Spinnaker à l'aide de Helm
Dans cette section, vous allez vous servir de Helm pour déployer Spinnaker à partir du dépôt Charts. Helm est un gestionnaire de paquets qui vous permet de configurer et de déployer des applications Kubernetes.
Helm est déjà installé dans votre environnement Cloud Shell.
Configurer Helm
- Accordez à Helm le rôle cluster-admin pour votre cluster :
- Attribuez à Spinnaker le rôle
cluster-admin
afin qu'il puisse déployer des ressources sur tous les espaces de noms :
- Ajouter les déploiements de charts stables aux dépôts utilisables de Helm (Spinnaker inclus) :
Configurer Spinnaker
- Toujours dans Cloud Shell, créez un bucket pour que Spinnaker puisse y stocker la configuration de pipeline :
- Exécutez la commande suivante pour créer un fichier
spinnaker-config.yaml
décrivant la façon dont Helm doit installer Spinnaker :
Déployer le chart Spinnaker
- Déployez le chart avec votre ensemble de configuration à l'aide de l'interface de ligne de commande Helm :
- Au terme de cette opération, exécutez la commande ci-dessous pour configurer le transfert de port de Cloud Shell vers Spinnaker :
- Pour ouvrir l'interface utilisateur de Spinnaker, cliquez sur l'icône Aperçu sur le Web en haut de la fenêtre Cloud Shell et sélectionnez Prévisualiser sur le port 8080.
L'écran de bienvenue s'affiche, suivi de l'interface utilisateur de Spinnaker.
Laissez cet onglet ouvert. Il vous permettra d'accéder à l'interface utilisateur de Spinnaker.
Tester la tâche terminée
Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à déployer le chart Spinnaker dans Kubernetes à l'aide de Helm, vous verrez une note d'évaluation s'afficher.
Tâche 4 : Créer l'image Docker
Dans cette section, vous allez configurer Cloud Build pour détecter les modifications apportées au code source de votre application. Ensuite, vous allez créer une image Docker et la transférer dans Container Registry.
Créer le dépôt du code source
- Dans l'onglet Cloud Shell, téléchargez le code source de l'exemple d'application :
- Décompressez le code source :
- Accédez au répertoire contenant le code source :
- Définissez le nom d'utilisateur et l'adresse e-mail à utiliser pour les commits Git dans ce dépôt. Remplacez
[USERNAME]
par un nom d'utilisateur de votre choix :
- Effectuez un premier commit dans le dépôt du code source :
- Créez un dépôt pour héberger votre code :
- Ajoutez votre nouveau dépôt en tant que dépôt à distance :
- Transférez votre code vers la branche principale du nouveau dépôt :
-
Vérifiez que votre code source est accessible dans la console en accédant au menu de navigation > Dépôts sources.
-
Cliquez sur sample-app.
Configurer vos déclencheurs de compilation
Configurez Container Builder de sorte que vos images Docker soient créées et transférées à chaque fois que vous envoyez des tags Git vers votre dépôt source. Container Builder vérifie automatiquement votre code source, crée l'image Docker à partir du fichier Dockerfile de votre dépôt et transfère cette image à Google Cloud Container Registry.
-
Dans la console Cloud, accédez au menu de navigation > Cloud Build > Déclencheurs.
-
Cliquez sur Créer un déclencheur.
-
Configurez le déclencheur comme suit :
-
Nom :
sample-app-tags
- Événement : Push new tag (Transférer le nouveau tag)
- Sélectionnez le dépôt
sample-app
que vous venez de créer. -
Tag :
.* (tag quelconque)
-
Configuration :
fichier de configuration Cloud Build (yaml ou json)
-
Emplacement du fichier de configuration Cloud Build :
/cloudbuild.yaml
- Cliquez sur CRÉER.
Dorénavant, chaque fois que vous publierez un tag Git (.*) dans votre dépôt de code source, Container Builder créera automatiquement votre application et la publiera sous forme d'image Docker dans Container Registry.
Préparer les fichiers manifestes Kubernetes pour les utiliser dans Spinnaker
Spinnaker a besoin d'accéder à vos fichiers manifestes Kubernetes pour pouvoir les déployer sur vos clusters. Dans cette section, vous allez créer un bucket Cloud Storage qui contiendra vos fichiers manifestes lors du processus CI dans Cloud Build. Une fois que vos fichiers manifestes sont stockés dans Cloud Storage, Spinnaker peut les télécharger et les appliquer lors de l'exécution du pipeline.
- Créez le bucket :
- Activez la gestion des versions sur le bucket afin de disposer d'un historique des fichiers manifestes :
- Définissez l'ID de projet approprié dans vos fichiers manifestes de déploiement Kubernetes :
- Effectuez un commit des modifications dans le dépôt :
Créer une image
Transférez votre première image en suivant les instructions ci-dessous :
- Dans Cloud Shell, toujours dans le répertoire
sample-app
, créez un tag Git :
- Transférez le tag :
Résultat :
- Accédez à la console Cloud. Toujours dans Cloud Build, cliquez sur History (Historique) dans le volet de gauche pour vérifier que la compilation a bien été déclenchée. Si ce n'est pas le cas, vérifiez que le déclencheur a été configuré correctement à la section précédente.
Restez sur cette page et attendez que la compilation soit terminée avant de passer à la section suivante.
compilation
échoue, cliquez sur l'ID de compilation
pour ouvrir la page d'informations associée, puis cliquez sur RÉESSAYER.
Tester la tâche terminée
Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à compiler l'image Docker, vous verrez une note d'évaluation s'afficher.
Tâche 5 : Configurer des pipelines de déploiement
Vos images sont désormais créées automatiquement. Vous devez maintenant les déployer sur le cluster Kubernetes.
Pour réaliser les tests d'intégration, vous devez effectuer le déploiement dans un environnement réduit. Ensuite, si les tests sont concluants, vous devez approuver manuellement les modifications pour déployer le code sur les services de production.
Installer la CLI spin pour gérer Spinnaker
L'utilitaire de ligne de commande spin permet de gérer les applications et les pipelines de Spinnaker.
- Téléchargez la version 1.14.0 de
spin
:
- Rendez
spin
exécutable :
Créer le pipeline de déploiement
- Dans Spinnaker, créez une application nommée "sample" à l'aide de "spin". Définissez l'adresse e-mail du propriétaire pour l'application dans Spinnaker :
Créez ensuite le pipeline de livraison continue. Dans ce tutoriel, le pipeline est configuré de façon à détecter les images Docker avec un tag précédé de la lettre "v" qui arrivent dans Container Registry.
- Depuis le répertoire du code source
sample-app
, exécutez la commande suivante pour importer un exemple de pipeline dans votre instance Spinnaker :
Déclencher manuellement et visualiser l'exécution de votre pipeline
La configuration que vous venez de créer s'appuie sur les notifications de transfert de nouvelles images taguées pour déclencher un pipeline Spinnaker. Dans une étape précédente, vous avez transféré un tag vers Cloud Source Repositories, ce qui a amené Cloud Build à créer et à transférer votre image dans Container Registry. Vérifiez le pipeline en exécutant la commande manually trigger
.
- Basculez vers l'onglet de navigateur affichant l'interface utilisateur Spinnaker.
Si vous ne parvenez pas à le retrouver, vous pouvez accéder à cet onglet en sélectionnant Aperçu sur le Web > Prévisualiser sur le port 8080 dans votre fenêtre Cloud Shell.
- Sur l'UI de Spinnaker, cliquez sur Applications en haut de l'écran pour voir la liste des applications gérées.
sample est votre application. Si l'application sample ne s'affiche pas, essayez d'actualiser l'onglet Applications de Spinnaker.
-
Cliquez sur sample pour afficher le déploiement de votre application.
-
Cliquez sur Pipelines en haut de la page pour afficher l'état du pipeline de votre application.
-
Cliquez sur Start Manual Execution (Démarrer l'exécution manuelle), sélectionnez Deploy (Déployer) dans "Select Pipeline" (Sélectionner un pipeline), puis cliquez sur Run (Exécuter) pour déclencher le pipeline une première fois.
-
Cliquez sur Execution Details (Détails de l'exécution) pour afficher plus d'informations sur la progression du pipeline.
La barre de progression indique l'état du pipeline de déploiement et ses différentes étapes.
Les étapes en bleu sont en cours d'exécution, les étapes en vert ont abouti et les étapes en rouge ont échoué.
- Cliquez sur une étape pour en afficher les détails.
Après trois à cinq minutes, la phase d'intégration s'achève. Le pipeline a besoin d'une autorisation manuelle pour poursuivre le déploiement.
- Passez la souris sur l'icône jaune représentant une personne, puis cliquez sur Continue (Continuer).
Le déploiement se poursuit sur l'interface et le backend de production. Il est exécuté en quelques minutes.
-
Pour afficher l'appli, sélectionnez en haut de l'interface utilisateur de Spinnaker Infrastructure > Load Balancers (Équilibreurs de charge).
-
Faites défiler la liste des équilibreurs de charge, puis cliquez sur "Default" (Par défaut), sous
service sample-frontend-production
. Les détails de votre équilibreur de charge s'affichent dans la partie droite de la page. Si ce n'est pas le cas, actualisez votre navigateur. -
Faites défiler le volet de détails situé à droite, puis copiez l'adresse IP de votre application en cliquant sur le bouton du presse-papiers à côté de l'adresse IP indiquée sous Ingress (Entrée). Le lien d'adresse IP d'entrée sur l'interface utilisateur de Spinnaker utilise HTTPS par défaut, mais l'application est configurée pour utiliser HTTP.
- Collez l'adresse dans un nouvel onglet de navigateur pour afficher l'application. La version Canary peut s'afficher. Si vous actualisez la page, la version de production de l'application s'affiche également.
Vous avez déclenché manuellement le pipeline afin de créer, tester et déployer votre application.
Tester la tâche terminée
Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à créer des équilibreurs de charge pour le service, vous verrez une note d'évaluation s'afficher.
Tester la tâche terminée
Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à déployer une image en production, vous verrez une note d'évaluation s'afficher.
Tâche 6 : Déclencher le pipeline en réponse à des modifications de code
Maintenant, testez le pipeline de bout en bout : modifiez le code, transférez un tag Git et observez l'exécution du pipeline. Le transfert d'un tag Git qui commence par la lettre "v" entraîne la création, par Container Builder, d'une nouvelle image Docker et son transfert à Container Registry. Spinnaker détecte que le nouveau tag de l'image commence par un "v" et déclenche un pipeline afin de déployer l'image sur des éléments test, d'exécuter des tests et d'envoyer cette même image sur tous les pods du déploiement.
- Dans votre répertoire sample-app, remplacez la couleur orange de l'application par la couleur bleue :
- Taguez votre modification, puis transférez-la dans le dépôt du code source :
- Dans la console, accédez à Cloud Build > Historique et attendez quelques minutes pour que la nouvelle compilation s'affiche. Vous devrez peut-être actualiser la page. Attendez la fin de la compilation avant de passer à l'étape suivante.
compilation
échoue, cliquez sur l'ID de compilation
, puis sur RÉESSAYER.- Retournez dans l'interface utilisateur de Spinnaker et cliquez sur Pipelines. Vous pouvez voir que le pipeline commence à déployer l'image. L'affichage du pipeline déclenché automatiquement prend quelques minutes. Vous devrez peut-être actualiser la page.
Tester la tâche terminée
Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à déclencher un pipeline en réponse à des modifications de code, vous verrez une note d'évaluation s'afficher.
Tâche 7 : Observer les déploiements Canary
-
Lorsque le déploiement est suspendu, attendant de passer en production, retournez à la page web affichant votre application en cours d'exécution et actualisez l'onglet. Quatre de vos backends exécutent la version précédente de votre application, tandis qu'un seul backend exécute la version Canary. La nouvelle version de votre application doit s'afficher en bleu toutes les cinq actualisations environ.
-
Une fois le pipeline terminé, votre application ressemble à la capture d'écran suivante. Notez que la couleur est passée au bleu en raison de la modification du code et que le champ Version indique désormais
canary
.
Vous venez de déployer votre application dans l'intégralité de l'environnement de production.
- Vous pouvez éventuellement annuler cette modification en rétablissant le commit précédent. En cas de rollback, un nouveau tag (v1.0.2) est ajouté et transféré via le même pipeline que celui ayant servi à déployer la version v1.0.1 :
Appuyez sur les touches CTRL+O, ENTRÉE, CTRL+X.
- Une fois la compilation et le pipeline terminés, vérifiez que le rollback a bien été effectué en cliquant sur Infrastructure > Load Balancers (Équilibreurs de charge). Sous service sample-frontend-production, cliquez sur Default (Par défaut) et copiez l'adresse IP d'entrée dans un nouvel onglet.
Votre application est repassée à l'orange. Le numéro de version de production
est indiqué.
Félicitations !
L'atelier "Pipelines de livraison continue avec Spinnaker et Kubernetes Engine" est désormais terminé.
Terminer votre quête
Cet atelier d'auto-formation fait partie des quêtes Google Cloud Solutions I: Scaling Your Infrastructure et DevOps Essentials. Une quête est une série d'ateliers associés qui constituent un parcours de formation. Si vous terminez cette quête, vous obtenez un badge attestant de votre réussite. Vous pouvez rendre publics les badges que vous recevez et ajouter leur lien dans votre CV en ligne ou sur vos comptes de réseaux sociaux. Inscrivez-vous à n'importe quelle quête contenant cet atelier pour obtenir immédiatement les crédits associés. Découvrez toutes les quêtes disponibles dans le catalogue Google Cloud Skills Boost.
Atelier suivant
Poursuivez votre quête avec l'atelier Exécuter des serveurs de jeu dédiés dans Google Kubernetes Engine.
Étapes suivantes et informations supplémentaires
- Découvrez-en plus sur le déploiement continu à l'aide de Jenkins.
- En savoir plus sur le déploiement de Spinnaker sur Compute Engine
- Déployez Jenkins sur Kubernetes Engine.
- Utiliser Spinnaker avec Ansible pour la livraison continue
Formations et certifications Google Cloud
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 21 novembre 2023
Dernier test de l'atelier : 21 novembre 2023
Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.