arrow_back

Déploiement, scaling et mise à jour de votre site Web sur Google Kubernetes Engine

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Déploiement, scaling et mise à jour de votre site Web sur Google Kubernetes Engine

Lab 1 heure 30 minutes universal_currency_alt 1 crédit show_chart Débutant
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP663

Google Cloud – Ateliers adaptés au rythme de chacun

Présentation

Exécuter des sites Web et des applications n'est pas chose facile. Des problèmes inattendus surviennent, les serveurs plantent, l'augmentation de la demande accroît la quantité de ressources nécessaires, et apporter des modifications en évitant les temps d'arrêt se révèle aussi complexe que stressant. Imaginez que vous disposiez d'un outil pouvant vous aider à accomplir l'ensemble de ces tâches, et même à les automatiser. Grâce à Kubernetes, toutes ces opérations sont non seulement possibles, mais aussi d'une grande simplicité.

Dans cet atelier, vous allez jouer le rôle d'un développeur employé par une entreprise fictive, Fancy Store, qui gère un site Web d'e-commerce. En raison de problèmes de scaling et d'interruptions, vous êtes chargé de déployer votre application sur Google Kubernetes Engine (GKE).

Les exercices de cet atelier sont ordonnés de façon à refléter une démarche classique en termes de développement cloud :

  1. Créer un cluster GKE
  2. Créer un conteneur Docker
  3. Déployer le conteneur sur GKE
  4. Exposer le conteneur via un service
  5. Procéder au scaling du conteneur pour en exécuter plusieurs instances répliquées
  6. Modifier le site Web
  7. Déployer une nouvelle version sans aucun temps d'arrêt

Schéma de l'architecture

Schéma de l'architecture

Prérequis

  • Il est recommandé d'avoir des connaissances de base sur Docker et Kubernetes pour mieux comprendre l'atelier.

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 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) ;
Remarque : Ouvrez une fenêtre de navigateur en mode incognito/navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le temporaire étudiant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier afin d'éviter que des frais supplémentaires ne vous soient facturés.

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

  1. Cliquez sur Activer Cloud Shell Icône 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 :

Your Cloud Platform project in this session is set to YOUR_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.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

  2. Vous devez à présent obtenir le résultat suivant :

Résultat :

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = <ID_Projet>

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 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

  • Définissez la configuration du projet et de la zone par défaut :
gcloud config set compute/zone {{{project_0.default_zone|lab zone}}}

Pour en savoir plus, consultez la documentation sur les régions et les zones.

Tâche 1 : Créer un cluster GKE

Vous devez disposer d'un cluster Kubernetes sur lequel déployer votre site Web. Commencez par vérifier que les API appropriées sont bien activées.

  1. Exécutez la commande suivante pour activer l'API Container Registry :
gcloud services enable container.googleapis.com

Vous voici prêt à créer un cluster.

  1. Exécutez la commande suivante pour créer un cluster GKE nommé fancy-cluster avec trois nœuds :
gcloud container clusters create fancy-cluster --num-nodes 3 Remarque : Si vous obtenez un message d'erreur signalant qu'aucune région ni zone n'a été spécifiée, reportez-vous à la section sur la configuration de l'environnement pour vérifier que la zone de calcul par défaut a bien été définie.

La création du cluster prend quelques minutes.

  1. Maintenant, exécutez la commande suivante pour afficher les trois instances de VM de nœud de calcul du cluster :
gcloud compute instances list

Résultat :

NAME: gke-fancy-cluster-default-pool-fb932da6-4sk6 ZONE: us-central1-f MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.3 EXTERNAL_IP: 34.172.106.173 STATUS: RUNNING NAME: gke-fancy-cluster-default-pool-fb932da6-d6qc ZONE: us-central1-f MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.4 EXTERNAL_IP: 34.133.99.176 STATUS: RUNNING NAME: gke-fancy-cluster-default-pool-fb932da6-ztnh ZONE: us-central1-f MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.5 EXTERNAL_IP: 34.136.180.45 STATUS: RUNNING
  1. Recherchez votre cluster Kubernetes et les informations associées dans la console Google Cloud.

  2. Cliquez sur le menu de navigation (Icône du menu de navigation) > Kubernetes Engine > Clusters.

Le cluster nommé fancy-cluster doit s'afficher.

Félicitations ! Vous venez de créer votre premier cluster Kubernetes.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer un cluster GKE

Tâche 2 : Cloner le dépôt source

Puisqu'il s'agit d'un site Web existant, il vous suffit de cloner la source, ce qui vous permet de vous concentrer sur la création d'images Docker et sur leur déploiement sur GKE.

  1. Exécutez les commandes suivantes pour cloner le dépôt git dans votre instance Cloud Shell :
