Bookinfo-Beispiel bereitstellen

Auf dieser Seite wird erläutert, wie Sie eine Beispielanwendung zur Demonstration von Cloud Service Mesh bereitstellen. Wenn Sie Cloud Service Mesh noch nicht eingerichtet haben, lesen Sie die Onboarding-Anleitung.

Die Cloud Service Mesh-Installation enthält mehrere Beispielanwendungen. In dieser Anleitung wird beschrieben, wie Sie das Beispiel BookInfo bereitstellen. Dies ist eine einfache Simulation einer Buchhandlungsanwendung, die aus vier Diensten besteht, die eine Webproduktseite, Buchdetails, Rezensionen (mit mehreren Versionen des Rezensionsdienstes) und Bewertungen bereitstellen. Alle werden mit Cloud Service Mesh verwaltet. Sie finden den Quellcode und alle anderen Dateien, die in diesem Beispiel verwendet werden, im Verzeichnis Ihrer Cloud Service Mesh-Installation in samples/bookinfo.

Automatische Sidecar-Injektion aktivieren

  1. Aktivieren Sie den Namespace für die Injection: Die Schritte hängen von Ihrer Implementierung der Steuerungsebene ab.

    Verwaltet (TD)

    1. Wenden Sie das Überarbeitungslabel auf den Namespace an.
    kubectl label namespace default \
        istio.io/rev- istio-injection=enabled --overwrite
    

    Verwaltet (mithilfe von Istio)

    Neue Nutzer verwenden den folgenden Befehl, um das Überarbeitungslabel auf den Namespace anzuwenden:

      kubectl label namespace default \
          istio.io/rev- istio-injection=enabled --overwrite
    

    Bestehende Nutzer mit der verwalteten Istio-Steuerungsebene gehen so vor:

    1. Verwenden Sie folgenden Befehl, um die verfügbaren Release-Kanäle zu finden:

      kubectl -n istio-system get controlplanerevision
      

      Die Ausgabe sieht in etwa so aus:

      NAME                AGE
      asm-managed-rapid   6d7h
      

      HINWEIS: Wenn in der Liste oben zwei Versionen der Steuerungsebene angezeigt werden, entfernen Sie eine. Mehrere Kanäle für die Steuerungsebene im Cluster werden nicht unterstützt.

      In der Ausgabe ist der Wert in der Spalte NAME das Überarbeitungslabel, das der verfügbaren Release-Version für die Cloud Service Mesh-Version entspricht.

    2. Wenden Sie das Überarbeitungslabel auf den Namespace an.

      kubectl label namespace default \
          istio-injection- istio.io/rev=REVISION_LABEL --overwrite
      

    Clusterintern

    1. Verwenden Sie den folgenden Befehl, um das Überarbeitungslabel für istiod zu finden:

      kubectl get deploy -n istio-system -l app=istiod -o \
        jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'
      
    2. Wenden Sie das Überarbeitungslabel auf den Namespace an. Im folgenden Befehl ist REVISION der Wert des Überarbeitungslabels istiod, den Sie im vorherigen Schritt notiert haben.

      kubectl label namespace default \
          istio.io/rev- istio-injection=enabled --overwrite
      

Anwendung bereitstellen

Nachdem die automatische Injektion im Namespace default aktiviert wurde, werden beim Bereitstellen der Dienste der BookInfo-Anwendung Sidecar-Proxys zusammen mit jedem Dienst eingefügt.

  1. Wechseln Sie in der Befehlszeile des Computers, auf dem Sie Cloud Service Mesh installiert haben, zum Stammverzeichnis des Cloud Service Mesh-Installationsverzeichnisses. Laden Sie bei Bedarf die clusterinterne Installationsdatei herunter, die die Beispielanwendung „bookinfo“ enthält, und extrahieren Sie sie.

  2. Stellen Sie die Anwendung mit kubectl im Standard-Namespace bereit:

    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
    
  3. Führen Sie die folgenden Befehle aus, um zu bestätigen, dass die Anwendung fehlerfrei bereitgestellt wurde:

    kubectl get services
    

    Ausgabe:

    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

    und

    kubectl get pod
    

    Ausgabe:

    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. Definieren Sie abschließend das Ingress-Gateway-Routing für die Anwendung:

    kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
    

    Ausgabe:

    gateway.networking.istio.io/bookinfo-gateway created
    virtualservice.networking.istio.io/bookinfo created

Anwendungsbereitstellung validieren

Zum Prüfen, ob die BookInfo-Anwendung funktioniert, müssen Sie Traffic an das Ingress-Gateway senden.

  • Wenn Sie Cloud Service Mesh in GKE on VMware installiert haben, rufen Sie die externe IP-Adresse für das Ingress-Gateway ab, das Sie nach der Installation von Cloud Service Mesh konfiguriert haben.

  • Wenn Sie Cloud Service Mesh in GKE installiert haben, rufen Sie die externe IP-Adresse des Ingress-Gateways so ab:

    kubectl get service istio-ingressgateway -n istio-system
    

    Ausgabe:

    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

    In diesem Beispiel lautet die IP-Adresse des Ingress-Dienstes 35.239.7.64.

Anwendung testen

  1. Prüfen Sie, ob die BookInfo-Anwendung mit curl ausgeführt wird:

    curl -I http://EXTERNAL_IP/productpage
    

    Wenn in der Antwort 200 angezeigt wird, bedeutet dies, dass die Anwendung ordnungsgemäß mit Cloud Service Mesh funktioniert.

  2. Geben Sie die folgende Adresse in Ihren Browser ein, um die BookInfo-Webseite aufzurufen:

    http://EXTERNAL_IP/productpage
    

    Wenn Sie die Seite mehrmals aktualisieren, sollten auf der Produktseite verschiedene Versionen der Rezensionen in zufälliger Abfolge angezeigt werden (rote Sterne, schwarze Sterne, keine Sterne).

Da Sie nun eine Anwendung haben, die Traffic generiert, können Sie sich die Cloud Service Mesh-Seiten in der Google Cloud Console ansehen, um Messwerte und die anderen Beobachtbarkeitsfunktionen aufzurufen.

Bereinigen

Wenn Sie mit dem Testen des Bookinfo-Beispiels fertig sind, entfernen Sie es aus Ihrem Cluster.

  1. Deinstallieren Sie Bookinfo mit dem folgenden Skript:

    samples/bookinfo/platform/kube/cleanup.sh
    
  2. Bestätigen Sie das Herunterfahren:

    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
    

Nächste Schritte

Weitere Informationen zum Bookinfo-Beispiel