GSP053

Présentation
Les équipes DevOps font souvent appel à différents types de déploiements pour gérer divers scénarios de déploiement d'applications, comme les "déploiements continus", les "déploiements bleu-vert" et les "déploiements Canary", entre autres. Cet atelier vous explique comment effectuer le scaling de conteneurs et comment les gérer pour apprendre à mettre en place ces scénarios courants composés de plusieurs déploiements hétérogènes.
Objectifs
Dans cet atelier, vous apprendrez à effectuer les tâches suivantes :
- Utiliser l'outil
kubectl
- Créer des fichiers de déploiement
yaml
- Lancer, modifier et faire évoluer des déploiements
- Modifier des déploiements et découvrir les styles de déploiements
Prérequis
Pour profiter pleinement de cet atelier de formation, vous devez respecter les recommandations suivantes :
- Vous avez suivi les ateliers Google Cloud Skills Boost suivants :
- Vous possédez des compétences en administration système sous Linux.
- Vous disposez de connaissances théoriques en DevOps (principes du déploiement continu).
Présentation des déploiements
Les déploiements hétérogènes consistent généralement à connecter au moins deux environnements ou régions ayant des infrastructures distinctes dans le but de répondre à des besoins techniques ou opérationnels spécifiques. Selon leurs spécificités, ces déploiements peuvent être "hybrides", "multicloud" ou "public-privé".
Dans le cadre de cet atelier, nous aborderons des déploiements hétérogènes qui s'étendent sur diverses régions dans un environnement cloud unique, dans plusieurs environnements cloud publics (multicloud) ou dans une combinaison d'environnements sur site et cloud public (hybride ou public-privé).
Différents problèmes d'ordre opérationnel et technique peuvent se présenter lors des déploiements qui se limitent à un environnement ou une région :
-
Ressources insuffisantes : dans un environnement donné, en particulier s'il s'agit d'un environnement sur site, les ressources de calcul, de stockage ou réseau disponibles ne suffisent pas toujours à répondre aux besoins de production.
-
Portée géographique limitée : dans un environnement unique, des utilisateurs géographiquement éloignés doivent tous accéder au même déploiement. Leur trafic peut être réparti sur toute la planète et converger vers une position centrale.
-
Disponibilité restreinte : un trafic à l'échelle du Web exige des applications ayant une certaine tolérance aux pannes et de la résilience.
-
Dépendance vis-à-vis d'un fournisseur : les abstractions de plate-forme et d'infrastructure liées à certains fournisseurs peuvent empêcher le portage des applications.
-
Manque de flexibilité des ressources : vos ressources peuvent être limitées à un ensemble spécifique de fonctionnalités de calcul, de stockage ou réseau.
Les déploiements hétérogènes peuvent aider à résoudre ces problèmes, à condition d'être structurés par des processus et des procédures programmatiques et déterministes. Les procédures ponctuelles ou ad hoc peuvent donner lieu à des déploiements ou des processus fragiles et peu tolérants aux pannes. Les processus ad hoc peuvent entraîner des pertes de données ou de trafic. Pour être efficaces, les processus de déploiement doivent être reproductibles et mettre en œuvre des méthodes éprouvées de gestion des comptes, de configuration et de maintenance.
Les trois scénarios de déploiement hétérogènes les plus courants sont :
- les déploiements multicloud ;
- les déploiements appliqués à des données sur site ;
- les processus d'intégration et de livraison continues (CI/CD).
Les exercices suivants illustrent certains cas d'utilisation courants des déploiements hétérogènes, ainsi que des méthodes de déploiement bien structurées basées sur Kubernetes et d'autres ressources d'infrastructure.
Préparation
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 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.
Pour réaliser cet atelier :
- Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
- Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.
Démarrer l'atelier et se connecter à la console Google Cloud
-
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue 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 Cloud"
- 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 Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).
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 ci-dessous et collez-le dans la boîte de dialogue Se connecter.
{{{user_0.username | "Username"}}}
Vous trouverez également le nom d'utilisateur dans le panneau "Détails concernant l'atelier".
-
Cliquez sur Suivant.
-
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
{{{user_0.password | "Password"}}}
Vous trouverez également le mot de passe dans le panneau "Détails concernant l'atelier".
-
Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud.
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 à des essais sans frais.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche.
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.
-
Passez les fenêtres suivantes :
- Accédez à la fenêtre d'informations de Cloud Shell.
- Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API 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 l'ID_PROJET pour cette session :
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
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 :
gcloud auth list
- Cliquez sur Autoriser.
Résultat :
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Remarque : Pour consulter la documentation complète sur gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Définir la zone
Exécutez la commande suivante pour définir votre zone Google Cloud de travail, en veillant à remplacer la zone locale par :
gcloud config set compute/zone {{{ project_0.default_zone | ZONE }}}
Télécharger l'exemple de code pour cet atelier
- Téléchargez l'exemple de code permettant de créer et d'exécuter des conteneurs et des déploiements à partir du bucket de l'atelier :
gcloud storage cp -r gs://spls/gsp053/kubernetes .
cd kubernetes
- Créez un cluster avec trois nœuds (cette opération prend quelques minutes) :
gcloud container clusters create bootcamp \
--machine-type e2-small \
--num-nodes 3 \
--scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"
Tâche 1 : Découvrir l'objet Déploiement
Commencez par examiner l'objet Déploiement.
- Dans
kubectl
, la commande explain
nous permet d'en savoir plus sur l'objet Déploiement :
kubectl explain deployment
- Vous pouvez aussi afficher l'ensemble des champs en ajoutant l'option
--recursive
:
kubectl explain deployment --recursive
- Vous pourrez utiliser la commande explain tout au long de l'atelier pour comprendre la structure d'un objet Déploiement et voir l'effet des différents champs :
kubectl explain deployment.metadata.name
Tâche 2 : Créer un déploiement
- Créez le déploiement
fortune-app
. Examinez le fichier de configuration du déploiement :
cat deployments/fortune-app-blue.yaml
Résultat :
# orchestrate-with-kubernetes/kubernetes/deployments/fortune-app-blue.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fortune-app-blue
spec:
replicas: 3
selector:
matchLabels:
app: fortune-app
template:
metadata:
labels:
app: fortune-app
track: stable
version: "1.0.0"
spec:
containers:
- name: fortune-app
# The new, centralized image path
image: "us-central1-docker.pkg.dev/qwiklabs-resources/spl-lab-apps/fortune-service:1.0.0"
ports:
- name: http
containerPort: 8080
...
Notez que le déploiement crée trois instances répliquées et utilise la version 1.0.0 du conteneur fortune-service.
- Créez maintenant votre objet Déploiement avec la commande
kubectl create
:
kubectl create -f deployments/fortune-app-blue.yaml
- Vérifiez ensuite que le déploiement a bien été créé :
kubectl get deployments
- Une fois le déploiement généré, Kubernetes crée un
ReplicaSet
pour celui-ci. Vous pouvez vérifier si ce ReplicaSet
a bien été créé pour le déploiement :
kubectl get replicasets
Vous devriez voir apparaître un ReplicaSet
portant un nom du type fortune-app-blue-xxxxxxx
.
- Affichez les pods créés pour le déploiement :
kubectl get pods
- Créez maintenant un service pour exposer le déploiement
fortune-app
en externe.
kubectl create -f services/fortune-app.yaml
- Interagissez avec le déploiement
fortune-app
en capturant son adresse IP externe, puis en appelant le point de terminaison /version
avec curl :
kubectl get services fortune-app
Remarque : Le remplissage du champ d'adresse IP externe pour votre service peut prendre quelques secondes. Ceci est normal. Il vous suffit d'exécuter de nouveau la commande ci-dessus à quelques secondes d'intervalle jusqu'à ce que le champ soit renseigné.
curl http://<EXTERNAL-IP>/version
Vous devriez obtenir une réponse JSON indiquant {"version":"1.0.0"}
.
- Vous pouvez également associer la fonctionnalité de modélisation de sortie de
kubectl
à la commande curl, sur une seule ligne :
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Tester la tâche terminée
Cliquez sur Vérifier ma progression ci-dessous pour valider votre progression dans l'atelier. Si vous avez réussi à créer le cluster Kubernetes ainsi que le déploiement et le service fortune-app, vous recevrez une note d'évaluation.
Créer un cluster Kubernetes et des déploiements (fortune-app)
Effectuer le scaling d'un déploiement
Maintenant que vous avez créé le déploiement, vous pouvez effectuer son scaling. Pour ce faire, mettez à jour le champ spec.replicas
.
- La méthode la plus simple pour mettre à jour le champ "replicas" consiste à utiliser la commande
kubectl scale
:
kubectl scale deployment fortune-app-blue --replicas=5
Remarque : Le lancement des nouveaux pods peut demander environ une minute.
- Vérifiez que cinq pods
fortune-app-blue
sont en cours d'exécution :
kubectl get pods | grep fortune-app-blue | wc -l
- Maintenant, effectuez le scaling inverse de l'application :
kubectl scale deployment fortune-app-blue --replicas=3
- Vérifiez à nouveau que vous avez le bon nombre de pods :
kubectl get pods | grep fortune-app-blue | wc -l
Vous avez découvert les déploiements Kubernetes, et appris à gérer un groupe de pods et à effectuer son scaling.
Tâche 3 : Effectuer une mise à jour progressive
Dans un déploiement, vous pouvez mettre à jour les images vers une nouvelle version par le biais d'un mécanisme de mise à jour progressive.
Déclencher une mise à jour progressive
- Pour déclencher une mise à jour progressive, il vous suffit d'appliquer la configuration du déploiement "vert". Kubernetes est suffisamment intelligent pour identifier le déploiement existant (
fortune-app-blue
) et "déploiera" les modifications du nouveau fichier sur celui-ci.
kubectl edit deployment fortune-app-blue
- Dans l'éditeur, recherchez la ligne
image
et remplacez le tag de version 1.0.0
par 2.0.0
. Vous pouvez modifier le fichier en appuyant sur la touche i
de votre clavier pour passer en mode insertion.
-
Enregistrez et fermez l'éditeur. Pour ce faire, appuyez sur Échap
, puis saisissez :wq
et appuyez sur Entrée
. Cela déclenchera la mise à jour progressive sur le déploiement approprié et enregistrera correctement son historique. Cela déclenchera la mise à jour progressive sur le déploiement approprié et enregistrera correctement son historique.
-
Affichez le nouveau ReplicaSet
créé par Kubernetes :
kubectl get replicaset
- Vous pouvez voir une nouvelle entrée dans l'historique des déploiements :
kubectl rollout history deployment/fortune-app-blue
Suspendre une mise à jour progressive
- Exécutez la commande suivante pour suspendre le déploiement :
kubectl rollout pause deployment/fortune-app-blue
- Vérifiez l'état actuel du déploiement :
kubectl rollout status deployment/fortune-app-blue
Remarque : La commande d'état peut immédiatement renvoyer le message "deployment "fortune-app-blue" successfully rolled out". Ce comportement est normal et indique que la commande "pause" a bien été effectuée. Cela ne signifie pas que la mise à jour de la version soit terminée.
- Vérifiez la version de chaque pod. Vous verrez un mélange de pods 1.0.0 et 2.0.0, ce qui confirme que le déploiement est suspendu à mi-chemin.
for p in $(kubectl get pods -l app=fortune-app -o=jsonpath='{.items[*].metadata.name}'); do echo $p && curl -s http://$(kubectl get pod $p -o=jsonpath='{.status.podIP}')/version; echo; done
- Appuyez sur
Ctrl+C
pour quitter la boucle.
Reprendre une mise à jour progressive
- Poursuivez le déploiement avec la commande
resume
:
kubectl rollout resume deployment/fortune-app-blue
- Une fois le déploiement terminé, la commande
status
devrait afficher le résultat suivant :
kubectl rollout status deployment/fortune-app-blue
Effectuer le rollback d'une mise à jour
Supposons qu'un bug ait été détecté dans votre nouvelle version.
- La commande
rollout
vous permet d'effectuer un rollback vers la version précédente :
kubectl rollout undo deployment/fortune-app-blue
Remarque : L'exécution du rollback peut prendre quelques instants.
- Vérifiez que le rollback vers la version 1.0.0 a été effectué pour tous les pods :
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Parfait ! Vous en savez plus sur les mises à jour progressives des déploiements Kubernetes.
Tâche 4 : Effectuer un déploiement Canary
Les déploiements Canary vous permettent de tester un nouveau déploiement en production sur un sous-ensemble d'utilisateurs.
Créer un déploiement Canary
- Commencez par créer un déploiement Canary pour la nouvelle version à l'aide du fichier
fortune-app-canary.yaml
:
cat deployments/fortune-app-canary.yaml
- À présent, créez le déploiement Canary :
kubectl create -f deployments/fortune-app-canary.yaml
- Vous devriez ensuite avoir deux déploiements. Vérifiez avec cette commande :
kubectl get deployments
Le service fortune-app
possède un sélecteur pour app: fortune-app
, qui se rapporte à la fois aux pods du déploiement fortune-app-blue
(production) et du déploiement fortune-app-canary
.
Vérifier le déploiement Canary
- Vous pouvez vérifier la version diffusée en envoyant des requêtes au service.
for i in {1..10}; do curl -s http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version; echo;
done
- Si vous exécutez cette commande plusieurs fois, vous verrez que la plupart des requêtes sont diffusées par la version 1.0.0 et qu'un sous-ensemble d'entre elles sont diffusées par la version 2.0.0.
Tester la tâche terminée
Cliquez sur Vérifier ma progression ci-dessous pour valider votre progression dans l'atelier. Si le déploiement Canary a correctement été créé, vous recevrez une note d'évaluation.
Déploiement Canary
Tâche 5 : Effectuer un déploiement bleu-vert
Pour les déploiements bleu-vert, vous allez créer deux déploiements distincts et basculer le trafic de l'un à l'autre en mettant à jour le sélecteur de service.
Le service
- Commencez par mettre à jour le service pour qu'il pointe uniquement vers la version "bleue" (1.0.0).
kubectl apply -f services/fortune-app-blue-service.yaml
Effectuer une mise à jour par déploiement bleu-vert
- Créez maintenant le nouveau déploiement "vert" pour la version 2.0.0.
kubectl create -f deployments/fortune-app-green.yaml
- Une fois que le déploiement vert a démarré, vérifiez que la version 1.0.0 est toujours diffusée.
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
- À présent, mettez à jour le service de sorte qu'il pointe vers la nouvelle version "verte" :
kubectl apply -f services/fortune-app-green-service.yaml
- Une fois le service mis à jour, le déploiement vert est utilisé immédiatement. Vous pouvez maintenant vérifier que la version 2.0.0 est diffusée systématiquement :
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Effectuer un rollback bleu-vert
- Pour effectuer un rollback, il vous suffit de réappliquer le fichier manifeste du service pour le déploiement bleu :
kubectl apply -f services/fortune-app-blue-service.yaml
- Le rollback est effectué une fois le service mis à jour. Vérifiez que la version 1.0.0 est désormais utilisée :
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Bravo ! Vous avez découvert les déploiements bleu-vert et appris à déployer des mises à jour d'applications nécessitant un basculement immédiat entre deux versions.
Déploiement bleu-vert
Félicitations !
Vous avez eu l'occasion de pratiquer davantage l'outil de ligne de commande kubectl
et différents types de configurations de déploiement par fichiers YAML pour assurer le lancement, la mise à jour et le scaling de vos déploiements.
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 : 18 août 2025
Dernier test de l'atelier : 18 août 2025
Copyright 2025 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.