cd ~ git clone https://github.com/googlecodelabs/monolith-to-microservices.git
  1. Accédez au répertoire approprié.

  2. Vous allez également installer les dépendances NodeJS de manière à pouvoir tester votre application avant de la déployer :

cd ~/monolith-to-microservices ./setup.sh

Attendez quelques minutes que ce script finisse de s'exécuter.

  1. Vérifiez que vous exécutez Cloud Shell avec la dernière version de npm :
nvm install --lts
  1. Accédez au répertoire approprié, puis testez l'application en exécutant la commande suivante pour démarrer le serveur Web :
cd ~/monolith-to-microservices/monolith npm start

Résultat :

Monolith listening on port 8080!
  1. Vous pouvez prévisualiser votre application en cliquant sur l'icône d'aperçu sur le Web, puis en sélectionnant Prévisualiser sur le port 8080 :

Option &quot;Prévisualiser sur le port 8080&quot; encadrée

Une nouvelle fenêtre s'affiche, dans laquelle vous pouvez voir le site Fancy Store en ligne.

Page de bienvenue de Fancy Store

Laissez cet onglet ouvert, car vous y reviendrez dans la suite de cet atelier.

  1. Pour arrêter le processus du serveur Web, appuyez sur CTRL+C dans Cloud Shell.

Tâche 3 : Créer un conteneur Docker avec Cloud Build

Maintenant que vos fichiers sources sont prêts à l'emploi, le moment est venu de déployer votre application dans un conteneur Docker.

En temps normal, vous devriez adopter une approche en deux étapes consistant à créer un conteneur Docker, puis à le transférer vers un registre afin de stocker l'image pour que GKE puisse l'extraire. Vous pouvez vous simplifier la vie en utilisant Cloud Build pour créer le conteneur Docker et pour placer l'image dans Container Registry en une seule opération. En effet, vous pouvez créer et déplacer l'image vers Container Registry à l'aide d'une seule et même commande. Pour découvrir comment créer et transférer un fichier Docker manuellement, consultez le Guide de démarrage rapide pour Container Registry.

Google Cloud Build compressera les fichiers du répertoire et les déplacera vers un bucket Google Cloud Storage. Ensuite, le processus de compilation récupérera tous les fichiers du bucket et utilisera le Dockerfile pour exécuter le processus de compilation Docker. Étant donné que nous avons spécifié l'option --tag avec l'hôte en tant que gcr.io pour l'image Docker, l'image Docker résultante sera transférée vers Google Cloud Container Registry.

  1. Pour commencer, assurez-vous que l'API Cloud Build est activée en exécutant la commande suivante :
gcloud services enable cloudbuild.googleapis.com
  1. Exécutez la commande ci-dessous pour lancer le processus de compilation :
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
  1. Ce processus prend quelques minutes.

Vous devriez obtenir un résultat semblable à celui-ci dans le terminal :

ID CREATE_TIME DURATION SOURCE IMAGES STATUS 1ae295d9-63cb-482c-959b-bc52e9644d53 2019-08-29T01:56:35+00:00 33S gs://_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz gcr.io//monolith:1.0.0 SUCCESS
  1. Pour visualiser votre historique de compilation ou observer le processus en temps réel, cliquez sur le menu de navigation, faites-le défiler vers le bas jusqu'à la section "Outils", puis cliquez sur Cloud Build > Historique. La liste de toutes vos compilations précédentes s'affiche.

  2. Cliquez sur le nom de la compilation pour afficher tous les détails la concernant, y compris la sortie du journal.

Facultatif : sur la page "Informations sur le build", cliquez sur Résumé de la compilation > Détails de l'exécution > Nom de l'image dans la section des informations de build pour voir l'image du conteneur :

Page à onglets &quot;Détails de l&#39;exécution&quot; avec le nom de l&#39;image encadré

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer un conteneur Docker avec Cloud Build

Tâche 4 : Déployer le conteneur sur GKE

Maintenant que vous avez conteneurisé votre site Web et transféré votre conteneur vers Google Container Registry, le moment est venu de déployer ce conteneur sur Kubernetes.

Pour déployer et gérer des applications sur un cluster GKE, vous devez communiquer avec le système de gestion de clusters Kubernetes. Pour ce faire, vous utiliserez généralement l'outil de ligne de commande kubectl.

Kubernetes représente les applications sous forme de pods, qui sont des unités faisant référence à un conteneur (ou à un groupe de conteneurs fortement couplés). Le pod est la plus petite unité déployable dans Kubernetes. Dans cet atelier, chaque pod contient uniquement votre conteneur "monolith".

