Déployer l'exemple de Bookinfo
Cette page explique comment déployer un exemple d'application pour illustrer Cloud Service Mesh. Si vous n'avez pas encore intégré Cloud Service Mesh, consultez le guide d'intégration.
Plusieurs exemples d'applications sont fournis avec l'installation de Cloud Service Mesh. Ce guide montre comment déployer l'exemple d'application BookInfo. Il s'agit d'une application de librairie factice simple, composée de quatre services fournissant une page produits Web, des informations sur les livres, des avis de lecteurs (avec plusieurs versions du service de communication d'avis) et des évaluations. Tous sont gérés à 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
Activez l'espace de noms pour l'injection : Les étapes dépendent de votre mise en œuvre du plan de contrôle.
Plan de contrôle géré (TD)
- Appliquez les étiquettes d'injection par défaut à l'espace de noms.
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwritePlan de contrôle géré (Istiod)
Recommandation : Exécutez la commande suivante pour appliquer l'étiquette d'injection par défaut à l'espace de noms :
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteSi vous utilisez déjà le plan de contrôle Istiod géré : nous vous recommandons d'utiliser l'injection par défaut, mais l'injection basée sur les révisions est acceptée. Suivez les instructions suivantes :
Exécutez la commande suivante pour localiser les canaux de publication disponibles :
kubectl -n istio-system get controlplanerevisionLe résultat ressemble à ce qui suit :
NAME AGE asm-managed-rapid 6d7hREMARQUE : Si deux révisions du plan de contrôle apparaissent dans la liste ci-dessus, supprimez-en une. Il n'est pas possible d'avoir plusieurs canaux de plan de contrôle dans un même cluster.
Dans le résultat, la valeur de la colonne
NAMEest l'étiquette de révision qui correspond au canal de publication disponible pour la version de Cloud Service Mesh.Appliquez l'étiquette de révision à l'espace de noms :
kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Au sein du cluster
Recommandation : Exécutez la commande suivante pour appliquer l'étiquette d'injection par défaut à l'espace de noms :
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteNous vous recommandons d'utiliser l'injection par défaut, mais l'injection basée sur les révisions est acceptée : Suivez les instructions ci-dessous :
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"}'Appliquez l'étiquette de révision à l'espace de noms. Dans la commande suivante,
REVISION_LABELcorrespond à la valeur du libellé de révisionistiodque vous avez notée à l'étape précédente.kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
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 In-cluster, qui inclut l'exemple d'application Bookinfo, puis extrayez-le.
Déployez votre application sur l'espace de noms par défaut à l'aide de
kubectl:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlConfirmez que l'application a été correctement déployée en exécutant les commandes suivantes :
kubectl get servicesSortie :
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 podSortie :
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.yamlSortie :
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 Google Distributed Cloud (logiciel uniquement) pour 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-systemRé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/productpageSi la réponse indique
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/productpageSi 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 consulter 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.shConfirmez 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
Étape suivante
Obtenez plus d'informations sur l'exemple d'application Bookinfo.