BookInfo-Beispiel bereitstellen
Auf dieser Seite wird beschrieben, wie Sie eine Beispielanwendung bereitstellen, um Cloud Service Mesh zu demonstrieren. Wenn Sie sich noch nicht in Cloud Service Mesh eingearbeitet haben, lesen Sie die Onboarding-Anleitung.
In der Cloud Service Mesh-Installation sind mehrere Beispielanwendungen enthalten. In dieser Anleitung wird beschrieben, wie Sie das Beispiel BookInfo bereitstellen. Dies ist die Simulation einer einfachen Anwendung für den Buchhandel, die aus vier Diensten besteht: einer Webproduktseite, Buchdetails, Rezensionen (mit mehreren Versionen des Rezensionsdienstes) und Bewertungen. Alle werden mit Cloud Service Mesh verwaltet. Den Quellcode und alle anderen Dateien in diesem Beispiel finden Sie im Verzeichnis samples/bookinfo Ihrer Cloud Service Mesh-Installation.
Automatisches Einschleusen der Sidecar-Datei aktivieren
Aktivieren Sie den Namespace für die Einschleusung. Die Schritte hängen von Ihrer Implementierung der Steuerungsebene ab.
Verwaltet (TD)
- Wenden Sie das Standard-Einschleusungslabel auf den Namespace an.
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteVerwaltet (Istiod)
Empfohlen: Führen Sie den folgenden Befehl aus, um das Standard-Einschleusungslabel auf den Namespace anzuwenden:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteFür vorhandene Nutzer der verwalteten Istiod-Steuerungsebene: Wir empfehlen die Verwendung der Standardeinschleusung. Die versionsbasierte Einschleusung wird jedoch auch unterstützt. Gehen Sie so vor:
Führen Sie folgenden Befehl aus, um die verfügbaren Release-Versionen zu finden:
kubectl -n istio-system get controlplanerevisionDie Ausgabe sieht etwa so aus:
NAME AGE asm-managed-rapid 6d7hHINWEIS: Wenn in der oberen Liste zwei Versionen der Steuerungsebene angezeigt werden, entfernen Sie eine. Im Cluster werden nicht mehrere Versionen der Steuerungsebene unterstützt.
In der Ausgabe ist der Wert in der Spalte
NAMEdas Versionslabel für die verfügbare Release-Version der Cloud Service Mesh-Version.Wenden Sie das Versionslabel auf den Namespace an.
kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Clusterintern
Empfohlen: Führen Sie den folgenden Befehl aus, um das Standard-Einschleusungslabel auf den Namespace anzuwenden:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteWir empfehlen die Standardeinschleusung. Die versionsbasierte Einschleusung wird jedoch auch unterstützt. Gehen Sie so vor:
Verwenden Sie den folgenden Befehl, um das Versionslabel für
istiodzu finden:kubectl get deploy -n istio-system -l app=istiod -o \ jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'Wenden Sie das Versionslabel auf den Namespace an. Im folgenden Befehl ist
REVISION_LABELder Wert des Versionslabelsistiod, den Sie im vorherigen Schritt notiert haben.kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Anwendung bereitstellen
Nachdem im Namespace default die automatische Einschleusung aktiviert wurde, werden beim Bereitstellen der Dienste für die BookInfo-Anwendung mit jedem Dienst Sidecar-Proxys eingeschleust.
Wechseln Sie in der Befehlszeile des Computers, auf dem Cloud Service Mesh installiert ist, zum Stamm des Cloud Service Mesh-Installationsverzeichnisses. Laden Sie bei Bedarf die Datei für die clusterinterne Installation herunter, die die BookInfo-Beispielanwendung enthält, und extrahieren Sie sie.
Stellen Sie die Anwendung mit
kubectlim Standard-Namespace bereit:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlFühren Sie die folgenden Befehle aus, um zu bestätigen, dass die Anwendung fehlerfrei bereitgestellt wurde:
kubectl get servicesAusgabe:
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 podAusgabe:
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
Definieren Sie abschließend das Ingress-Gateway-Routing für die Anwendung:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yamlAusgabe:
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 (nur Software) für VMware installiert haben, rufen Sie die externe IP-Adresse des Ingress-Gateways ab, das Sie nach der Installation von Cloud Service Mesh konfiguriert haben.
Wenn Sie Cloud Service Mesh auf der GKE installiert haben, rufen Sie die externe IP-Adresse des Ingress-Gateways folgendermaßen ab:
kubectl get service istio-ingressgateway -n istio-systemAusgabe:
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
Prüfen Sie, ob die BookInfo-Anwendung mit
curlausgeführt wird:curl -I http://EXTERNAL_IP/productpageWenn die Antwort
200enthält, funktioniert die Anwendung fehlerfrei mit Cloud Service Mesh.Geben Sie die folgende Adresse in Ihren Browser ein, um die BookInfo-Webseite aufzurufen:
http://EXTERNAL_IP/productpageWenn 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 Ihre Anwendung jetzt Traffic generiert, können Sie die Cloud Service Mesh-Seiten in der Google Cloud Console aufrufen, um Messwerte und andere Beobachtbarkeitsfunktionen einzusehen.
Bereinigen
Wenn Sie mit dem Testen des Bookinfo-Beispiels fertig sind, entfernen Sie es aus Ihrem Cluster.
Deinstallieren Sie Bookinfo mit dem folgenden Skript:
samples/bookinfo/platform/kube/cleanup.shBestä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