arrow_back

Pipelines de livraison continue avec Spinnaker et Kubernetes Engine

Pipelines de livraison continue avec Spinnaker et Kubernetes Engine

1 heure 30 minutes 7 crédits

GSP114

Google Cloud – Ateliers adaptés au rythme de chacun

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 insatisfaisante, votre procédure automatisée doit être capable de restaurer rapidement la version avant mise à jour.

8cda078d8123f982.png

Kubernetes Engine et Spinnaker vous permettent de créer un flux de livraison continue robuste, capable de veiller à ce que votre logiciel soit 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 construire un pipeline de livraison continue, comme illustré sur le schéma suivant.

7a1802b4383b4905.png

Prérequis

Configuration de Qwiklabs

Avant de cliquer sur le bouton Start Lab (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 Start Lab (Démarrer l'atelier), indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique Qwiklabs 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. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.

Conditions requises

Pour réaliser cet atelier, vous devez :

  • avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
  • disposer de suffisamment de temps pour réaliser l'atelier en une fois.

Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier.

Remarque : Si vous utilisez un appareil Chrome OS, exécutez cet atelier dans une fenêtre de navigation privée.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. 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
  2. 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.
  3. 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.

  4. 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.
  5. 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.

Remarque : Vous pouvez afficher le menu qui contient la liste des produits et services Google Cloud en cliquant sur le menu de navigation en haut à gauche. Icône du menu de navigation

Activer Google Cloud Shell

Google Cloud Shell est une machine virtuelle qui contient des outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Google Cloud Shell offre un accès en ligne de commande à vos ressources GCP.

  1. Dans la console GCP, dans la barre d'outils située en haut à droite, cliquez sur le bouton Ouvrir Cloud Shell.

    Icône Cloud Shell

  2. Cliquez sur Continue (Continuez):

    cloudshell_continue

Il faut quelques instants pour mettre en service et se connecter à l'environnement. Lorsque vous êtes connecté, vous êtes déjà authentifié et le projet est défini sur votre PROJECT_ID. Par exemple:

Terminal Cloud Shell

gcloud est l'outil de ligne de commande associé à Google Cloud Platform. Pré-installé sur Cloud Shell, il est également compatible avec la saisie semi-automatique via la touche de tabulation.

Vous pouvez répertorier les noms des comptes actifs à l'aide de cette commande :

gcloud auth list

Résultat :

ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
    $ gcloud config set account `ACCOUNT`
	

Pour répertorier les ID de projet, exécutez la commande suivante :

gcloud config list project
	

Résultat :

[core]
project = <ID_Projet>
	

Exemple de résultat :

[core]
project = qwiklabs-gcp-44776a13dea667a6
	

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.

  1. Définissez la zone de calcul par défaut :

gcloud config set compute/zone us-central1-f
  1. Créez un cluster Kubernetes Engine à l'aide de l'exemple d'application Spinnaker :

gcloud container clusters create spinnaker-tutorial \
    --machine-type=n1-standard-2

La création d'un cluster prend entre cinq et dix 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 transférer les autorisations vers Spinnaker et lui permettre 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 :

  1. Créez le compte de service :

gcloud iam service-accounts create spinnaker-account \
    --display-name spinnaker-account
  1. 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 :

export SA_EMAIL=$(gcloud iam service-accounts list \
    --filter="displayName:spinnaker-account" \
    --format='value(email)')
export PROJECT=$(gcloud info --format='value(config.project)')
  1. Associez le rôle storage.admin à votre compte de service :

gcloud projects add-iam-policy-binding $PROJECT \
    --role roles/storage.admin \
    --member serviceAccount:$SA_EMAIL
  1. 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 :

gcloud iam service-accounts keys create spinnaker-sa.json \
     --iam-account $SA_EMAIL

(Résultat)

created key [12f224e036437704b91a571792462ca6fc4cd438] of type [json] as [spinnaker-sa.json] for [spinnaker-account@qwiklabs-gcp-gcpd-f5e16da10e5d.iam.gserviceaccount.com]

Configurer Cloud Pub/Sub pour déclencher les pipelines Spinnaker

  1. Créez le sujet Cloud Pub/Sub pour les notifications de Container Registry :

gcloud pubsub topics create projects/$PROJECT/topics/gcr
  1. Créez un abonnement que Spinnaker peut lire pour recevoir des notifications de transfert d'images :

gcloud pubsub subscriptions create gcr-triggers \
    --topic projects/${PROJECT}/topics/gcr
  1. Accordez au compte de service de Spinnaker l'accès en lecture à partir de l'abonnement "gcr-triggers" :

export SA_EMAIL=$(gcloud iam service-accounts list \
    --filter="displayName:spinnaker-account" \
    --format='value(email)')
gcloud beta pubsub subscriptions add-iam-policy-binding gcr-triggers \
    --role roles/pubsub.subscriber --member serviceAccount:$SA_EMAIL

Tester la tâche terminée

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier la tâche exécutée. Si vous avez réussi à configurer l'environnement, vous verrez une note d'évaluation s'afficher.

Configurer votre environnement

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 packages qui vous permet de configurer et de déployer des applications Kubernetes.

Installer Helm

  1. Téléchargez et installez le fichier binaire helm :

wget https://get.helm.sh/helm-v3.1.1-linux-amd64.tar.gz
  1. Décompressez le fichier sur votre système local :

tar zxfv helm-v3.1.1-linux-amd64.tar.gz
cp linux-amd64/helm .
  1. Accordez à Helm le rôle cluster-admin dans votre cluster :

kubectl create clusterrolebinding user-admin-binding \
    --clusterrole=cluster-admin --user=$(gcloud config get-value account)
  1. Attribuez à Spinnaker le rôle cluster-admin afin qu'il puisse déployer des ressources sur tous les espaces de noms :

kubectl create clusterrolebinding --clusterrole=cluster-admin \
    --serviceaccount=default:default spinnaker-admin
  1. Ajouter les déploiements de charts stables aux dépôts utilisables de Helm (inclut Spinnaker) :

./helm repo add stable https://charts.helm.sh/stable
./helm repo update

Configurer Spinnaker

  1. Toujours dans Cloud Shell, créez un bucket pour que Spinnaker stocke la configuration de pipeline :

export PROJECT=$(gcloud info \
    --format='value(config.project)')
export BUCKET=$PROJECT-spinnaker-config
gsutil mb -c regional -l us-central1 gs://$BUCKET
  1. Exécutez la commande suivante pour créer un fichier spinnaker-config.yaml décrivant la façon dont Helm installe Spinnaker :

export SA_JSON=$(cat spinnaker-sa.json)
export PROJECT=$(gcloud info --format='value(config.project)')
export BUCKET=$PROJECT-spinnaker-config
cat > spinnaker-config.yaml <<EOF
gcs:
  enabled: true
  bucket: $BUCKET
  project: $PROJECT
  jsonKey: '$SA_JSON'
dockerRegistries:
- name: gcr
  address: https://gcr.io
  username: _json_key
  password: '$SA_JSON'
  email: 1234@5678.com
# Disable minio as the default storage backend
minio:
  enabled: false
# Configure Spinnaker to enable GCP services
halyard:
  spinnakerVersion: 1.19.4
  image:
    repository: us-docker.pkg.dev/spinnaker-community/docker/halyard
    tag: 1.32.0
    pullSecrets: []
  additionalScripts:
    create: true
    data:
      enable_gcs_artifacts.sh: |-
        \$HAL_COMMAND config artifact gcs account add gcs-$PROJECT --json-path /opt/gcs/key.json
        \$HAL_COMMAND config artifact gcs enable
      enable_pubsub_triggers.sh: |-
        \$HAL_COMMAND config pubsub google enable
        \$HAL_COMMAND config pubsub google subscription add gcr-triggers \
          --subscription-name gcr-triggers \
          --json-path /opt/gcs/key.json \
          --project $PROJECT \
          --message-format GCR
EOF

Déployer le chart Spinnaker

  1. Déployez le chart avec votre ensemble de configuration à l'aide de l'interface de ligne de commande Helm :

./helm install -n default cd stable/spinnaker -f spinnaker-config.yaml \
           --version 2.0.0-rc9 --timeout 10m0s --wait
L'installation prend généralement 5 à 8 minutes.
  1. Au terme de cette opération, exécutez la commande ci-dessous pour configurer le transfert de port de Cloud Shell vers Spinnaker :

export DECK_POD=$(kubectl get pods --namespace default -l "cluster=spin-deck" \
    -o jsonpath="{.items[0].metadata.name}")
kubectl port-forward --namespace default $DECK_POD 8080:9000 >> /dev/null &
  1. 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 Preview on port 8080 (Prévisualiser sur le port 8080).

bde9fe42e27656fb.png

L'écran de bienvenue s'affiche, suivi de l'interface utilisateur de Spinnaker :

8c03705c17bf3b7f.png

Laissez cet onglet ouvert. Il vous permettra d'accéder à l'interface utilisateur de Spinnaker.

Tester la tâche terminée

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier 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.

Déployer le chart Spinnaker dans Kubernetes à l'aide de Helm

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

  1. Dans l'onglet Cloud Shell, téléchargez le code source de l'exemple d'application :

gsutil -m cp -r gs://spls/gsp114/sample-app.tar .
  1. Décompressez le code source :

mkdir sample-app
tar xvf sample-app.tar -C ./sample-app
  1. Remplacez les répertoires par le code source :

cd sample-app
  1. Définissez le nom d'utilisateur et l'adresse e-mail des commits Git de ce dépôt. Remplacez [USERNAME] par un nom d'utilisateur de votre choix.

git config --global user.email "$(gcloud config get-value core/account)"
git config --global user.name "[USERNAME]"
  1. Apportez le premier commit au dépôt du code source :

git init
git add .
git commit -m "Initial commit"
  1. Créez un dépôt pour héberger votre code :

gcloud source repos create sample-app

Vous pouvez ignorer le message "you may be billed for this repository" (ce dépôt pourra vous être facturé).

git config credential.helper gcloud.sh
  1. Ajoutez votre nouveau dépôt comme dépôt à distance :

export PROJECT=$(gcloud info --format='value(config.project)')
git remote add origin https://source.developers.google.com/p/$PROJECT/r/sample-app
  1. Transférez votre code vers la branche principale du nouveau dépôt :

git push origin master
  1. Vérifiez que votre code source se trouve bien dans la console en cliquant sur le menu de navigation, puis sur Source Repositories (Dépôts sources).

nav-source-repo.png

  1. Cliquez sur sample-app.

source-repo.png

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.

bcab2f07975c8776.png

  1. Dans la console Google Cloud Platform, accédez au menu de navigation, puis cliquez sur Cloud Build > Triggers (Cloud Build > Déclencheurs).

  2. Cliquez sur Create trigger (Créer un déclencheur).

CloudBuild_BuildTriggers.png

  1. Configurez le déclencheur de la façon suivante :

  • Name (Nom) : sample-app-tags

  • Event (É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 : v1.*

  • Build configuration (Configuration de la compilation) : Cloud Build configuration file (yaml or json)

  • Cloud Build configuration file location (Emplacement du fichier de configuration Cloud Build) : /cloudbuild.yaml

  1. Cliquez sur CREATE (CRÉER).

trigger_confg.png

Désormais, lorsque vous envoyez un tag Git précédé de la lettre "v" vers le dépôt du code source, Container Builder crée et transfère automatiquement votre application en tant qu'image Docker vers Container Registry.

Préparer les fichiers manifestes Kubernetes pour leur utilisation 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.

  1. Créez le bucket :

export PROJECT=$(gcloud info --format='value(config.project)')
gsutil mb -l us-central1 gs://$PROJECT-kubernetes-manifests
  1. Activez la gestion des versions sur le bucket afin de disposer d'un historique de fichiers manifestes :

gsutil versioning set on gs://$PROJECT-kubernetes-manifests
  1. Définissez l'ID de projet approprié dans vos fichiers manifestes de déploiement de Kubernetes :

sed -i s/PROJECT/$PROJECT/g k8s/deployments/*
  1. Effectuez un commit des modifications dans le dépôt :

git commit -a -m "Set project ID"

Créer une image

Transférez votre première image en suivant les instructions ci-dessous :

  1. Dans Cloud Shell, toujours dans le répertoire sample-app, créez un tag Git :

git tag v1.0.0
  1. Transférez le tag :

git push --tags

(Résultat)

To https://source.developers.google.com/p/qwiklabs-gcp-ddf2925f84de0b16/r/sample-app
* [new tag]      v1.0.0 -> v1.0.0
  1. Accédez à Cloud Console. 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.

CloudBuild_BuildHistory.png

Restez sur cette page et attendez que la compilation soit terminée avant de passer à la section suivante.

Tester la tâche terminée

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier la tâche exécutée. Si vous avez réussi à compiler l'image Docker, vous verrez une note d'évaluation s'afficher.

Compilation de l'image Docker

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.

  1. Téléchargez la version 1.14.0 de spin :

curl -LO https://storage.googleapis.com/spinnaker-artifacts/spin/1.14.0/linux/amd64/spin
  1. Rendez spin exécutable :

chmod +x spin

Créer le pipeline de déploiement

  1. 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 :

./spin application save --application-name sample \
                        --owner-email "$(gcloud config get-value core/account)" \
                        --cloud-providers kubernetes \
                        --gate-endpoint http://localhost:8080/gate

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.

  1. Dans le répertoire sample-app du code source, exécutez la commande suivante pour importer un exemple de pipeline dans votre instance Spinnaker :

export PROJECT=$(gcloud info --format='value(config.project)')
sed s/PROJECT/$PROJECT/g spinnaker/pipeline-deploy.json > pipeline.json
./spin pipeline save --gate-endpoint http://localhost:8080/gate -f pipeline.json

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 suivante : manually trigger.

  1. Dans l'interface utilisateur de Spinnaker, cliquez sur Applications en haut de l'écran pour afficher la liste des applications gérées. Votre application se nomme sample. Si l'application sample ne s'affiche pas, essayez d'actualiser l'onglet Applications de Spinnaker.

app-sample.png

  1. Cliquez sur sample pour afficher le déploiement de votre application.
  2. Cliquez sur Pipelines en haut de la page pour afficher l'état du pipeline de votre application.
  3. Cliquez sur Start Manual Execution (Démarrer l'exécution manuelle) pour déclencher le pipeline pour la première fois.

start-man-ex.png

  1. Cliquez sur Run (Exécuter).

  2. Cliquez sur Execution Details (Détails de l'exécution) pour afficher plus d'informations sur la progression du pipeline.

man-start-detail.png

La barre de progression indique l'état et les différentes étapes du pipeline de déploiement.

progress-bar.png

Les étapes en bleu sont en cours d'exécution, les étapes en vert ont abouti et les étapes en rouge ont échoué.

  1. 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.

  1. Passez la souris sur l'icône jaune en forme de personne, puis cliquez sur Continue (Continuer).

continue-to-deploy.png

Le déploiement se poursuit sur l'interface et le backend de production. Il est exécuté en quelques minutes.

  1. Pour afficher l'application, sélectionnez Infrastructure > Load Balancers (Équilibreurs de charge) dans l'angle supérieur droit de l'UI de Spinnaker.

infrasturcture-lb.png

  1. 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.

  2. Faites défiler le volet 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 IP d'entrée de l'interface utilisateur de Spinnaker utilise HTTPS par défaut, mais l'application est configurée pour utiliser HTTP.

ingress.png

  1. Collez l'adresse dans un nouvel onglet de navigateur pour afficher l'application. La version Canary va peut-être s'afficher. Si vous actualisez, la version de production de l'application s'affiche également.

5350848ad1354d1c.png

Vous avez désormais déclenché manuellement le pipeline afin de créer, tester et déployer votre application.

Tester la tâche terminée

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier 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.

Créer des équilibreurs de charge pour le service

Tester la tâche terminée

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier 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.

Déployer une image en production

Déclencher le pipeline suite à 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.

  1. Dans votre répertoire sample-app, remplacez la couleur orange de l'application par la couleur bleue :

sed -i 's/orange/blue/g' cmd/gke-info/common-service.go
  1. Taguez votre modification, puis transférez-la dans le dépôt du code source :

git commit -a -m "Change color to blue"
git tag v1.0.1
git push --tags
  1. Dans la console, accédez à Cloud Build > History (Cloud Build > Historique) et attendez quelques minutes 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.

  2. 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.

d006977feef1a15d.png

Tester la tâche terminée

Cliquez sur Check my progress (Vérifier ma progression) pour vérifier la tâche exécutée. Si vous avez réussi à déclencher un pipeline suite à des modifications de code, vous verrez une note d'évaluation s'afficher.

Déclencher un pipeline suite à des modifications de code

Observer les déploiements Canary

  1. 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.

  2. 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 affiche désormais canary.

Blue_Application_Output.png

Vous venez de déployer votre application dans l'ensemble de l'environnement de production.

  1. Vous pouvez éventuellement annuler cette modification en rétablissant le commit précédent. Lors d'un 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 :

git revert v1.0.1

Appuyez sur les touches CTRL+O, ENTRÉE, CTRL+X.

git tag v1.0.2
git push --tags
  1. Une fois la compilation et le pipeline terminés, vérifiez que le rollback a bien été effectué en cliquant sur Infrastructure > Load Balancers (Infrastructure > Équilibreurs de charge). Sous service sample-frontend-production, cliquez sur Default (Par défaut) et copiez l'adresse IP entrante dans un nouvel onglet.

Votre application est à nouveau orange et le numéro de version de production a changé.

revert.png

Félicitations

L'atelier "Pipelines de livraison continue avec Spinnaker et Kubernetes Engine" est désormais terminé.

bf1e2a23518ceceb.png DevOpsTransparent.png

Terminer votre quête

Cet atelier d'auto-formation fait partie des quêtes Qwiklabs Google Cloud Solutions I: Scaling Your Infrastructure et DevOps Essentials. Une quête est une série d'ateliers associés qui constituent une formation. Si vous terminez cette quête, vous obtiendrez le badge ci-dessus 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 à cette quête pour obtenir immédiatement les crédits associés à cet atelier si vous l'avez suivi. Découvrez les autres quêtes Qwiklabs disponibles.

Atelier suivant

Continuez sur votre lancée en suivant l'atelier Exécuter des serveurs de jeu dédiés dans Google Kubernetes Engine ou consultez ces suggestions :

Étapes suivantes et informations supplémentaires

Google Cloud Training & Certification

...helps you make the most of Google Cloud technologies. Our classes include technical skills and best practices to help you get up to speed quickly and continue your learning journey. We offer fundamental to advanced level training, with on-demand, live, and virtual options to suit your busy schedule. Certifications help you validate and prove your skill and expertise in Google Cloud technologies.

Dernière mise à jour du manuel : 9 mars 2021
Dernier test de l'atelier : 9 mars 2021

Copyright 2020 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.