Déployer l'exemple de Bookinfo
{version_1.0.1 dCette page explique comment déployer un exemple d'application pour illustrer Cloud Service Mesh. Si vous n'avez pas installé Cloud Service Mesh, consultez le guide d'installation.
Plusieurs exemples d'applications sont fournis avec l'installation de Cloud Service Mesh. Ce guide vous explique comment déployer l'exemple BookInfo. Il s'agit d'une simple application de librairie fictive composée de quatre services qui fournissent une page de produit Web, des détails sur un livre, des avis (avec plusieurs versions du service d'avis) et des notes. Le tout est géré à l'aide de Cloud Service Mesh. Vous trouverez le code source et tous les autres fichiers utilisés dans cet exemple dans le répertoire d'installation de Cloud Service Mesh sous samples/bookinfo
.
Activer l'injection side-car automatique
Pour activer l'injection side-car automatique, vous devez ajouter une étiquette à vos espaces de noms afin que le webhook d'injecteur side-car associe les side-cars injectés à une révision particulière du plan de contrôle. Si vous configurez le tag par défaut, ajoutez des étiquettes d'injection par défaut à vos espaces de noms avec les étiquettes d'injection par défaut. Sinon, étiquetez vos espaces de noms avec le libellé de révision. De plus, l'étiquette que vous ajoutez varie également selon que vous avez déployé Cloud Service Mesh géré ou installé le plan de contrôle dans le cluster.
Géré
Vous pouvez utiliser l'étiquette d'injection par défaut ou l'étiquette de révision pour votre espace de noms
Libellés d'injection par défaut
Appliquez l'étiquette d'injection par défaut à l'espace de noms.
kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev-
Libellé de révision
Avant de déployer des applications, supprimez les anciens libellés
istio-injection
de leurs espaces de noms et définissez à la place le libelléistio.io/rev=REVISION_LABEL
.Pour attribuer un libellé de révision spécifique, cliquez sur
REVISION_LABEL
et remplacez-le par le libellé applicable:asm-managed-rapid
pour le canal rapide,asm-managed
pour le canal standard ouasm-managed-stable
pour le canal stable.Le libellé de révision correspond à une version disponible :
Libellé de révision Canal asm-managed
Standard asm-managed-rapid
Version précoce asm-managed-stable
Stable kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Si vous avez également déployé le plan de données géré facultatif, annotez l'espace de noms
NAMESPACE
comme suit:kubectl annotate --overwrite namespace NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
Dans le cluster
Exécutez la commande suivante pour localiser le libellé de révision sur
istiod
:kubectl -n istio-system get pods -l app=istiod --show-labels
La sortie ressemble à ceci :
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-173-3-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=,istio=istiod,pod-template-hash=5788d57586
Dans le résultat, sous la colonne
LABELS
, notez la valeur du libellé de révisionistiod
, qui suit le préfixeistio.io/rev=
. Dans cet exemple, la valeur est.
Appliquez le libellé de révision à l'espace de noms par défaut. Dans la commande suivante,
REVISION
correspond à la valeur du libellé de révisionistiod
que vous avez notée à l'étape précédente.kubectl label namespace default istio-injection- istio.io/rev=REVISION --overwrite
Vous pouvez ignorer le message
"istio-injection not found"
dans le résultat. Cela signifie que l'espace de noms ne portait pas l'étiquetteistio-injection
auparavant, ce qui est normal dans les nouvelles installations de Cloud Service Mesh ou les nouveaux déploiements. Étant donné que le comportement d'injection automatique n'est pas défini lorsqu'un espace de noms possède à la foisistio-injection
et le libellé de révision, toutes les commandeskubectl label
de la documentation Cloud Service Mesh garantissent explicitement qu'une seule commande est définie.
Déployer l'application
Maintenant que l'injection automatique est activée sur l'espace de noms default
, lorsque vous déployez les services de l'application BookInfo, les proxys side-car sont injectés avec chaque service.
Sur la ligne de commande de l'ordinateur sur lequel vous avez installé Cloud Service Mesh, accédez à la racine du répertoire d'installation de Cloud Service Mesh. Si nécessaire, téléchargez le fichier d'installation.
Déployez votre application sur l'espace de noms par défaut à l'aide de
kubectl
:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Confirmez que l'application a été correctement déployée en exécutant les commandes suivantes :
kubectl get services
Résultat :
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE details 10.0.0.31 <none> 9080/TCP 6m kubernetes 10.0.0.1 <none> 443/TCP 7d productpage 10.0.0.120 <none> 9080/TCP 6m ratings 10.0.0.15 <none> 9080/TCP 6m reviews 10.0.0.170 <none> 9080/TCP 6m
et
kubectl get pod
Résultat :
NAME READY STATUS RESTARTS AGE details-v1-1520924117-48z17 2/2 Running 0 6m productpage-v1-560495357-jk1lz 2/2 Running 0 6m ratings-v1-734492171-rnr5l 2/2 Running 0 6m reviews-v1-874083890-f0qf0 2/2 Running 0 6m reviews-v2-1343845940-b34q5 2/2 Running 0 6m reviews-v3-1813607990-8ch52 2/2 Running 0 6m
Enfin, définissez le routage de la passerelle d'entrée pour l'application :
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Résultat :
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
Valider le déploiement de l'application
Pour vérifier si l'application Bookinfo fonctionne, vous devez envoyer du trafic à la passerelle d'entrée.
Si vous avez installé Cloud Service Mesh sur GKE sur VMware, obtenez l'adresse IP externe de la passerelle d'entrée que vous avez configurée après avoir installé Cloud Service Mesh.
Si vous avez installé Cloud Service Mesh sur GKE, obtenez l'adresse IP externe de la passerelle d'entrée comme suit:
kubectl get service istio-ingressgateway -n istio-system
Résultat :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27m
Dans cet exemple, l'adresse IP du service d'entrée est
35.239.7.64
.
Essayer l'application
Vérifiez que l'application Bookinfo s'exécute avec
curl
:curl -I http://EXTERNAL_IP/productpage
Si la réponse affiche
200
, cela signifie que l'application fonctionne correctement avec Cloud Service Mesh.Pour afficher la page Web de Bookinfo, saisissez l'adresse suivante dans votre navigateur :
http://EXTERNAL_IP/productpage
Si vous actualisez la page plusieurs fois, vous devriez voir différentes versions d'avis affichées sur la page produits, chacune à tour de rôle (étoiles rouges, étoiles noires, aucune étoile).
Maintenant que vous disposez d'une application qui génère du trafic, vous pouvez explorer les pages Cloud Service Mesh dans la console Google Cloud pour afficher les métriques et les autres fonctionnalités d'observabilité.
Nettoyer
Lorsque vous avez terminé de tester l'exemple d'application Bookinfo, supprimez-le de votre cluster.
Désinstallez Bookinfo à l'aide du script suivant :
samples/bookinfo/platform/kube/cleanup.sh
Confirmez l'arrêt :
kubectl get virtualservices #-- there should be no virtual services kubectl get destinationrules #-- there should be no destination rules kubectl get gateway #-- there should be no gateway kubectl get pods #-- the Bookinfo pods should be deleted
Étapes suivantes
Obtenez plus d'informations sur l'exemple d'application Bookinfo.