arrow_back

Installation d'Anthos Service Mesh sur Google Kubernetes Engine

Testez vos connaissances et partagez-les avec notre communauté
done
Accédez à plus de 700 ateliers pratiques, badges de compétence et cours

Installation d'Anthos Service Mesh sur Google Kubernetes Engine

Atelier 1 heure 30 minutes universal_currency_alt 5 crédits show_chart Intermédiaire
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Testez vos connaissances et partagez-les avec notre communauté
done
Accédez à plus de 700 ateliers pratiques, badges de compétence et cours

GSP654

Google Cloud – Ateliers adaptés au rythme de chacun

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.

Anthos Service Mesh

Anthos Service Mesh (ASM) fonctionne avec Istio. Anthos Service Mesh fournit une distribution d'Istio testée par Anthos et entièrement compatible, vous permettant de créer et de déployer un maillage de services avec Anthos GKE, que votre cluster fonctionne dans Google Cloud ou sur site.

Des profils de configuration avec des paramètres recommandés s'adaptent à Google Kubernetes Engine ou à Anthos GKE On-Prem.

Enfin, Anthos 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 maillage 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.

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

Dans cet atelier, vous allez installer Anthos Service Mesh sur un cluster GKE.

Points abordés

Dans cet atelier, vous apprendrez à effectuer les tâches suivantes :

  • Provisionner un cluster sur Google Kubernetes Engine (GKE)
  • Installer et configurer Anthos 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 Anthos 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 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 Cloud
    • 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 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.
  3. 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.

  4. Cliquez sur Suivant.

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

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

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Pour afficher un menu contenant la liste des produits et services Google Cloud, cliquez 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.

Tâche 1 : Configurer votre projet

Vérifier la configuration du SDK

  1. 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-#####]
  2. 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

  1. 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 Anthos Service Mesh dans Cloud Console.

Vérifier que les autorisations sont suffisantes

  • Dans Cloud Shell, vérifiez que le rôle owner (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

  1. Exécutez maintenant 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.27.3-gke.100 MASTER_IP: 35.245.2.147 MACHINE_TYPE: e2-standard-4 NODE_VERSION: 1.27.3-gke.100 NUM_NODES: 4 STATUS: RUNNING

La création du cluster prendra quelques minutes.

  1. Une fois votre cluster créé, exécutez cette commande pour vous assurer d'avoir le rôle cluster-admin sur celui-ci :
kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(whoami)@qwiklabs.net
  1. 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 d'Anthos Service Mesh

Google fournit l'outil asmcli, qui vous permet d'installer ou de mettre à jour Anthos 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 en toute sécurité 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 Anthos Service Mesh sur votre cluster.

  1. Téléchargez la version qui installe Anthos Service Mesh 1.20.3 dans le répertoire de travail actuel :
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.20 > asmcli
  1. Rendez le script exécutable :
chmod +x asmcli
  1. Activez l'API Service Mesh :
gcloud services enable mesh.googleapis.com

Tâche 4 : Valider Anthos 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 d'Anthos Service Mesh. Quand cette option est activée, asmcli n'apporte aucune modification à votre projet ou cluster et n'installe pas Anthos 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.
  1. Exécutez la commande suivante pour valider votre configuration et télécharger le fichier d'installation ainsi que le package asm 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 ASM, et non pas qu'ASM a bien été installé.

Si l'opération réussit, un résultat semblable aux lignes suivantes 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 Anthos Service Mesh asmcli: [WARNING]: will not function correctly. asmcli: Successfully validated all requirements to install ASM. Remarque : Cet atelier vous fournira les options nécessaires pour traiter les avertissements générés par la commande de validation.

Tâche 5 : Installer Anthos Service Mesh

La commande suivante installera Anthos Service Mesh. L'option "--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.

  1. Exécutez la commande suivante pour installer Anthos 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

Le résultat obtenu doit ressembler à ceci :

asmcli: ***************************** asmcli: Successfully installed ASM.

Cliquez sur Vérifier ma progression pour valider l'objectif. Installer Anthos Service Mesh

Installer une passerelle d'entrée

Anthos 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 réseau maillé 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é.

  1. 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
  1. 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
  2. Accédez au répertoire que vous avez spécifié dans --output_dir :

cd ~/asm_output
  1. 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

Anthos Service Mesh utilise des proxys side-car pour améliorer la sécurité, la fiabilité et l'observabilité du réseau. Avec Anthos Service Mesh, ces fonctions sont extraites 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.

  1. Avant de déployer des charges de travail, assurez-vous de configurer l'injection du proxy side-car afin qu'Anthos Service Mesh puisse surveiller et sécuriser le trafic.

  2. Pour activer l'injection automatique, appliquez l'étiquette de révision et supprimez l'étiquette "istio-injection" s'il existe.

  3. 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é à l'espace de noms, comme c'est le cas dans les nouvelles installations d'Anthos 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 qu'ASM 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 les informations sur un livre.
  • reviews : contient des avis sur un livre. Il appelle également le microservice ratings.
  • ratings : contient des informations sur les classements qui accompagnent un avis de lecture.

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 :

Architecture de Bookinfo

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

  1. 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) pour vous assurer que chaque déploiement dispose d'un conteneur pour chaque version de chaque service dans l'application Bookinfo.

  2. 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étection dynamique de 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.

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

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

  1. 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 ...
  2. 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 à l'état Running (En cours d'exécution).

  3. 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
  4. Vérifiez que la passerelle d'entrée a été créée :

    kubectl get gateway

    Résultat :

    NAME AGE bookinfo-gateway 20m
  5. 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.

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

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

    Page produit Bookinfo

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

  1. Dans Cloud Shell, installez siege :

    Siege est un utilitaire permettant de générer une charge sur les sites Web.

    sudo apt install siege
  2. 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 Anthos Service Mesh