Pour déployer votre application, créez une ressource Deployment. Deployment gère plusieurs copies de votre application, appelées instances répliquées, et planifie leur exécution sur les nœuds individuels du cluster. Dans le cas de cet atelier, Deployment n'exécute qu'un seul pod de l'application. Les objets Deployment garantissent ce résultat en créant un ReplicaSet. Le rôle du ReplicaSet est de garantir l'exécution systématique du nombre d'instances répliquées spécifié.

La commande kubectl create deployment que vous allez utiliser ensuite demande à Kubernetes de créer sur votre cluster un déploiement nommé monolith avec 1 instance répliquée.

  • Exécutez la commande suivante pour déployer votre application :
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 Remarque : Nous vous recommandons d'utiliser un fichier YAML et un système de gestion de code source tel que GitHub ou Cloud Source Repositories pour stocker ces modifications. Pour en savoir plus sur ces ressources, consultez la documentation sur les déploiements.

Cliquez sur Vérifier ma progression pour valider l'objectif. Déployer le conteneur sur GKE

Vérifier le déploiement

  1. Vérifiez que le déploiement a bien été créé :
kubectl get all

Réexécutez cette commande jusqu'à ce que l'état du pod indique qu'il est en cours d'exécution.

Résultat :

NAME READY STATUS RESTARTS AGE pod/monolith-7d8bc7bf68-htm7z 1/1 Running 0 6m21s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 1 1 1 1 20m NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-7d8bc7bf68 1 1 1 20m

Ce résultat vous indique différentes choses :

  • Le déploiement, qui est actuellement exécuté
  • Le ReplicaSet, avec un nombre de pods souhaité égal à 1
  • Le pod, qui est en cours d'exécution

Apparemment, tous les éléments ont bien été créés.

Remarque : Vous pouvez également consulter vos déploiements Kubernetes via la console en accédant au menu de navigation > Kubernetes Engine > Charges de travail. Remarque : Si vous constatez des erreurs ou des états inattendus, vous pouvez déboguer vos ressources à l'aide des commandes suivantes pour afficher des informations détaillées les concernant :

kubectl describe pod monolith

kubectl describe pod/monolith-7d8bc7bf68-2bxts

kubectl describe deployment monolith

kubectl describe deployment.apps/monolith

Le résultat se termine par une liste d'événements présentant les erreurs et des informations détaillées sur vos ressources.

Facultatif : vous pouvez également exécuter des commandes sur des déploiements individuels :

# Show pods kubectl get pods # Show deployments kubectl get deployments # Show replica sets kubectl get rs #You can also combine them kubectl get pods,deployments

Pour voir clairement les avantages de Kubernetes, simulez un plantage du serveur en supprimant un pod et observez ce qui se passe.

  1. Copiez un nom de pod obtenu via la commande précédente, puis utilisez-le dans la commande suivante pour supprimer le pod :
kubectl delete pod/<POD_NAME>

