Déployez, faites évoluer et mettez à jour votre site Web avec Google Kubernetes Engine (GKE)

1. Introduction

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 un outil qui pourrait vous aider à faire tout cela et même vous permettre de l'automatiser ! Avec GKE, tout cela est non seulement possible, mais aussi facile. Dans cet atelier de programmation, vous jouez le rôle d'un développeur gérant un site Web d'e-commerce pour une entreprise fictive, Fancy Store. En raison de problèmes de scaling et de pannes, vous êtes chargé de déployer votre application sur GKE.

Les exercices sont organisés selon l'expérience d'un même développeur 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éployez une nouvelle version sans aucun temps d'arrêt.

Schéma de l'architecture

ddba666bd2b02d0d.png

Points abordés

  • Créer un cluster GKE
  • Créer une image Docker
  • Déployer des images Docker sur Kubernetes
  • Procéder au scaling d'une application sur Kubernetes
  • Effectuer une mise à jour progressive sur Kubernetes

Prérequis

  • Un compte Google avec un accès administrateur permettant de créer des projets ou un projet avec le rôle de propriétaire de projet
  • Connaissances de base de Docker et Kubernetes (si ce n'est pas le cas, passez en revue Docker et Kubernetes)

2. Cofiguration de l'environnement

Configuration de l'environnement au rythme de chacun

Si vous n'avez pas encore de compte Google, vous devez en créer un. Connectez-vous à la console Google Cloud, puis créez un projet.

53dad2cefdae71da.png

Capture d'écran du 10-02-2016 12:45:26.png

N'oubliez pas que l'ID du projet est un nom unique parmi tous les projets Google Cloud (le nom ci-dessus est déjà pris et ne vous convient pas). Elle sera désignée par le nom PROJECT_ID par la suite.

Vous devez ensuite activer la facturation dans la console Cloud pour pouvoir utiliser les ressources Google Cloud. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai sans frais de 300$. Si vous n'êtes pas un nouvel utilisateur, ne vous inquiétez pas, car l'atelier de programmation ne devrait pas vous coûter plus que quelques dollars. Toutefois, l'atelier de programmation peut vous coûter plus cher si vous utilisez plus de ressources ou si vous ne les laissez pas s'exécuter (consultez la section "Nettoyer" à la fin). Pour en savoir plus, reportez-vous à la page Tarifs.

Cloud Shell

Bien que vous puissiez faire fonctionner Google Cloud et GKE à distance avec votre ordinateur portable, vous utiliserez Cloud Shell, un environnement de ligne de commande exécuté dans le cloud, pour cet atelier de programmation.

Cette machine virtuelle basée sur Debian contient tous les outils de développement dont vous aurez besoin. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Cela signifie que tout ce dont vous avez besoin pour cet atelier de programmation est un navigateur (oui, tout fonctionne sur un Chromebook).

  1. Pour activer Cloud Shell à partir de Cloud Console, cliquez simplement sur Activer Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (l'opération de provisionnement et la connexion à l'environnement ne devraient prendre que quelques minutes).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Capture d'écran du 2017-06-14 à 10.13.43 PM.png

Une fois connecté à Cloud Shell, vous êtes normalement déjà authentifié et le projet PROJECT_ID est sélectionné :

gcloud auth list

Résultat de la commande

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

Résultat de la commande

[core]
project = <PROJECT_ID>

Si, pour une raison quelconque, le projet n'est pas défini, exécutez simplement la commande suivante :

gcloud config set project <PROJECT_ID>

Vous recherchez votre PROJECT_ID ? Vérifiez l'ID que vous avez utilisé pendant les étapes de configuration ou recherchez-le dans le tableau de bord Cloud Console :

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Par défaut, Cloud Shell définit certaines variables d'environnement qui pourront s'avérer utiles pour exécuter certaines commandes dans le futur.

echo $GOOGLE_CLOUD_PROJECT

Résultat de la commande

<PROJECT_ID>
  1. Pour finir, définissez la configuration du projet et de la zone par défaut :
gcloud config set compute/zone us-central1-f

Vous pouvez choisir parmi différentes zones. Pour en savoir plus, consultez la page Régions et Zones.

3. Créer un cluster GKE

Maintenant que vous disposez d'un environnement de développement opérationnel, vous avez besoin d'un cluster GKE sur lequel déployer votre site Web. Avant de créer un cluster, vous devez vous assurer que les API appropriées sont activées. Exécutez la commande suivante pour activer l'API containers:

gcloud services enable container.googleapis.com

Vous pouvez maintenant créer votre cluster. Suivez les étapes ci-dessous pour créer un cluster nommé fancy-cluster avec 3 nœuds:

gcloud container clusters create fancy-cluster --num-nodes 3

La création du cluster peut prendre plusieurs minutes. Ensuite, exécutez la commande suivante et affichez les trois instances de machines virtuelles (VM) de calcul du cluster:

gcloud compute instances list

Sortie :

NAME                                          ZONE        MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
gke-fancy-cluster-default-pool-ad92506d-1ng3  us-east4-a  n1-standard-1               10.150.0.7   XX.XX.XX.XX    RUNNING
gke-fancy-cluster-default-pool-ad92506d-4fvq  us-east4-a  n1-standard-1               10.150.0.5   XX.XX.XX.XX    RUNNING
gke-fancy-cluster-default-pool-ad92506d-4zs3  us-east4-a  n1-standard-1               10.150.0.6   XX.XX.XX.XX    RUNNING

Vous pouvez également afficher votre cluster et les informations associées dans la console Cloud. Cliquez sur le bouton de menu en haut à gauche, faites défiler la page jusqu'à Kubernetes Engine, puis cliquez sur "Clusters". Le cluster nommé fancy-cluster doit s'afficher.

795c794b03c5d2b0.png

6b394dfb8a6031f2.png

Félicitations ! Vous avez créé votre premier cluster.

4. Cloner le dépôt source

Comme il s'agit d'un site Web existant, il vous suffit de cloner la source à partir du dépôt afin de pouvoir vous concentrer sur la création d'images Docker et le déploiement sur GKE.

Exécutez les commandes suivantes pour cloner le dépôt source dans votre instance Cloud Shell et le placer dans le répertoire approprié. Vous allez également installer les dépendances Node.js afin de pouvoir tester votre application avant de la déployer.

cd ~
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
cd ~/monolith-to-microservices
./setup.sh

Cette opération clone le dépôt, modifie le répertoire et installe les dépendances nécessaires à l'exécution locale de votre application. L'exécution de ce script peut prendre quelques minutes.

Faites preuve de diligence raisonnable et testez votre application. Exécutez la commande suivante pour démarrer votre serveur Web:

cd ~/monolith-to-microservices/monolith
npm start

Sortie :

Monolith listening on port 8080!

Vous pouvez prévisualiser votre application en cliquant sur l'icône d'aperçu sur le Web dans le menu Cloud Shell, puis en sélectionnant "Prévisualiser sur le port 8080".

5869738f0e9ec386.png

Une nouvelle fenêtre devrait s'afficher, dans laquelle vous pouvez voir votre Fancy Store en action.

9ed25c3f0cbe62fa.png

Vous pouvez fermer cette fenêtre après avoir consulté le site Web. Appuyez sur Control+C (Windows ou Mac) dans la fenêtre de terminal pour arrêter le processus du serveur Web.

5. Créer un conteneur Docker avec Cloud Build

Maintenant que vos fichiers sources sont prêts à être utilisés, il est temps de déployer votre application dans un conteneur Docker.

Normalement, vous devriez adopter une approche en deux étapes consistant à créer un conteneur Docker et à le transférer vers un registre pour stocker l'image à partir de laquelle GKE extrait. Cependant, 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 commande. Pour savoir comment créer et transférer un fichier Docker manuellement, consultez le guide de démarrage rapide de Container Registry.

Cloud Build compresse les fichiers du répertoire et les déplace vers un bucket Cloud Storage. Le processus de compilation récupère ensuite les fichiers du bucket et utilise le Dockerfile pour exécuter le processus de compilation Docker. Étant donné que vous avez spécifié l'option --tag avec l'hôte en tant que gcr.io pour l'image Docker, l'image Docker résultante est transférée vers Container Registry.

Tout d'abord, vous devez activer l'API Cloud Build en exécutant la commande suivante:

gcloud services enable cloudbuild.googleapis.com

Une fois l'API activée, exécutez la commande suivante dans Cloud Shell pour lancer le processus de compilation:

cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .

Ce processus prend quelques minutes, mais une fois terminé, le résultat suivant s'affiche dans le terminal:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE                                                                                  IMAGES                              STATUS
1ae295d9-63cb-482c-959b-bc52e9644d53  2019-08-29T01:56:35+00:00  33S       gs://<PROJECT_ID>_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz  gcr.io/<PROJECT_ID>/monolith:1.0.0  SUCCESS

Pour afficher votre historique de compilation ou observer le processus en temps réel, vous pouvez accéder à la console Cloud. Cliquez sur le bouton de menu en haut à gauche, faites défiler la page jusqu'à "Ci/CD", cliquez sur Cloud Build, puis sur "Historique". Vous pouvez alors voir la liste de vos précédentes compilations, mais vous ne devriez voir que celle que vous avez créée.

4c753ede203255f6.png

Si vous cliquez sur l'ID de la compilation, vous pouvez consulter tous les détails de cette compilation, y compris la sortie du journal.

Sur la page d'informations sur la compilation, vous pouvez afficher l'image de conteneur créée en cliquant sur son nom dans la section "Informations sur la compilation".

6e88ed1643dfe629.png

6. Déployer le conteneur sur GKE

Maintenant que vous avez conteneurisé votre site Web et transféré le conteneur vers Container Registry, vous pouvez le déployer dans 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 représentant un conteneur (ou un groupe de conteneurs fortement couplés). Le pod est la plus petite unité déployable dans Kubernetes. Ici, chaque pod contient uniquement votre conteneur "monolith".

Pour déployer votre application, vous devez créer un déploiement. Un déploiement 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 ce cas, le déploiement n'exécute qu'un seul pod de votre application. Les déploiements garantissent ce résultat en créant un ReplicaSet (ensemble d'instances répliquées). 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 amène Kubernetes à créer sur votre cluster un déploiement nommé monolith avec une 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

Vérifier le déploiement

Pour vérifier que le déploiement a bien été créé, exécutez la commande suivante. L'état du pod passe à l'état "Running" (En cours d'exécution):

kubectl get all

Sortie :

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   <none>        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 plusieurs choses. Vous pouvez voir votre déploiement, qui est à jour. votre ReplicaSet, avec un pod souhaité égal à 1. et votre pod, qui est en cours d'exécution. Apparemment, tout a bien été créé.

Pour afficher individuellement vos ressources, vous pouvez exécuter les commandes suivantes:

# 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 tous les avantages de Kubernetes, vous pouvez simuler un plantage du serveur, supprimer le pod et observer ce qui se passe.

Copiez le nom du pod obtenu dans la commande précédente et exécutez la commande suivante pour le supprimer:

kubectl delete pod/<POD_NAME>

Si vous êtes assez rapide, vous pouvez exécuter la commande précédente pour tout afficher à nouveau. Vous devriez voir deux pods, l'un en cours d'arrêt, et l'autre en cours de création ou d'exécution:

kubectl get all

Sortie :

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

Pourquoi ? 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 le scaling pour vous assurer que plusieurs instances sont en cours d'exécution. Ainsi, si l'une d'elles tombe en panne, vos utilisateurs ne subiront aucun temps d'arrêt.

7. 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 n'ont pas 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 (susceptible d'être facturé) 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

Sortie :

service/monolith exposed

Accéder au service

GKE attribue l'adresse IP externe à la ressource de service, et non au déploiement. Si vous souhaitez trouver 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

Sortie :

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

Une fois que vous avez déterminé l'adresse IP externe de votre application, copiez-la. Saisissez cette URL (telle que http://203.0.113.0) dans votre navigateur pour vérifier si l'application est accessible.

9ed25c3f0cbe62fa.png

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

8. Effectuer le scaling du déploiement GKE

Maintenant que vous disposez d'une instance en cours d'exécution de votre application dans GKE et que vous l'avez exposée sur Internet, votre site Web est devenu extrêmement populaire. Vous avez besoin d'un moyen de faire évoluer votre application vers plusieurs instances afin de pouvoir gérer le trafic. Apprenez à faire évoluer votre application jusqu'à trois instances répliquées.

Exécutez la commande suivante pour effectuer le scaling à la hausse de votre déploiement jusqu'à trois instances répliquées:

kubectl scale deployment monolith --replicas=3

Sortie :

deployment.apps/monolith scaled

Vérifier le déploiement à l'échelle

Pour vérifier que le scaling du déploiement a bien été effectué, exécutez la commande suivante:

kubectl get all

Sortie :

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

Vous devriez voir trois instances de votre pod en cours d'exécution. Notez également que le nombre souhaité pour votre déploiement et votre ReplicaSet est désormais de trois.

9. Apporter des modifications au site Web

Votre équipe marketing vous a demandé de modifier la page d'accueil de votre site Web. Il pense qu'elle devrait fournir plus d'informations en expliquant ce qu'est votre entreprise et ce que vous vendez réellement. Dans cette section, vous allez ajouter du texte à la page d'accueil pour satisfaire l'équipe marketing ! Il semble que l'un de nos développeurs ait déjà effectué les modifications avec le nom de fichier index.js.new. Vous pouvez copier le fichier dans index.js pour répercuter vos modifications. Suivez les instructions ci-dessous pour apporter les changements appropriés.

Exécutez les commandes suivantes, copiez le fichier mis à jour sous le nom de fichier correct, puis imprimez son contenu pour vérifier les modifications:

cd ~/monolith-to-microservices/react-app/src/pages/Home
mv index.js.new index.js
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 (
    <div className={classes.root}>
      <Paper className={classes.paper}>
        <Typography variant="h5">
          Fancy Fashion &amp; Style Online
        </Typography>
        <br />
        <Typography variant="body1">
          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!
        </Typography>
      </Paper>
    </div>
  );
}

Vous avez mis à jour les composants React, mais vous devez compiler l'application React pour générer les fichiers statiques. 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 votre code est mis à jour, vous devez recompiler votre conteneur Docker et le publier dans Container Registry. Vous pouvez utiliser la même commande que précédemment, mais cette fois, vous allez mettre à jour le libellé de la version.

Exécutez la commande suivante pour déclencher une nouvelle compilation Cloud Build avec la version d'image mise à jour de 2.0.0 :

cd ~/monolith-to-microservices/monolith

#Feel free to test your application
npm start

gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .

Appuyez sur Control+C (Windows ou Mac) dans la fenêtre de terminal pour arrêter le processus du serveur Web.

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

10. Mettre à jour le site Web sans aucun temps d'arrêt

Les modifications ont été effectuées, puis validées par l'équipe marketing. Il est temps de mettre à jour le site Web sans interrompre le travail des utilisateurs. Suivez les instructions ci-dessous pour mettre à jour votre site Web.

Les mises à jour progressives de GKE garantissent que votre application reste opérationnelle et disponible même lorsque le système remplace les instances de l'ancienne image de conteneur par la nouvelle sur toutes les instances répliquées en cours d'exécution.

À partir de la ligne de commande, vous pouvez indiquer à Kubernetes que vous souhaitez mettre à jour l'image de votre déploiement vers une nouvelle version à l'aide de la commande suivante:

kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0

Sortie :

deployment.apps/monolith image updated

Vérifier le déploiement

Vous pouvez valider la mise à jour de votre déploiement en exécutant la commande suivante:

kubectl get pods

Sortie :

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

Trois pods sont créés et les anciens pods sont arrêtés. On peut distinguer entre les âges nouveaux et anciens. À terme, vous ne verrez plus que trois pods, qui correspondent aux trois pods que vous avez mis à jour.

Pour vérifier vos modifications, accédez de nouveau à l'adresse IP externe de l'équilibreur de charge et notez que votre application a été mise à jour.

Exécutez la commande suivante pour lister les services et afficher l'adresse IP si vous l'avez oubliée:

kubectl get svc

Votre site Web doit afficher le texte que vous avez ajouté au composant de la page d'accueil.

8006c9938dbd5aa5.png

11. Effectuer un nettoyage

Supprimer le dépôt Git

cd ~
rm -rf monolith-to-microservices

Supprimer des images Container Registry

REMARQUE: Si vous avez créé d'autres versions, vous pouvez utiliser la même syntaxe pour supprimer ces images. Pour cet atelier de programmation, nous partons du principe que vous n'avez que deux tags.

# Delete the container image for version 1.0.0 of our 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 our monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet

Supprimer les artefacts Cloud Build de Cloud Storage

REMARQUE: Si vous avez utilisé Cloud Build pour d'autres artefacts que cet atelier de programmation, vous devrez supprimer manuellement votre source du bucket Cloud Storage gs://<PROJECT_ID>_cloudbuild/source.

# 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 | awk 'NR > 1 {print $4}' | while read line; do gsutil rm $line; done

Supprimer le service GKE

kubectl delete service monolith
kubectl delete deployment monolith

Supprimer le cluster GKE

gcloud container clusters delete fancy-cluster

REMARQUE: L'exécution de cette commande peut prendre un certain temps.

12. Félicitations !

Vous avez déployé, fait évoluer et mis à jour votre site Web sur GKE. Vous savez maintenant utiliser Docker et Kubernetes.

Ressources supplémentaires