Bookinfo-Beispiel bereitstellen

Auf dieser Seite wird erläutert, wie Sie eine Beispielanwendung bereitstellen, Cloud Service Mesh. Wenn Sie Cloud Service Mesh nicht installiert haben, finden Sie weitere Informationen in der Installationsanleitung

In der Cloud Service Mesh-Installation sind mehrere Beispielanwendungen enthalten. Dieses wird die Bereitstellung des BookInfo Stichprobe. Dies ist eine einfache Simulation einer Anwendung für den Buchhandel, die aus vier Diensten besteht. mit einer Produktseite, Buchdetails und Rezensionen (mit mehreren Versionen Rezensionsdienst) und Bewertungen, die alle mit Cloud Service Mesh verwaltet werden. Sie können finden Sie den Quellcode und alle anderen Dateien, die in diesem Beispiel in Ihrem Verzeichnis der Cloud Service Mesh-Installation in samples/bookinfo.

Automatische Sidecar-Injektion aktivieren

Um die automatische Sidecar-Einfügung zu aktivieren, müssen Sie Ihre Namespaces mit einem Label versehen, Der Sidecar-Injektor-Webhook verknüpft injizierte Sidecars mit einem bestimmten Steuerelement Überarbeitung der Ebene. Wenn Sie das Standard-Tag eingerichtet haben, kennzeichnen Sie Ihre Namespaces mit die Standard-Injection-Labels. Andernfalls kennzeichnen Sie Ihre Namespaces mit dem Tag Überarbeitungslabel. Außerdem ist das Label, das die Sie hinzufügen, hängt auch davon ab, verwaltetes Cloud Service Mesh oder die clusterinterne Steuerungsebene installiert.

Verwaltet

  1. Sie können entweder das Standard-Injection-Label oder das Überarbeitungslabel für Ihren Namespace verwenden

    Standard-Injektionslabels

    Wenden Sie das Standard-Injection-Label auf den Namespace an.

    kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev-
    

    Überarbeitungslabel

    Entfernen Sie vor dem Bereitstellen von Anwendungen alle vorherigen istio-injection-Labels aus ihren Namespaces und legen Sie stattdessen das Label istio.io/rev=REVISION_LABEL fest.

    Wenn Sie es in ein bestimmtes Versionslabel ändern möchten, klicken Sie auf REVISION_LABEL und ersetzen Sie mit dem entsprechenden Label: asm-managed-rapid für Rapid Channel, asm-managed für Regulärer Kanal oder asm-managed-stable für stabile Version

    Das Überarbeitungslabel entspricht einer Release-Version:

    Überarbeitungslabel Kanal
    asm-managed Regulär
    asm-managed-rapid Rapid
    asm-managed-stable Stabile Version
    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite
    
  2. Wenn Sie auch die optionale verwaltete Datenebene annotieren Sie den Namespace NAMESPACE so:

    kubectl annotate --overwrite namespace NAMESPACE \
    mesh.cloud.google.com/proxy='{"managed":"true"}'
    

Clusterintern

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

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    Die Ausgabe sieht dann ungefähr so aus:

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-173-3-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-1187-26,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-173-3-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-1187-26,istio=istiod,pod-template-hash=5788d57586
    

    Notieren Sie sich den Wert des Überarbeitungslabels istiod aus der Ausgabe in der Spalte LABELS, das auf das Präfix istio.io/rev= folgt. In diesem Beispiel ist der Wert asm-1187-26.

  2. Wenden Sie das Überarbeitungslabel auf den Standard-Namespace an. Im folgenden Befehl ist REVISION der Wert des Revisions-Labels istiod, den Sie im vorherigen Schritt notiert haben.

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

    Sie können die Nachricht "istio-injection not found" in der Ausgabe ignorieren. Das bedeutet, dass der Namespace zuvor nicht den Wert istio-injection-Label, das Sie in neuen Cloud Service Mesh-Installationen oder neue Bereitstellungen. Da die automatische Injektion Verhalten ist nicht definiert, wenn ein Namespace sowohl den Parameter istio-injection und das Versionslabel, alle kubectl label-Befehle im In der Cloud Service Mesh-Dokumentation wird explizit sichergestellt, dass nur ein Wert festgelegt ist.

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. Gehen Sie in der Befehlszeile des Computers, auf dem Sie Cloud Service Mesh installiert haben, zu das Stammverzeichnis des Cloud Service Mesh-Installationsverzeichnisses. Laden Sie bei Bedarfdie Installationsdatei herunter.

  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 Google Distributed Cloud installiert haben, rufen Sie das externe IP-Adresse für das Ingress-Gateway, konfiguriert nach der Installation von Cloud Service Mesh

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

    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, funktioniert die Anwendung ordnungsgemäß. mit dem Cloud Service Mesh.

  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 über eine Anwendung verfügen, die Traffic generiert, können Sie Cloud Service Mesh-Seiten erkunden in der Google Cloud Console, um Messwerte und andere Beobachtbarkeit Funktionen.

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