Vous pouvez observer la suppression du pod sur la page Charges de travail.

  1. Cliquez sur le nom de la charge de travail (cette opération s'effectue très vite).

  2. Si vous êtes suffisamment rapide, vous pouvez réexécuter la commande get all. Vous devez alors voir s'afficher deux pods, l'un en cours d'arrêt et l'autre en cours de création ou d'exécution :

kubectl get all

Résultat :

NAME READY STATUS RESTARTS AGE pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 4s pod/monolith-7d8bc7bf68-htm7z 1/1 Terminating 0 9m35s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 1 1 1 1 24m NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-7d8bc7bf68 1 1 1 24m

Que s'est-il passé ? Le ReplicaSet a vu que le pod était en cours d'arrêt et a donc déclenché un nouveau pod pour préserver le nombre d'instances répliquées souhaité. Par la suite, vous découvrirez comment effectuer un scaling horizontal pour garantir l'exécution systématique de plusieurs instances. De cette manière, les utilisateurs ne constateront aucun temps d'arrêt en cas de défaillance de l'une des instances.

Tâche 5 : Exposer le déploiement GKE

Vous avez déployé votre application sur GKE, mais vous ne pouvez pas y accéder en dehors du cluster. Par défaut, les conteneurs que vous exécutez sur GKE ne sont pas accessibles depuis Internet, car ils sont dépourvus d'adresses IP externes. Vous devez donc exposer explicitement votre application au trafic Internet via une ressource Service. Un service offre une compatibilité réseau et IP avec les pods de votre application. GKE crée une adresse IP externe et un équilibreur de charge pour votre application.

  • Exécutez la commande suivante pour exposer votre site Web à Internet :
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080

Accéder au service

GKE attribue l'adresse IP externe à la ressource de service, et non à la ressource de déploiement.

  1. Si vous souhaitez connaître l'adresse IP externe provisionnée par GKE pour votre application, vous pouvez inspecter le service à l'aide de la commande kubectl get service :
kubectl get service

Résultat :

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE monolith 10.3.251.122 203.0.113.0 80:30877/TCP 3d

Réexécutez la commande jusqu'à ce que votre service dispose d'une adresse IP externe.

  1. Une fois que vous avez déterminé l'adresse IP externe de votre application, copiez-la et dirigez votre navigateur vers l'URL (par exemple "http://203.0.113.0") pour vérifier si l'application est accessible.

Le site Web que vous avez testé précédemment doit alors s'afficher. Votre site Web s'exécute désormais entièrement sur Kubernetes.

Cliquez sur Vérifier ma progression pour valider l'objectif. Exposer le déploiement GKE

Tâche 6 : Effectuer le scaling du déploiement GKE

Maintenant que votre application s'exécute dans GKE et est exposée à Internet, imaginons que votre site Web soit devenu extrêmement populaire. Vous devez donc procéder au scaling de votre application de manière à en exécuter plusieurs instances pour lui permettre de gérer la totalité du trafic. Dans cette section, vous allez apprendre à exécuter jusqu'à 3 instances répliquées de l'application.

  1. Dans Cloud Shell, exécutez la commande suivante pour effectuer le scaling à la hausse de votre déploiement pour qu'il passe à trois instances répliquées :
kubectl scale deployment monolith --replicas=3
  1. Vérifiez que le scaling du déploiement a bien été effectué :
kubectl get all

Résultat :

NAME READY STATUS RESTARTS AGE pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 36m pod/monolith-7d8bc7bf68-7ds7q 1/1 Running 0 45s pod/monolith-7d8bc7bf68-c5kxk 1/1 Running 0 45s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.27.240.1 443/TCP 25h service/monolith LoadBalancer 10.27.253.64 XX.XX.XX.XX 80:32050/TCP 6m7s NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 3 3 3 3 61m NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-7d8bc7bf68 3 3 3 61m

Trois instances de votre pod doivent désormais être en cours d'exécution. Notez que le nombre d'instances souhaité pour votre déploiement et pour l'ensemble d'instances répliquées est maintenant égal à 3.

Cliquez sur Vérifier ma progression pour valider l'objectif. Effectuer le scaling du déploiement GKE

Tâche 7 : Apporter des modifications au site Web

Scénario : votre équipe marketing vous a demandé de modifier la page d'accueil de votre site. Elle estime en effet que cette page doit fournir plus d'informations sur votre entreprise et sur les produits qu'elle commercialise.

Tâche : vous allez ajouter du texte à la page d'accueil pour répondre aux attentes de l'équipe marketing. L'un des développeurs a déjà spécifié les modifications souhaitées dans le fichier index.js.new. Il vous suffit donc de copier le contenu de ce fichier dans le fichier index.js pour répercuter ces modifications. Suivez les instructions ci-dessous pour apporter les changements appropriés.

  1. Exécutez les commandes suivantes pour créer une copie du fichier mis à jour sous le nom de fichier correct :
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js
  1. Affichez le contenu de ce fichier pour vérifier les modifications :
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

Le code obtenu doit se présenter comme suit :

/* Copyright 2019 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. \*/ import React from "react"; import { makeStyles } from "@material-ui/core/styles"; import Paper from "@material-ui/core/Paper"; import Typography from "@material-ui/core/Typography"; const useStyles = makeStyles(theme => ({ root: { flexGrow: 1 }, paper: { width: "800px", margin: "0 auto", padding: theme.spacing(3, 2) } })); export default function Home() { const classes = useStyles(); return (
Fancy Fashion & Style Online
Tired of mainstream fashion ideas, popular trends and societal norms? This line of lifestyle products will help you catch up with the Fancy trend and express your personal style. Start shopping Fancy items now!
); }

Les composants React ont été mis à jour, mais vous devez compiler l'application React pour générer les fichiers statiques.

  1. Exécutez la commande suivante pour compiler l'application React et la copier dans le répertoire public "monolith" :
cd ~/monolith-to-microservices/react-app npm run build:monolith

Maintenant que le code a été mis à jour, vous devez recompiler le conteneur Docker et le publier dans Google Cloud Container Registry. Utilisez la même commande que précédemment, mais en modifiant le libellé de la version.

  1. Exécutez la commande suivante pour déclencher une nouvelle compilation cloud avec la version d'image mise à jour de 2.0.0 :
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .

Dans la section suivante, vous allez utiliser cette image pour mettre à jour votre application sans aucun temps d'arrêt.

Cliquez sur Vérifier ma progression pour valider l'objectif. Apporter des modifications au site Web

Tâche 8 : Mettre à jour le site Web sans aucun temps d'arrêt

Les modifications ont été effectuées, puis validées par l'équipe marketing. Le moment est venu de mettre à jour le site Web en conséquence sans interrompre le travail des utilisateurs.

Le mécanisme de mise à jour progressive de GKE garantit que l'application reste active et disponible, même lorsque le système remplace les instances de l'ancienne image du conteneur par la nouvelle image sur toutes les instances répliquées en cours d'exécution.

  • Exécutez la commande suivante pour indiquer à Kubernetes que vous voulez remplacer l'image de votre déploiement par une nouvelle version :
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0

Vérifier le déploiement

  1. Vous pouvez vérifier que votre déploiement a été mis à jour en exécutant la commande suivante :
kubectl get pods

Résultat :

NAME READY STATUS RESTARTS AGE monolith-584fbc994b-4hj68 1/1 Terminating 0 60m monolith-584fbc994b-fpwdw 1/1 Running 0 60m monolith-584fbc994b-xsk8s 1/1 Terminating 0 60m monolith-75f4cf58d5-24cq8 1/1 Running 0 3s monolith-75f4cf58d5-rfj8r 1/1 Running 0 5s monolith-75f4cf58d5-xm44v 0/1 ContainerCreating 0 1s

Vous pouvez constater que trois pods sont en cours de création et que vos anciens pods sont en train d'être arrêtés. La durée d'exécution vous permet de différencier les nouveaux pods des anciens. À terme, vous ne verrez plus que trois pods, qui correspondent aux trois pods que vous avez mis à jour.

  1. Testez l'application en exécutant la commande suivante pour démarrer le serveur Web :
npm start
  1. Pour vérifier vos modifications, revenez à l'onglet de la page Web de l'application et actualisez la page. Vous pouvez constater que votre application a bien été mise à jour.

Votre site Web doit maintenant afficher le texte que vous venez d'ajouter au composant de la page d'accueil.

Page d&#39;accueil de Fancy Store

  1. Pour arrêter le processus du serveur Web, appuyez sur CTRL+C dans Cloud Shell.

Cliquez sur Vérifier ma progression pour valider l'objectif. Mettre à jour le site Web sans aucun temps d'arrêt

Tâche 9 : Effectuer un nettoyage

Lorsque vous aurez terminé cet atelier, toutes les ressources associées seront supprimées. Cependant, nous vous recommandons également de supprimer de votre propre environnement les ressources dont vous n'avez plus l'utilité.

  1. Supprimez le dépôt git :
cd ~ rm -rf monolith-to-microservices
  1. Supprimez les images Google Container Registry :
# Delete the container image for version 1.0.0 of the monolith gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --quiet # Delete the container image for version 2.0.0 of the monolith gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet
  1. Supprimez les artefacts Google Cloud Build de Google Cloud Storage :
# The following command will take all source archives from all builds and delete them from cloud storage # Run this command to print all sources: # gcloud builds list | awk 'NR > 1 {print $4}' gcloud builds list | grep 'SOURCE' | cut -d ' ' -f2 | while read line; do gsutil rm $line; done
  1. Supprimez le service GKE :
kubectl delete service monolith kubectl delete deployment monolith
  1. Supprimez le cluster GKE :
gcloud container clusters delete fancy-cluster {{{project_0.default_region | lab region}}}
  1. Saisissez Y pour confirmer la suppression. L'exécution de cette commande peut prendre quelques minutes.

Félicitations !

Vous avez assuré le déploiement, le scaling et la mise à jour de votre site Web sur GKE. Vous savez maintenant utiliser Docker et Kubernetes.

Terminer votre quête

Cet atelier d'auto-formation fait partie de la quête Website on Google Cloud. Une quête est une série d'ateliers associés qui constituent un parcours de formation. 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 disponibles.

Vous cherchez un atelier challenge pratique pour démontrer vos compétences et valider vos connaissances ? À la fin de cette quête, terminez cet atelier challenge supplémentaire pour recevoir un badge numérique Google Cloud exclusif.

Atelier suivant

Continuez sur votre lancée en suivant l'atelier Migrer un site Web monolithique vers une architecture de microservices sur Google Kubernetes Engine, ou consultez nos suggestions de ressources :

Étapes suivantes et informations supplémentaires

Dernière mise à jour du manuel : 13 septembre 2023

Dernier test de l'atelier : 13 septembre 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.