Recueillir des données à partir de la vue Tableau des services.

  1. Dans la console, accédez au menu de navigation, puis sélectionnez Anthos > Service Mesh.

Si vous y êtes invité, cliquez sur Activer pour activer l'API Anthos.

  1. Dans la moitié inférieure de la fenêtre, vous trouverez une section Service.

    Combien de services sont répertoriés ?

  2. Cliquez sur le service productpage pour obtenir plus de détails.

    Service productpage mis en surbrillance

    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.

  3. Sur le côté gauche de la fenêtre, 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é au fil du temps ?
    • Quel est le taux d'erreur actuel, et comment a-t-il évolué au fil du 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 processeur ?
  4. Cliquez sur l'option Services connectés située à gauche.

    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. Le service "ratings" est présenté ici car vous l'avez utilisé pour envoyer une requête de test au cours de cet atelier.
  5. Revenez au tableau de bord Anthos Service Mesh en cliquant sur le logo Anthos Service Mesh dans le coin supérieur 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 maillage

  1. Dans le tableau de bord Anthos Service Mesh, affichez la topologie à droite de la fenêtre.

    Vous devrez peut-être attendre quelques minutes pour que le graphique de topologie apparaisse.

  2. 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 schéma de l'architecture de Bookinfo dans la Présentation de Bookinfo.

    Votre dessin pourrait ressembler à ceci :

    Schéma du maillage de services

    Remarque : Vous devrez peut-être cliquer sur Développer pour afficher tous les nœuds.
  3. Cliquez sur le nœud du service productpage.

    Vous devriez voir une fiche détaillée du service :

    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 % ?
  4. 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 :

    Schéma détaillé du trafic

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

    Schéma du déploiement, de l&#39;ensemble d&#39;instances répliquées et des pods

Félicitations !

Dans cet atelier, vous avez déployé un cluster GKE, Anthos Service Mesh et une application compatible avec Istio. Vous avez également utilisé le tableau de bord Anthos 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 : 22 janvier 2024

Dernier test de l'atelier : 22 janvier 2024

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.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible