Déployer l'exemple de Bookinfo

Cette page explique comment déployer un exemple d'application sur Anthos Service Mesh. Si vous n'avez pas installé Anthos Service Mesh, consultez le guide d'installation.

Plusieurs exemples d'applications sont fournis avec l'installation d'Anthos 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 d'Anthos Service Mesh. Vous trouverez le code source et tous les autres fichiers utilisés dans cet exemple dans le répertoire d'installation d'Anthos Service Mesh sous samples/bookinfo.

Activer l'injection side-car automatique

Pour activer l'injection automatique de side-car, vous devez ajouter un libellé à vos espaces de noms afin que le webhook d'injecteur de 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, attribuez des libellés d'injection par défaut à vos espaces de noms. Sinon, attribuez le libellé de révision à vos espaces de noms. En outre, le libellé que vous ajoutez varie selon que vous avez déployé Anthos Service Mesh géré ou installé le plan de contrôle dans le cluster.

Géré

  1. Vous pouvez utiliser le libellé d'injection par défaut ou le libellé de révision de votre espace de noms

    Libellés d'injection par défaut

    Appliquez le libellé 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 utiliser 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 ou asm-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
    
  2. 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

  1. 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=asm-1204-0,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-173-3-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-1204-0,istio=istiod,pod-template-hash=5788d57586
    

    Dans le résultat, sous la colonne LABELS, notez la valeur du libellé de révision istiod, qui suit le préfixe istio.io/rev=. Dans cet exemple, la valeur est asm-1204-0.

  2. 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évision istiod 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 précédemment le libellé istio-injection, auquel on s'attend dans de nouvelles installations d'Anthos Service Mesh ou de nouveaux déploiements. Étant donné que le comportement d'injection automatique n'est pas défini lorsqu'un espace de noms possède à la fois le libellé istio-injection et le libellé de révision, toutes les commandes kubectl label de la documentation Anthos 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.

  1. Sur la ligne de commande de l'ordinateur sur lequel vous avez installé Anthos Service Mesh, accédez à la racine du répertoire d'installation d'Anthos Service Mesh. Si nécessaire, téléchargez le fichier d'installation.

  2. 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
    
  3. 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
  4. 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é Anthos 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é Anthos Service Mesh.

  • Si vous avez installé Anthos 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
    

    Sortie :

    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

  1. Vérifiez que l'application Bookinfo s'exécute avec curl :

    curl -I http://EXTERNAL_IP/productpage
    

    Si la réponse indique 200, cela signifie que l'application fonctionne correctement avec Anthos Service Mesh.

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

  1. Désinstallez Bookinfo à l'aide du script suivant :

    samples/bookinfo/platform/kube/cleanup.sh
    
  2. 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.