GSP654
Présentation
Istio est un framework Open Source qui permet de connecter, de sécuriser et de gérer des microservices. Il peut être utilisé avec n'importe quel service, y compris, mais sans s'y limiter, les services qui sont hébergés dans un cluster Kubernetes. Grâce à Istio, vous pouvez créer un réseau de services déployés avec l'équilibrage de charge, l'authentification de service à service, la surveillance et bien d'autres fonctions, sans avoir à modifier le code des services.
Dans les systèmes distribués fiables, par exemple, il est fréquent de relancer une requête après un échec, éventuellement avec un intervalle exponentiel entre les tentatives. C'est possible au moyen de bibliothèques pour Java, Golang et Node.js. Toutefois, leur utilisation au sein de l'application signifie que chaque application devra résoudre ce problème de manière indépendante. Le side-car Istio pourrait le faire pour l'application, et ce automatiquement.
Cloud Service Mesh
Cloud Service Mesh fonctionne avec Istio. Cette solution vous fait bénéficier d'une distribution d'Istio testée en entreprise et entièrement compatible, qui vous permet de créer et de déployer un maillage de services avec GKE Enterprise, que votre cluster fonctionne dans Google Cloud ou sur site.
Vous pouvez utiliser les profils de configuration inclus avec les paramètres recommandés personnalisés pour Google Kubernetes Engine ou GKE on Bare Metal.
Enfin, Cloud Service Mesh dispose d'une suite de fonctionnalités et d'outils supplémentaires qui vous aident à observer et à gérer des services sécurisés et fiables de manière unifiée :
- Les métriques et journaux de service pour le trafic HTTP(S) dans le cluster GKE de votre réseau maillé sont automatiquement ingérés dans Google Cloud.
- Les tableaux de bord de services préconfigurés vous fournissent les informations nécessaires pour comprendre vos services.
- La télémétrie détaillée vous permet d'explorer vos métriques et journaux, en filtrant et en segmentant vos données en fonction d'une grande variété d'attributs.
- Les relations de service à service vous permettent de savoir rapidement qui se connecte à quel service et d'identifier les dépendances entre services.
- Les objectifs de niveau de service (SLO) fournissent des insights sur l'état de vos services. Vous pouvez facilement définir un SLO et une alerte en fonction de vos propres normes d'état de service.
Cloud Service Mesh est le moyen le plus simple et le plus complet pour implémenter un maillage de services basé sur Istio sur vos clusters GKE Enterprise.
Dans cet atelier, vous allez installer Cloud Service Mesh sur un cluster GKE.
Points abordés
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
- Provisionner un cluster sur Google Kubernetes Engine (GKE)
- Installer et configurer Cloud Service Mesh
- Déployer Bookinfo, une application multiservice compatible avec Istio
- Permettre un accès externe à l'aide d'une passerelle d'entrée Istio
- Utiliser l'application Bookinfo
- Surveiller les performances du service avec le tableau de bord Cloud Service Mesh
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 droite, vous trouverez le panneau Préparation et accès à l'atelier, qui contient les éléments suivants :
- Le bouton Ouvrir la console Google Cloud
- Les identifiants temporaires (nom d'utilisateur et mot de passe) que vous devez utiliser pour cet atelier
- Des informations complémentaires vous permettant d'effectuer l'atelier, si nécessaire
Notez que le minuteur de l'atelier se trouve en haut de la page et indique le temps restant.
-
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans une fenêtre en navigation privée si vous utilisez 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 Préparation et accès à 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 Préparation et accès à l'atelier.
-
Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis pour l'atelier. N'utilisez pas les identifiants de votre compte Google Cloud.
Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires pourront 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.
Tâche 1 : Configurer votre projet
Vérifier la configuration du SDK
-
Dans Cloud Shell, vérifiez que votre compte par défaut est configuré.
Vérifiez que Cloud SDK est configuré pour utiliser votre compte utilisateur généré par Qwiklabs.
gcloud config list
Résultat :
[component_manager]
disable_update_check = True
[compute]
gce_metadata_read_timeout_sec = 5
[core]
account = student-xx-xxxx@qwiklabs.net
disable_usage_reporting = False
project = qwiklabs-gcp-yy-####
[metrics]
environment = devshell
Your active configuration is: [cloudshell-#####]
-
Si nécessaire, modifiez la configuration du projet.
Si le projet par défaut du SDK n'est pas correctement défini, modifiez la configuration. Remplacez [project_id] par le nom du projet fourni dans la section identifiants de la page d'instructions de Qwiklabs :
gcloud config set project [project_id]
Configurer les variables d'environnement
- Configurez les variables d'environnement qui seront utilisées dans les commandes de configuration et d'installation :
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} \
--format="value(projectNumber)")
export CLUSTER_NAME=central
export CLUSTER_ZONE={{{project_0.default_zone | zone}}}
export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog
export MESH_ID="proj-${PROJECT_NUMBER}"
Remarque :
-
WORKLOAD_POOL permet d'activer Workload Identity, qui est la méthode recommandée pour un accès sécurisé aux services Google Cloud depuis les applications GKE.
-
MESH_ID permet de définir l'étiquette mesh_id sur le cluster. Cette étiquette est nécessaire pour que les métriques s'affichent sur le tableau de bord Cloud Service Mesh dans la console Cloud.
Vérifier que les autorisations sont suffisantes
- Dans Cloud Shell, vérifiez que le rôle Propriétaire a été attribué à votre compte utilisateur :
gcloud projects get-iam-policy $PROJECT_ID \
--flatten="bindings[].members" \
--filter="bindings.members:user:$(gcloud config get-value core/account 2>/dev/null)"
Résultat :
bindings:
members: user:student-xx-xxxx@qwiklabs.net
role: roles/owner
...
Remarque : Votre utilisateur étudiant possède également des droits de lecteur.
Remarque : Pour terminer la configuration, vous avez besoin des autorisations associées aux rôles ci-dessous.
- Éditeur de projet
- Administrateur de Kubernetes Engine
- Administrateur de projet IAM
- Administrateur de GKE Hub
- Administrateur de compte de service
- Administrateur de clés de compte de service
Si vous disposez du rôle Propriétaire, vous détenez toutes ces autorisations (et même davantage). Vous êtes donc prêt à continuer.
Tâche 2 : Configurer votre cluster GKE
Créer le cluster
- Exécutez la commande suivante dans Cloud Shell pour créer le cluster Kubernetes
central :
gcloud config set compute/zone ${CLUSTER_ZONE}
gcloud container clusters create ${CLUSTER_NAME} \
--machine-type=e2-standard-4 \
--num-nodes=4 \
--subnetwork=default \
--release-channel=regular \
--labels mesh_id=${MESH_ID} \
--workload-pool=${WORKLOAD_POOL} \
--logging=SYSTEM,WORKLOAD
Résultat :
NAME: central
LOCATION: {{{project0.default_zone | zone}}}
MASTER_VERSION: 1.35.3-gke.2190000
MASTER_IP: 35.245.2.147
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.35.3-gke.2190000
NUM_NODES: 4
STATUS: RUNNING
La création du cluster prendra quelques minutes.
- Une fois le cluster créé, exécutez cette séquence de commandes pour activer le
maillage de services du parc, configurer vos autorisations d'administrateur et configurer l'espace de noms istio-system.
gcloud container fleet mesh enable
kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole=cluster-admin \
--user=$(gcloud config get-value account)
kubectl create namespace istio-system
- Configurez kubectl de façon à pointer vers le cluster.
gcloud container clusters get-credentials ${CLUSTER_NAME} \
--zone $CLUSTER_ZONE \
--project $PROJECT_ID
Tâche 3 : Préparer l'installation de Cloud Service Mesh
Google fournit l'outil asmcli, qui vous permet d'installer ou de mettre à niveau Cloud Service Mesh. Si vous le permettez, asmcli configurera votre projet et votre cluster en :
- vous accordant les autorisations Identity and Access Management (IAM) requises sur votre projet Google Cloud ;
- activant les API Google requises sur votre projet Cloud ;
- définissant une étiquette sur le cluster qui identifie le réseau maillé ;
- créant un compte de service qui permet aux composants du plan de données (comme le proxy side-car) d'accéder de manière sécurisée aux données et aux ressources de votre projet ;
- enregistrant le cluster dans le parc si ce n'est déjà fait.
Vous utiliserez asmcli pour installer Cloud Service Mesh sur votre cluster.
- Téléchargez la version qui installe Cloud Service Mesh 1.28 dans le répertoire de travail actuel :
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.28 > asmcli
- Rendez le script exécutable :
chmod +x asmcli
- Activez l'API Service Mesh :
gcloud services enable mesh.googleapis.com
Tâche 4 : Vérifier Cloud Service Mesh
Vous pouvez exécuter la commande asmcli validate afin de vous assurer que votre projet et votre cluster sont correctement configurés pour l'installation de Cloud Service Mesh. Quand cette option est activée, asmcli n'apporte aucune modification à votre projet ou cluster et n'installe pas Cloud Service Mesh.
asmcli vérifie que :
- votre environnement dispose des outils nécessaires ;
- le cluster répond aux conditions minimales requises ;
- vous disposez des autorisations requises sur le projet spécifié ;
- toutes les API Google requises sont activées dans le projet.
- Exécutez la commande suivante pour valider votre configuration et télécharger le fichier d'installation ainsi que le package
asm (Cloud Service Mesh) dans le répertoire OUTPUT_DIR :
./asmcli validate \
--project_id $PROJECT_ID \
--cluster_name $CLUSTER_NAME \
--cluster_location $CLUSTER_ZONE \
--fleet_id $PROJECT_ID \
--output_dir ./asm_output
Remarque : Veuillez ignorer les erreurs de validation, car la validation confirme ici que le cluster dispose de tous les composants nécessaires pour installer Cloud Service Mesh, et non pas que Cloud Service Mesh a bien été installé.
Si l'opération réussit, un résultat semblable au suivant s'affiche :
asmcli: Setting up necessary files...
asmcli: Using asm_kubeconfig as the kubeconfig...
asmcli: Checking installation tool dependencies...
asmcli: Fetching/writing GCP credentials to kubeconfig file...
asmcli: Verifying connectivity (10s)...
asmcli: kubeconfig set to asm_kubeconfig
asmcli: using context gke_example-project-12345_us-west1_cluster-2
asmcli: Getting account information...
asmcli: Downloading ASM..
asmcli: Downloading ASM kpt package...
fetching package "/asm" from "https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages" to "asm"
asmcli: Checking required APIs...
asmcli: Checking for project example-project-12345...
asmcli: Reading labels for us-west1/cluster-2...
asmcli: Checking for istio-system namespace...
asmcli: Confirming node pool requirements for example-project-12345/us-west1/cluster-2...
asmcli: Checking Istio installations...
asmcli: [WARNING]: There is no way to validate that the meshconfig API has been initialized.
asmcli: [WARNING]: This needs to happen once per GCP project. If the API has not been initialized
asmcli: [WARNING]: for example-project-12345, please re-run this tool with the --enable_gcp_components
asmcli: [WARNING]: flag. Otherwise, installation will succeed but Cloud Service Mesh
asmcli: [WARNING]: will not function correctly.
asmcli: Successfully validated all requirements to install ASM.
Remarque : Cet atelier vous fournira les flags nécessaires pour traiter les avertissements générés par la commande de validation.Tâche 5 : Installer Cloud Service Mesh
La commande suivante installera Cloud Service Mesh. Le flag "--enable_all" permet au script d'activer les API Google requises, de définir les autorisations Identity and Access Management et d'apporter les modifications nécessaires à votre cluster, ce qui implique d'activer Workload Identity de GKE.
- Exécutez la commande suivante pour installer Cloud Service Mesh :
./asmcli install \
--project_id $PROJECT_ID \
--cluster_name $CLUSTER_NAME \
--cluster_location $CLUSTER_ZONE \
--fleet_id $PROJECT_ID \
--output_dir ./asm_output \
--enable_all \
--option legacy-default-ingressgateway \
--ca mesh_ca \
--enable_gcp_components
La sortie obtenue doit ressembler à ceci :
asmcli: *****************************
asmcli: Successfully installed ASM.
Cliquez sur Vérifier ma progression pour valider l'objectif. Installer Cloud Service Mesh
Installer une passerelle d'entrée
Cloud Service Mesh vous permet de déployer et de gérer des passerelles avec votre maillage de services. Une passerelle décrit un équilibreur de charge fonctionnant à la périphérie du maillage qui reçoit des connexions HTTP/TCP entrantes ou sortantes. Les passerelles sont des proxys Envoy qui vous permettent de contrôler avec précision le trafic entrant et sortant du réseau maillé.
- Si vous n'avez pas encore d'espace de noms pour la passerelle d'entrée, créez-en un. Les passerelles sont des charges de travail d'utilisateur. Il est déconseillé de les déployer dans l'espace de noms du plan de contrôle.
GATEWAY_NS=istio-gateway
kubectl create namespace $GATEWAY_NS
-
Activez l'injection automatique sur la passerelle en appliquant une étiquette de révision sur l'espace de noms de la passerelle. Le webhook d'injecteur side-car utilise l'étiquette de révision pour associer les proxys injectés à une révision spécifique du plan de contrôle.
- Exécutez la commande suivante pour localiser l'étiquette de révision sur
istiod :
kubectl get deploy -n istio-system -l app=istiod -o \
jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'
- Stockez cette valeur dans une variable d'environnement :
REVISION=$(kubectl get deploy -n istio-system -l app=istiod -o \
jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
- Appliquez l'étiquette de révision à l'espace de noms. Dans la commande suivante, REVISION correspond à la valeur de l'étiquette de révision "istiod" que vous avez notée à l'étape précédente :
kubectl label namespace $GATEWAY_NS \
istio.io/rev=$REVISION --overwrite
- Activez l'injection du proxy d'Istio.
kubectl label namespace default istio-injection=enabled
kubectl label namespace $GATEWAY_NS istio-injection=enabled
-
Accédez au répertoire que vous avez spécifié dans --output_dir :
cd ~/asm_output
- Vous pouvez déployer l'exemple de configuration de passerelle d'entrée situé dans le répertoire
samples/gateways/istio-ingressgateway/ tel quel ou le modifier si besoin :
kubectl apply -n $GATEWAY_NS \
-f samples/gateways/istio-ingressgateway
Activer l'injection side-car
Cloud Service Mesh utilise des proxys side-car pour améliorer la sécurité, la fiabilité et l'observabilité du réseau. Avec Cloud Service Mesh, ces fonctions sont découplées du conteneur principal de l'application et implémentées dans un proxy commun hors processus fourni sous la forme d'un conteneur séparé dans le même pod.
-
Avant de déployer des charges de travail, assurez-vous de configurer l'injection du proxy side-car afin que Cloud Service Mesh puisse surveiller et sécuriser le trafic.
-
Pour activer l'injection automatique, appliquez l'étiquette de révision et supprimez l'étiquette "istio-injection" si elle existe.
-
Dans la commande suivante, default correspond à l'espace de noms dans lequel vous souhaitez activer l'injection automatique, et REVISION à l'étiquette de révision notée à l'étape précédente :
kubectl label namespace default istio-injection-istio.io/rev=$REVISION --overwrite
Remarque : Vous pouvez ignorer le message "istio-injection" not found figurant dans le résultat. Ce message s'affiche parce que l'étiquette "istio-injection" devrait en principe être attribuée à l'espace de noms, comme c'est le cas dans les nouvelles installations de Cloud Service Mesh ou dans les nouveaux déploiements.
Remarque : L'injection du proxy side-car est désormais activée pour les futures charges de travail.
Si ce cluster avait déjà exécuté des charges de travail, vous devriez redémarrer les pods pour redéclencher l'injection automatique.
Tâche 6 : Déployer Bookinfo, une application multiservice compatible avec Istio
Cette tâche vous amène à configurer et découvrir Bookinfo, une application de microservices de démonstration.
Présentation de Bookinfo
Maintenant que Cloud Service Mesh est configuré et vérifié, vous pouvez déployer un des exemples d'applications fournis avec l'installation : Bookinfo. Il s'agit d'une simple application de librairie fictive composée de quatre microservices, tous gérés à l'aide d'Istio. Chaque microservice est écrit dans un langage différent, pour démontrer comment vous pouvez utiliser Istio dans un environnement multilangage, sans aucune modification du code.
Les microservices sont les suivants :
-
productpage : fait appel aux microservices details et reviews pour remplir la page.
-
details : contient des informations sur les livres.
-
reviews : contient des avis sur les livres. Il appelle également le microservice ratings.
-
ratings : contient les notes qui accompagnent les avis sur les livres.
Il existe trois versions du microservice reviews :
- Reviews v1 n'appelle pas le service ratings.
- Reviews v2 appelle le service ratings et affiche chaque note sous la forme de 1 à 5 étoiles noires.
- Reviews v3 appelle le service ratings et affiche chaque note sous la forme de 1 à 5 étoiles rouges.
L'architecture de bout en bout de l'application se présente comme suit :

Le code source et tous les autres fichiers utilisés dans cet exemple se trouvent dans votre répertoire Istio samples/bookinfo.
Déployer Bookinfo
-
Examinez le fichier .yaml qui décrit l'application Bookinfo :
istio_dir=$(ls -d istio-* | tail -n 1)
cd $istio_dir
cat samples/bookinfo/platform/kube/bookinfo.yaml
Recherchez les conteneurs (containers) afin de vous assurer que chaque déploiement dispose d'un conteneur pour chaque version de chaque service dans l'application Bookinfo.
-
Dans Cloud Shell, utilisez la commande suivante pour injecter (inject) le proxy side-car avec chaque pod d'application qui est déployé :
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Remarque :Istio utilise une version étendue d'Envoy, un proxy Open Source hautes performances développé en C++, afin de contrôler le trafic entrant et sortant pour l'ensemble des services du maillage.
Istio s'appuie sur plusieurs fonctionnalités intégrées à Envoy, dont la découverte dynamique des services, l'équilibrage de charge, la terminaison TLS, l'envoi par proxy de requêtes HTTP/2 et gRPC, les disjoncteurs, les vérifications d'état, les déploiements par étapes avec répartition du trafic selon un pourcentage, l'injection de pannes et des métriques détaillées.
Résultat :
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
Cliquez sur Vérifier ma progression pour valider l'objectif. Déployer l'application Bookinfo
Permettre un accès externe à l'aide d'une passerelle d'entrée Istio
Maintenant que les services Bookinfo sont opérationnels, vous devez rendre l'application accessible depuis l'extérieur de votre cluster Kubernetes, par exemple depuis un navigateur. Une passerelle Istio est utilisée à cet effet.
-
Examinez le fichier .yaml qui décrit la configuration de la passerelle d'entrée de l'application :
cat samples/bookinfo/networking/bookinfo-gateway.yaml
Recherchez les ressources Gateway et VirtualService du réseau maillé qui sont déployées. La passerelle (Gateway) expose les services aux utilisateurs en dehors du maillage de services, et permet d'appliquer les fonctionnalités d'Istio telles que la surveillance et les règles de routage au trafic entrant dans le cluster.
-
Configurez la passerelle d'entrée de l'application qui expose une adresse IP externe que vous utiliserez plus tard :
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Résultat :
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
Vérifier les déploiements de Bookinfo
-
Vérifiez que l'application a été déployée correctement, et examinez les services, les pods et la passerelle d'entrée :
kubectl get services
Résultat :
NAME TYPE ...
details ClusterIP ...
kubernetes ClusterIP ...
productpage ClusterIP ...
ratings ClusterIP ...
reviews ClusterIP ...
-
Examinez les pods d'application en cours d'exécution :
kubectl get pods
Résultat :
NAME READY STATUS RESTARTS AGE
details-v1-79f774bdb9-6l54w 2/2 Running 0 101s
productpage-v1-6b746f74dc-4xccm 2/2 Running 0 100s
ratings-v1-b6994bb9-7g4z2 2/2 Running 0 100s
reviews-v1-545db77b95-hkh9p 2/2 Running 0 100s
reviews-v2-7bf8c9648f-cmsxj 2/2 Running 0 100s
reviews-v3-84779c7bbc-8b8qp 2/2 Running 0 100s
Vous devrez peut-être réexécuter cette commande jusqu'à ce que les six pods soient en cours d'exécution.
-
Vérifiez que l'application Bookinfo fonctionne en lui envoyant une requête curl depuis l'un des pods du cluster (par exemple, depuis ratings) :
kubectl exec -it $(kubectl get pod -l app=ratings \
-o jsonpath='{.items[0].metadata.name}') \
-c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
Résultat :
Application Bookstore simple
-
Vérifiez que la passerelle d'entrée a été créée :
kubectl get gateway
Résultat :
NAME AGE
bookinfo-gateway 20m
-
Récupérez l'adresse IP externe de la passerelle d'entrée :
kubectl get svc istio-ingressgateway -n istio-system
Résultat :
NAME TYPE ... EXTERNAL-IP ...
istio-ingressgateway LoadBalancer ... 34.72.220.30 ...
Dans cet exemple, l'adresse IP externe de la passerelle d'entrée est 34.72.220.30.
-
Exécutez maintenant la commande suivante, en remplaçant [EXTERNAL-IP] par l'adresse IP externe qui a été renvoyée par la commande précédente :
export GATEWAY_URL=[EXTERNAL-IP]
-
Vérifiez que l'application Bookinfo fonctionne en lui envoyant une requête curl depuis l'extérieur du cluster :
curl -I http://${GATEWAY_URL}/productpage
Résultat :
HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
content-length: 4183
server: istio-envoy
...
Tâche 7 : Utiliser l'application Bookinfo
Tester l'application dans votre navigateur Web
-
Faites pointer votre navigateur vers http://[$GATEWAY_URL]/productpage pour voir la page Web Bookinfo. N'oubliez pas de remplacer [$GATEWAY_URL] par votre adresse IP externe, qui doit être valide.

-
Actualisez la page plusieurs fois.
Vous voyez trois versions différentes des avis, car nous n'avons pas encore contrôlé le routage des versions avec Istio.
Il existe trois services distincts pour les avis sur les livres, qui sont appelés à tour de rôle :
- Aucune étoile
- Étoiles noires
- Étoiles rouges
Passer de l'un à l'autre est un comportement normal de routage et d'équilibrage de Kubernetes.
Générer une charge d'arrière-plan constante
Exécutez l'utilitaire siege pour simuler le trafic vers Bookinfo.
-
Dans Cloud Shell, installez siege :
Siege est un utilitaire permettant de générer une charge sur les sites Web.
sudo apt install siege
-
La commande siege vous permet de créer du trafic sur vos services :
siege http://${GATEWAY_URL}/productpage
Tâche 8 : Évaluer les performances du service à l'aide du tableau de bord Cloud Service Mesh
Recueillez des données à partir de la vue Tableau des services.
- Dans la console, accédez au menu de navigation > Kubernetes Engine > Service Mesh.
Si vous y êtes invité, cliquez sur Activer pour activer l'API Service Mesh.
-
Consultez la section Service.
Combien de services sont listés ?
-
Cliquez sur le service productpage pour obtenir plus de détails.

Notez que le récapitulatif en haut de la page détaille les requêtes en cours par seconde, les taux d'erreur, la latence et l'utilisation des ressources.
Si vous ne voyez pas Requêtes > 0, essayez de quitter et de revenir au service productpage après quelques minutes.
-
Cliquez sur l'option Métriques. Explorez les différents graphiques et leurs options de répartition.
- Quel est le taux de demandes actuel et comment a-t-il évolué dans le temps ?
- Quel est le taux d'erreur actuel, et comment a-t-il évolué dans le temps ?
- Quelles sont les latences représentées ?
- Quelle est la taille moyenne d'une requête ?
- Quelle est la taille moyenne d'une réponse ?
- Quelle est l'utilisation globale du CPU ?
-
Cliquez sur l'option Services connectés.
Elle affiche une liste d'autres services qui effectuent des requêtes entrantes vers productpage, et des services vers lesquels productpage effectue des requêtes sortantes.
- Quels services effectuent des appels vers le service productpage ?
- Quels sont les services appelés par le service productpage ?
- mTLS est-il appliqué aux appels interservices ?
Remarque : Le service ratings n'envoie normalement pas de requêtes au service productpage. Il est présenté ici, car vous l'avez utilisé pour envoyer une requête de test au cours de cet atelier.
-
Revenez au tableau de bord Cloud Service Mesh en cliquant sur le logo Cloud Service Mesh en haut à gauche.
À ce stade, vous pouvez explorer ou afficher les détails d'autres services.
Remarque :La partie supérieure du tableau de bord contient des informations sur les objectifs de niveau de service (SLO) et les alertes.
Les SLO sont des cibles pour les indicateurs de niveau de service (SLI), ils représentent votre définition de la performance d'un service. Un exemple de SLO pourrait être que 99,9 % des requêtes par heure renvoient une réponse 200. Vous pouvez définir une règle d'alerte qui appelle le personnel d'astreinte lorsque votre service ne remplit pas ses SLO.
Recherchez d'autres ateliers vous permettant de définir et de tester les SLO.
Utiliser la vue Topologie pour mieux visualiser votre réseau maillé
-
Dans le tableau de bord Cloud Service Mesh, affichez la topologie.
Vous devrez peut-être attendre quelques minutes pour que le graphique de topologie apparaisse.
-
Réorganisez les nœuds dans le graphique jusqu'à ce que vous puissiez facilement consulter les relations entre les services et les charges de travail.
Rappelez-vous que les requêtes externes commencent sur productpage. Vous pouvez faire défiler la page vers le haut et étudier le diagramme de l'architecture de Bookinfo dans la Présentation de Bookinfo.
Votre dessin pourrait ressembler à ceci :

Remarque : Vous devrez peut-être cliquer sur Développer pour afficher tous les nœuds.
-
Cliquez sur le nœud du service productpage.
Vous devriez voir une fiche détaillée du service :

- Combien de requêtes par seconde ce service reçoit-il ?
- Que sont les latences médiane et à 99 % ?
-
Maintenant, pointez sur chacun des nœuds de service et notez les statistiques qui s'affichent.
- Combien de requêtes par seconde le service productpage reçoit-il et d'où proviennent-elles ?
- Combien de requêtes par seconde le service transfère-t-il à la charge de travail productpage-v1 ?
Les détails du trafic doivent s'afficher comme suit :

-
Affichez les détails de l'une des charges de travail jusqu'à ce que vous puissiez voir le déploiement, l'ensemble d'instances répliquées et les pods.
Voici un exemple :

Félicitations !
Dans cet atelier, vous avez déployé un cluster GKE, Cloud Service Mesh et une application compatible avec Istio. Vous avez également utilisé le tableau de bord Cloud Service Mesh pour mieux comprendre les performances du service et la topologie de votre application.
Étapes suivantes et informations supplémentaires
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 : 09 juin 2026
Dernier test de l'atelier : 9 juin 2026
Copyright 2026 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.