Install Cloud Service Mesh

Fortschritt prüfen

/ 50

Deploying a BookInfo application

Fortschritt prüfen

/ 50

Dieses Lab kann KI-Tools enthalten, die den Lernprozess unterstützen.
Dieser Inhalt ist noch nicht für Mobilgeräte optimiert.
Die Lernumgebung funktioniert am besten, wenn Sie auf einem Computer über einen per E‑Mail gesendeten Link darauf zugreifen.

GSP654

Google Cloud-Labs zum selbstbestimmten Lernen

Übersicht

Istio ist ein Open-Source-Framework zum Verbinden, Sichern und Verwalten von Mikrodiensten. Sie können Istio für jeden beliebigen Dienst nutzen, also auch für Dienste, die in einem Kubernetes-Cluster gehostet werden. Mit Istio können Sie ein Netzwerk aus bereitgestellten Diensten mit Load-Balancing, Dienst-zu-Dienst-Authentifizierung, Monitoring und weiteren Funktionen erstellen, ohne Änderungen am Dienstcode vorzunehmen.

Ein konkretes Beispiel: In stabilen verteilten Systemen wird eine fehlgeschlagene Anfrage normalerweise wiederholt, meist mit einer exponentiellen Backoff-Verzögerung. Für Java, Golang und NodeJS gibt es zu diesem Zweck Bibliotheken. Sie innerhalb der Anwendung einzusetzen, bedeutet allerdings, dass das Problem für jede Anwendung individuell gelöst werden muss. Der Istio-Sidecar-Proxy erledigt das für die Anwendung automatisch.

Cloud Service Mesh

Cloud Service Mesh wird von Istio bereitgestellt. Damit erhalten Sie eine für Unternehmen geeignete, vollständig unterstützte Version von Istio, mit der Sie ein Service Mesh mit GKE Enterprise erstellen und bereitstellen können – unabhängig davon, ob Sie Ihren Cluster in Google Cloud oder lokal betreiben.

Sie haben die Möglichkeit, die enthaltenen Konfigurationsprofile mit den empfohlenen und für die Google Kubernetes Engine oder GKE on Bare Metal angepassten Einstellungen zu verwenden.

Außerdem umfasst Cloud Service Mesh eine Suite zusätzlicher Features und Tools, mit denen Sie sichere, zuverlässige Dienste auf einheitliche Weise beobachten und verwalten können:

  • Dienstmesswerte und -logs für HTTP(S)-Traffic im GKE-Cluster Ihres Mesh-Netzwerks werden automatisch in Google Cloud aufgenommen.
  • Vorkonfigurierte Dienst-Dashboards liefern Ihnen hilfreiche Informationen zu Ihren Diensten.
  • Dank umfassender Telemetrie können Sie Messwerte und Logs detailliert analysieren und Ihre Daten nach einer Vielzahl von Attributen filtern und darstellen.
  • In der Übersicht über die Dienst-zu-Dienst-Beziehungen können Sie sofort erkennen, wer sich mit welchem Dienst verbindet und welche Abhängigkeiten bestehen.
  • Service Level Objectives (SLOs) liefern Einblicke in den Status Ihrer Dienste. Sie können jederzeit neue SLOs und Warnungen für Ihre eigenen Anforderungen in Bezug auf den Dienststatus definieren.

Mit Cloud Service Mesh lässt sich mühelos ein leistungsstarkes Istio-basiertes Service Mesh für Ihre GKE Enterprise-Cluster implementieren.

Im Rahmen dieses Labs installieren Sie Cloud Service Mesh auf einem GKE-Cluster.

Lerninhalte

Aufgaben in diesem Lab:

  • Einen Cluster in der Google Kubernetes Engine (GKE) bereitstellen
  • Cloud Service Mesh installieren und konfigurieren
  • Bookinfo, eine Istio-fähige Anwendung mit mehreren Diensten, bereitstellen
  • Externen Zugriff mit einem Istio-Ingress-Gateway einrichten
  • Die Bookinfo-Anwendung verwenden
  • Die Leistung des Dienstes mit dem Cloud Service Mesh-Dashboard überwachen

Einrichtung und Anforderungen

Vor dem Klick auf „Start Lab“ (Lab starten)

Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.

In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.

Für dieses Lab benötigen Sie Folgendes:

  • Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.

Lab starten und bei der Google Cloud Console anmelden

  1. Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der rechten Seite befindet sich der Bereich Lab-Einrichtung und ‑Zugriff:

    • Button Google Cloud Console öffnen
    • Die temporären Anmeldedaten (Nutzername und Passwort), die Sie für dieses Lab verwenden müssen
    • Gegebenenfalls weitere Informationen für dieses Lab

    Der Lab-Timer befindet sich oben auf der Seite und zeigt die verbleibende Zeit an.

  2. Klicken Sie auf Google Cloud Console öffnen. Wenn Sie Chrome verwenden, können Sie auch rechtsklicken und Link in Inkognitofenster öffnen auswählen.

    Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.

    Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.

    Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
  3. Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.

    {{{user_0.username | "Username"}}}

    Sie finden den Nutzernamen auch im Bereich Lab-Einrichtung und ‑Zugriff.

  4. Klicken Sie auf Weiter.

  5. Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.

    {{{user_0.password | "Password"}}}

    Sie finden das Passwort auch im Bereich Lab-Einrichtung und ‑Zugriff.

  6. Klicken Sie auf Weiter.

    Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
  7. Klicken Sie sich durch die nachfolgenden Seiten:

    • Akzeptieren Sie die Nutzungsbedingungen.
    • Fügen Sie keine Wiederherstellungsoptionen oder 2-Faktor-Authentifizierung hinzu, da dies nur ein temporäres Konto ist.
    • Melden Sie sich nicht für kostenlose Testversionen an.

Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.

Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein. Symbol für das Navigationsmenü und Suchfeld

Cloud Shell aktivieren

Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.

  1. Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren Symbol für Cloud Shell-Aktivierung.

  2. Klicken Sie sich durch die folgenden Fenster:

    • Fahren Sie mit dem Informationsfenster zu Cloud Shell fort.
    • Autorisieren Sie Cloud Shell, Ihre Anmeldedaten für Google Cloud API-Aufrufe zu verwenden.

Wenn eine Verbindung besteht, sind Sie bereits authentifiziert und das Projekt ist auf Project_ID, eingestellt. Die Ausgabe enthält eine Zeile, in der die Project_ID für diese Sitzung angegeben ist:

Ihr Cloud-Projekt in dieser Sitzung ist festgelegt als {{{project_0.project_id | "PROJECT_ID"}}}

gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.

  1. (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
  1. Klicken Sie auf Autorisieren.

Ausgabe:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Um das aktive Konto festzulegen, führen Sie diesen Befehl aus: $ gcloud config set account `ACCOUNT`
  1. (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project

Ausgabe:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Hinweis: Die vollständige Dokumentation für gcloud finden Sie in Google Cloud in der Übersicht zur gcloud CLI.

Aufgabe 1: Projekt einrichten

SDK-Konfiguration überprüfen

  1. Sehen Sie in der Cloud Shell nach, ob Ihr Standardkonto konfiguriert ist.

    Prüfen Sie, ob das Cloud SDK für die Verwendung Ihres in Qwiklabs generierten Nutzerkontos konfiguriert ist.

    gcloud config list

    Ausgabe:

    [component_manager] disable_update_check = True [compute] gce_metadata_read_timeout_sec = 5 [core] account = student-xx-xxxx@qwiklabs.net disable_usage_reporting = False project = qwiklabs-gcp-yy-#### [metrics] environment = devshell Your active configuration is: [cloudshell-#####]
  2. Aktualisieren Sie bei Bedarf die Projektkonfiguration.

    Aktualisieren Sie die Konfiguration, falls das Standardprojekt im SDK nicht korrekt festgelegt ist. Ersetzen Sie [project_id] durch den Namen des Projekts aus dem Abschnitt Anmeldedaten auf der Qwiklabs-Anleitungsseite:

    gcloud config set project [project_id]

Umgebungsvariablen konfigurieren

  1. Konfigurieren Sie die Umgebungsvariablen, die in den Einrichtungs- und Installationsbefehlen verwendet werden:
export PROJECT_ID=$(gcloud config get-value project) export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} \ --format="value(projectNumber)") export CLUSTER_NAME=central export CLUSTER_ZONE={{{project_0.default_zone | zone}}} export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog export MESH_ID="proj-${PROJECT_NUMBER}" Hinweis:
  • WORKLOAD_POOL wird zum Aktivieren von Workload Identity verwendet. Dies ist die empfohlene Methode für den sicheren Zugriff auf Google Cloud-Dienste aus GKE-Anwendungen.
  • MESH_ID wird verwendet, um das Label mesh_id im Cluster festzulegen, das erforderlich ist, um sich Messwerte im Cloud Service Mesh-Dashboard in der Cloud Console anzeigen zu lassen.

Berechtigungen prüfen

  • Prüfen Sie in der Cloud Shell, ob Ihrem Nutzerkonto die Rolle Owner zugewiesen wurde:
gcloud projects get-iam-policy $PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:user:$(gcloud config get-value core/account 2>/dev/null)"

Ausgabe:

bindings: members: user:student-xx-xxxx@qwiklabs.net role: roles/owner ... Hinweis: Ihr „student“-Nutzerkonto hat auch viewer-Berechtigungen. Hinweis: Damit Sie die Einrichtung abschließen können, benötigen Sie die mit diesen Rollen verbundenen Berechtigungen:
  • Project Editor
  • Kubernetes Engine Admin
  • Project IAM Admin
  • GKE Hub Admin
  • Service Account Admin
  • Service Account Key Admin
Falls Sie die Rolle Owner haben, verfügen Sie bereits über diese und weitere Berechtigungen und können fortfahren.

Aufgabe 2: GKE-Cluster einrichten

Cluster erstellen

  1. Führen Sie den folgenden Befehl in der Cloud Shell aus, um den Kubernetes-Cluster central zu erstellen:
gcloud config set compute/zone ${CLUSTER_ZONE} gcloud container clusters create ${CLUSTER_NAME} \ --machine-type=e2-standard-4 \ --num-nodes=4 \ --subnetwork=default \ --release-channel=regular \ --labels mesh_id=${MESH_ID} \ --workload-pool=${WORKLOAD_POOL} \ --logging=SYSTEM,WORKLOAD

Ausgabe:

NAME: central LOCATION: {{{project0.default_zone | zone}}} MASTER_VERSION: 1.35.3-gke.2190000 MASTER_IP: 35.245.2.147 MACHINE_TYPE: e2-standard-4 NODE_VERSION: 1.35.3-gke.2190000 NUM_NODES: 4 STATUS: RUNNING

Es dauert einige Minuten, bis der Cluster erstellt ist.

  1. Führen Sie nach Abschluss der Clustererstellung diese Befehlssequenz aus, um das fleet service mesh zu aktivieren, Ihre Administratorberechtigungen zu konfigurieren und den Namespace istio-system einzurichten:
gcloud container fleet mesh enable kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=$(gcloud config get-value account) kubectl create namespace istio-system
  1. Konfigurieren Sie kubectl so, dass es auf den Cluster verweist.
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --zone $CLUSTER_ZONE \ --project $PROJECT_ID

Aufgabe 3: Installation von Cloud Service Mesh vorbereiten

Google bietet das Tool asmcli, mit dem Sie Cloud Service Mesh installieren oder aktualisieren können. Wenn Sie dies zulassen, konfiguriert asmcli Ihr Projekt und Ihren Cluster so:

  • Weist Ihnen die erforderlichen IAM-Berechtigungen (Identity and Access Management) für Ihr Google Cloud-Projekt zu
  • Aktiviert die erforderlichen Google APIs in Ihrem Cloud-Projekt
  • Legt im Cluster ein Label zur Angabe des Mesh-Netzwerks fest
  • Erstellt ein Dienstkonto, mit dem Komponenten der Datenebene wie der Sidecar-Proxy sicher auf die Daten und Ressourcen Ihres Projekts zugreifen können
  • Registriert den Cluster in der Flotte, falls noch nicht geschehen

Sie verwenden asmcli, um Cloud Service Mesh in Ihrem Cluster zu installieren.

  1. Laden Sie die Version herunter, mit der Cloud Service Mesh 1.28 im aktuellen Arbeitsverzeichnis installiert wird:
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.28 > asmcli
  1. Machen Sie das Script ausführbar:
chmod +x asmcli
  1. Aktivieren Sie die Service Mesh API:
gcloud services enable mesh.googleapis.com

Aufgabe 4: Cloud Service Mesh validieren

Mit asmcli validate können Sie prüfen, ob Ihr Projekt und Ihr Cluster zur Installation von Cloud Service Mesh eingerichtet sind. In diesem Fall nimmt asmcli keine Änderungen an Ihrem Projekt oder Cluster vor und installiert Cloud Service Mesh nicht.

asmcli validiert Folgendes:

  • Ihre Umgebung enthält die erforderlichen Tools.
  • Der Cluster erfüllt die Mindestanforderungen.
  • Sie haben die erforderlichen Berechtigungen für das angegebene Projekt.
  • Für das Projekt sind alle erforderlichen Google APIs aktiviert.
  1. Führen Sie den folgenden Befehl aus, um die Konfiguration zu validieren und die Installationsdatei sowie das Paket asm in das Verzeichnis OUTPUT_DIR herunterzuladen:
./asmcli validate \ --project_id $PROJECT_ID \ --cluster_name $CLUSTER_NAME \ --cluster_location $CLUSTER_ZONE \ --fleet_id $PROJECT_ID \ --output_dir ./asm_output Hinweis: Ignorieren Sie alle Validierungsfehler, da die Validierung in diesem Fall bestätigt, dass der Cluster alle notwendigen Komponenten für die Installation von Cloud Service Mesh hat, und nicht, dass Cloud Service Mesh korrekt installiert wurde.

Nach einer erfolgreichen Prüfung sollte die Ausgabe in etwa so aussehen:

asmcli: Setting up necessary files... asmcli: Using asm_kubeconfig as the kubeconfig... asmcli: Checking installation tool dependencies... asmcli: Fetching/writing GCP credentials to kubeconfig file... asmcli: Verifying connectivity (10s)... asmcli: kubeconfig set to asm_kubeconfig asmcli: using context gke_example-project-12345_us-west1_cluster-2 asmcli: Getting account information... asmcli: Downloading ASM.. asmcli: Downloading ASM kpt package... fetching package "/asm" from "https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages" to "asm" asmcli: Checking required APIs... asmcli: Checking for project example-project-12345... asmcli: Reading labels for us-west1/cluster-2... asmcli: Checking for istio-system namespace... asmcli: Confirming node pool requirements for example-project-12345/us-west1/cluster-2... asmcli: Checking Istio installations... asmcli: [WARNING]: There is no way to validate that the meshconfig API has been initialized. asmcli: [WARNING]: This needs to happen once per GCP project. If the API has not been initialized asmcli: [WARNING]: for example-project-12345, please re-run this tool with the --enable_gcp_components asmcli: [WARNING]: flag. Otherwise, installation will succeed but Cloud Service Mesh asmcli: [WARNING]: will not function correctly. asmcli: Successfully validated all requirements to install ASM. Hinweis: In diesem Lab werden die erforderlichen Flags bereitgestellt, um die Warnungen des Validierungsbefehls zu verarbeiten.

Aufgabe 5: Cloud Service Mesh installieren

Mit dem folgenden Befehl wird Cloud Service Mesh installiert. Mit dem Flag „--enable_all“ kann das Script die erforderlichen Google APIs aktivieren, IAM-Berechtigungen festlegen und die nötigen Aktualisierungen an Ihrem Cluster vornehmen. Dazu gehört die Aktivierung von GKE Workload Identity.

  1. Führen Sie den folgenden Befehl aus, um Cloud Service Mesh zu installieren:
./asmcli install \ --project_id $PROJECT_ID \ --cluster_name $CLUSTER_NAME \ --cluster_location $CLUSTER_ZONE \ --fleet_id $PROJECT_ID \ --output_dir ./asm_output \ --enable_all \ --option legacy-default-ingressgateway \ --ca mesh_ca \ --enable_gcp_components

Die Ausgabe sollte in etwa so aussehen:

asmcli: ***************************** asmcli: Successfully installed ASM.

Klicken Sie auf Fortschritt prüfen. Cloud Service Mesh installieren

Ingress-Gateway installieren

Cloud Service Mesh bietet Ihnen die Möglichkeit, Gateways als Teil des Service Mesh bereitzustellen und zu verwalten. Ein Gateway beschreibt einen Load-Balancer, der am Rand des Mesh-Netzwerks eingesetzt wird und ein- oder ausgehende HTTP/TCP-Verbindungen empfängt. Gateways sind Envoy-Proxys, die Ihnen eine detaillierte Kontrolle des im Mesh-Netzwerk ein- und ausgehenden Traffics ermöglichen.

  1. Erstellen Sie einen Namespace für das Ingress-Gateway, falls Sie noch keinen haben. Gateways sind Nutzerarbeitslasten und sollten nicht im Namespace der Steuerungsebene bereitgestellt werden.
GATEWAY_NS=istio-gateway kubectl create namespace $GATEWAY_NS
  1. Aktivieren Sie die automatische Injektion auf dem Gateway, indem Sie ein Versionslabel auf den Gateway-Namespace anwenden. Das Versionslabel wird vom Sidecar-Injektor-Webhook verwendet, um eingefügte Proxys mit einer bestimmten Version der Steuerungsebene zu verknüpfen.

    • Verwenden Sie den folgenden Befehl, um das Versionslabel für istiod zu finden:
    kubectl get deploy -n istio-system -l app=istiod -o \ jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'
    • Speichern Sie diesen Wert in einer Umgebungsvariablen:
    REVISION=$(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 der Wert des istiod-Versionslabels, den Sie im vorherigen Schritt notiert haben:
    kubectl label namespace $GATEWAY_NS \ istio.io/rev=$REVISION --overwrite
    • Aktivieren Sie die Istio-Proxy-Injektion:
    kubectl label namespace default istio-injection=enabled kubectl label namespace $GATEWAY_NS istio-injection=enabled
  2. Wechseln Sie zu dem Verzeichnis, das Sie in --output_dir angegeben haben:

cd ~/asm_output
  1. Sie können die Beispielkonfiguration für das Ingress-Gateway im Verzeichnis samples/gateways/istio-ingressgateway/ unverändert bereitstellen oder nach Bedarf ändern:
kubectl apply -n $GATEWAY_NS \ -f samples/gateways/istio-ingressgateway

Sidecar-Injektion aktivieren

Cloud Service Mesh verwendet Sidecar-Proxys, um die Sicherheit, Zuverlässigkeit und Beobachtbarkeit von Netzwerken zu verbessern. Cloud Service Mesh abstrahiert diese Funktionen aus dem primären Container der Anwendungen heraus und implementiert sie in einem gemeinsam verwendeten Out-of-Process-Proxy, der als separater Container im selben Pod bereitgestellt wird.

  1. Bevor Sie Arbeitslasten bereitstellen, muss die Sidecar-Proxy-Injektion konfiguriert werden, um den Traffic mit Cloud Service Mesh überwachen und schützen zu können.

  2. Wenden Sie das Versionslabel an und entfernen Sie das Label „istio-injection“, falls vorhanden, um die automatische Injektion zu aktivieren.

  3. Im folgenden Befehl geben Sie den Namespace default an, in dem Sie die automatische Injektion aktivieren möchten. „REVISION“ ist das Versionslabel, das Sie im vorherigen Schritt notiert haben:

kubectl label namespace default istio-injection-istio.io/rev=$REVISION --overwrite Hinweis: Sie können die Meldung "istio-injection" not found in der Ausgabe ignorieren. Sie bedeutet, dass der Namespace bisher das Label „istio-injection“ nicht hatte, was bei Neuinstallationen von Cloud Service Mesh oder neuen Bereitstellungen zu erwarten ist. Hinweis: Die Sidecar-Proxy-Injektion ist jetzt für zukünftige Arbeitslasten aktiviert.

Wenn auf diesem Cluster bereits Arbeitslasten ausgeführt worden wären, müssten Sie die Pods neu starten, um die automatische Injektion noch einmal auszulösen.

Aufgabe 6: Bookinfo, eine Istio-fähige Anwendung mit mehreren Diensten, bereitstellen

Im Rahmen dieser Aufgabe richten Sie die Mikrodienstanwendung Bookinfo ein und lernen sie kennen.

Bookinfo

Nachdem Sie Cloud Service Mesh konfiguriert und überprüft haben, können Sie eine der Beispielanwendungen bereitstellen, die in der Installation enthalten sind: Bookinfo. Bookinfo ist eine einfache Simulation einer Anwendung für den Buchhandel, die aus vier von Istio verwalteten Mikrodiensten besteht. Jeder der Mikrodienste ist in einer anderen Sprache geschrieben, um zu demonstrieren, wie Sie Istio in einer Umgebung mit mehreren Programmiersprachen verwenden können, ohne Änderungen am Code vornehmen zu müssen.

Die Anwendung umfasst folgende Mikrodienste:

  • productpage: ruft die Mikrodienste „details“ und „reviews“ auf, die die entsprechenden Informationen auf der Seite bereitstellen.
  • details: enthält Informationen zum Buch.
  • reviews: enthält Buchrezensionen und ruft den Mikrodienst „ratings“ auf.
  • ratings: enthält Informationen zum Ranking des Buchs, die einer Buchrezension beigefügt sind.

Es gibt drei Versionen des Mikrodienstes reviews:

  • reviews v1 ruft den Dienst „ratings“ nicht auf.
  • reviews v2 ruft den Dienst „ratings“ auf und stellt jede Bewertung mit einem bis fünf schwarzen Sternen dar.
  • reviews v3 ruft den Dienst „ratings“ auf und stellt die Bewertungen mit einem bis fünf roten Sternen dar.

Die End-to-End-Architektur der Anwendung sieht so aus:

Bookinfo-Architektur

Sie finden den Quellcode und alle anderen in diesem Beispiel verwendeten Dateien im Istio-Verzeichnis samples/bookinfo.

Bookinfo bereitstellen

  1. In der .yaml-Datei finden Sie eine Beschreibung der Bookinfo-Anwendung:

    istio_dir=$(ls -d istio-* | tail -n 1) cd $istio_dir cat samples/bookinfo/platform/kube/bookinfo.yaml

    Unter containers sehen Sie, dass jedes Deployment genau einen Container für jede Version eines Dienstes in der Bookinfo-Anwendung enthält.

  2. Führen Sie den folgenden Befehl in der Cloud Shell aus, um den Proxy-Sidecar für alle bereitgestellten Anwendungs-Pods zu injizieren:

    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml Hinweis:

    Istio nutzt eine erweiterte Version des leistungsstarken, in C++ entwickelten Open-Source-Proxys von Envoy, um den ein- und ausgehenden Traffic für alle Dienste im Service Mesh zu vermitteln.

    Istio nutzt die vielen integrierten Funktionen von Envoy. Dazu zählen beispielsweise dynamische Service Discovery, Load Balancing, TLS-Terminierung, HTTP/2- und gRPC-Proxys, Unterbrechungen der Netzwerkverbindung, Systemdiagnosen, gestaffelte Roll-outs mit prozentualer Traffic-Aufteilung, Fehlerinjektion und vielfältige Messwerte.

    Ausgabe:

    service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created

Klicken Sie auf Fortschritt prüfen. Bookinfo-Anwendung bereitstellen

Externen Zugriff mit einem Istio-Ingress-Gateway einrichten

Nachdem die Bookinfo-Dienste nun ausgeführt werden, möchten wir den Zugriff auf die Anwendung von außerhalb Ihres Kubernetes-Clusters ermöglichen, zum Beispiel mithilfe eines Webbrowsers. Für diesen Zweck nutzen wir ein Istio-Gateway.

  1. Die .yaml-Datei enthält die Konfiguration des Anwendungs-Ingress-Gateways:

    cat samples/bookinfo/networking/bookinfo-gateway.yaml

    Finden Sie das Gateway und die VirtualService-Mesh-Ressourcen, die bereitgestellt werden. Das Gateway macht Dienste für Nutzerinnen und Nutzer außerhalb des Service Mesh verfügbar und ermöglicht es, Istio-Funktionen wie Monitoring und Routingregeln auf den im Cluster eingehenden Traffic anzuwenden.

  2. Konfigurieren Sie das Ingress-Gateway für die Anwendung. Dadurch erhalten Sie eine externe IP-Adresse, die Sie später benötigen:

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

    Ausgabe:

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

Bookinfo-Bereitstellungen prüfen

  1. Vergewissern Sie sich, dass die Anwendung korrekt bereitgestellt wurde, und prüfen Sie die Dienste, Pods und das Ingress-Gateway:

    kubectl get services

    Ausgabe:

    NAME TYPE ... details ClusterIP ... kubernetes ClusterIP ... productpage ClusterIP ... ratings ClusterIP ... reviews ClusterIP ...
  2. Prüfen Sie, ob die Anwendungs-Pods ausgeführt werden:

    kubectl get pods

    Ausgabe:

    NAME READY STATUS RESTARTS AGE details-v1-79f774bdb9-6l54w 2/2 Running 0 101s productpage-v1-6b746f74dc-4xccm 2/2 Running 0 100s ratings-v1-b6994bb9-7g4z2 2/2 Running 0 100s reviews-v1-545db77b95-hkh9p 2/2 Running 0 100s reviews-v2-7bf8c9648f-cmsxj 2/2 Running 0 100s reviews-v3-84779c7bbc-8b8qp 2/2 Running 0 100s

    Möglicherweise müssen Sie diesen Befehl wiederholt ausführen, bis Sie sehen, dass alle sechs Pods den Status Wird ausgeführt haben.

  3. Prüfen Sie, ob die Bookinfo-Anwendung ausgeführt wird. Senden Sie dazu eine curl-Anfrage von einem beliebigen Pod im Cluster, zum Beispiel ratings, an die Anwendung:

    kubectl exec -it $(kubectl get pod -l app=ratings \ -o jsonpath='{.items[0].metadata.name}') \ -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"

    Ausgabe:

    Einfache Bookstore-Anwendung
  4. Prüfen Sie, ob das Ingress-Gateway erstellt wurde:

    kubectl get gateway

    Ausgabe:

    NAME AGE bookinfo-gateway 20m
  5. Rufen Sie die externe IP-Adresse des Ingress-Gateways ab:

    kubectl get svc istio-ingressgateway -n istio-system

    Ausgabe:

    NAME TYPE ... EXTERNAL-IP ... istio-ingressgateway LoadBalancer ... 34.72.220.30 ...

    In diesem Beispiel hat das Ingress-Gateway die externe IP-Adresse 34.72.220.30.

  6. Führen Sie jetzt den folgenden Befehl aus und ersetzen Sie dabei [EXTERNAL-IP] durch die externe IP-Adresse, die beim vorherigen Befehl ausgegeben wurde:

    export GATEWAY_URL=[EXTERNAL-IP]
  7. Prüfen Sie, ob die Bookinfo-Anwendung ausgeführt wird. Senden Sie dafür eine curl-Anfrage von außerhalb des Clusters an die Anwendung:

    curl -I http://${GATEWAY_URL}/productpage

    Ausgabe:

    HTTP/1.1 200 OK content-type: text/html; charset=utf-8 content-length: 4183 server: istio-envoy ...

Aufgabe 7: Die Bookinfo-Anwendung verwenden

Anwendung im Webbrowser öffnen

  1. Rufen Sie in Ihrem Browser die Adresse http://[$GATEWAY_URL]/productpage auf, um sich die Bookinfo-Webseite anzeigen zu lassen. Denken Sie daran, [$GATEWAY_URL] durch die externe IP-Adresse zu ersetzen, die Sie vorhin erhalten haben.

    Bookinfo-Produktseite

  2. Aktualisieren Sie die Seite mehrmals.

    Sie sehen, dass Ihnen drei verschiedene Arten von Rezensionen angezeigt werden. Das liegt daran, dass wir das Versionsrouting noch nicht mit Istio steuern.

    Die Rezensionen stammen von unterschiedlichen Buchrezensionsdiensten, deren Bewertungen in zufälliger Abfolge angezeigt werden:

    • Keine Sterne
    • Schwarze Sterne
    • Rote Sterne

    Die Tatsache, dass zwischen ihnen gewechselt wird, entspricht dem normalen Routing/Balancing-Verhalten in Kubernetes.

Konstante Hintergrundlast generieren

Führen Sie das Dienstprogramm „siege“ aus, um Traffic in Bookinfo zu simulieren.

  1. Installieren Sie siege in der Cloud Shell.

    „siege“ ist ein Dienstprogramm, mit dem Sie Last für Websites generieren können.

    sudo apt install siege
  2. Verwenden Sie siege, um Traffic für Ihre Dienste zu generieren:

    siege http://${GATEWAY_URL}/productpage

Aufgabe 8: Leistung der Dienste über das Cloud Service Mesh-Dashboard analysieren

Daten aus der Tabellenansicht „Dienste“ erfassen

  1. Öffnen Sie in der Console das Navigationsmenü und klicken Sie auf Kubernetes Engine > Service Mesh.

Klicken Sie bei entsprechender Aufforderung auf Aktivieren, um die Service Mesh API zu aktivieren.

  1. Sehen Sie sich den Abschnitt Dienst an.

    Wie viele Dienste werden dort aufgelistet?

  2. Klicken Sie auf den Dienst productpage, um eine Aufschlüsselung mit weiteren Details aufzurufen.

    Dienst „productpage“ hervorgehoben

    In der Zusammenfassung oben sehen Sie Details zu aktuellen Anfragen pro Sekunde, Fehlerraten, Latenz und Ressourcennutzung.

    Falls nicht Anfragen > 0 angezeigt wird, verlassen Sie die Seite und öffnen Sie den Dienst „productpage“ nach einigen Minuten noch einmal.

  3. Klicken Sie auf die Option Messwerte. Sehen Sie sich die verschiedenen Diagramme und ihre Aufschlüsselungsoptionen an.

    • Welche aktuelle Anfragenrate wird angezeigt und wie hat sie sich geändert?
    • Welche aktuelle Fehlerrate wird angezeigt und wie hat sie sich geändert?
    • Welche Latenzen werden angezeigt?
    • Wie groß sind die Anfragen im Durchschnitt?
    • Wie groß sind die Antworten im Durchschnitt?
    • Wie hoch ist die aggregierte CPU-Auslastung?
  4. Klicken Sie auf die Option Verbundene Dienste.

    Hier werden andere Dienste aufgelistet, die eingehende Anfragen an den Dienst „productpage“ senden, sowie Dienste, die ausgehende Anfragen von „productpage“ empfangen.

    • Welche Dienste senden Aufrufe an den Dienst productpage?
    • Welche Dienste ruft der Dienst productpage auf?
    • Wird mTLS bei dienstübergreifenden Aufrufen erzwungen?
    Hinweis: Der Dienst ratings sendet normalerweise keine Anfragen an den Dienst „productpage“. Der Dienst „ratings“ wird hier angezeigt, weil Sie ihn im Rahmen dieses Labs verwendet haben, um eine Testanfrage zu senden.
  5. Kehren Sie zum Cloud Service Mesh-Dashboard zurück. Klicken Sie dazu oben links in der Ecke auf das Cloud Service Mesh-Logo.

Sie können jetzt weitere Dienste entdecken oder sich Aufschlüsselungen anzeigen lassen.

Hinweis:

Im oberen Bereich des Dashboards werden Informationen zu Service Level Objectives (SLOs) und Warnungen angezeigt.

SLOs sind Ziele für Service Level Indicators (SLIs) und bilden Ihre Definition davon ab, welches Leistungsniveau Ihr Dienst erreichen muss. Ein SLO kann beispielsweise vorschreiben, dass 99,9 % der stündlichen Anfragen einen Antwortcode 200 zurückgeben müssen. Sie können eine Benachrichtigungsrichtlinie festlegen, damit Ihre Mitarbeitenden im Bereitschaftsdienst informiert werden, wenn der Dienst seine SLOs nicht erfüllt.

Suchen Sie nach weiteren Labs, in denen Sie SLOs definieren und testen können.

Topologieansicht verwenden, um Ihr Mesh-Netzwerk grafisch darzustellen

  1. Sehen Sie sich im Cloud Service Mesh-Dashboard die Topologie an.

    Möglicherweise müssen Sie einige Minuten warten, bis das Topologiediagramm angezeigt wird.

  2. Ordnen Sie die Knoten im Diagramm so an, dass Sie die Beziehungen zwischen Diensten und Arbeitslasten einfach ablesen können.

    Beachten Sie, dass externe Anfragen bei „productpage“ beginnen. Sie können zurückscrollen und sich das Bookinfo-Architekturdiagramm in der Bookinfo-Übersicht ansehen.

    Ihr Diagramm könnte beispielsweise so aussehen:

    Service-Mesh-Diagramm

    Hinweis: Möglicherweise müssen Sie auf Maximieren klicken, um alle Knoten zu sehen.
  3. Klicken Sie auf den Dienstknoten productpage.

    Dort sollte eine Karte mit Dienstdetails angezeigt werden:

    Karte mit Dienstdetails

    • Wie viele Anfragen empfängt dieser Dienst pro Sekunde?
    • Welche Werte werden für Median- und 99 %-Latenz angezeigt?
  4. Bewegen Sie den Mauszeiger auf die einzelnen Dienstknoten und sehen Sie sich die Edge-Statistiken an.

    • Wie viele Anfragen empfängt der Dienst productpage pro Sekunde und woher stammen sie?
    • Wie viele Anfragen leitet der Dienst pro Sekunde an die Arbeitslast productpage-v1 weiter?

    Hier sollten in etwa die folgenden Traffic-Details angezeigt werden:

    Diagramm mit Traffic-Details

  5. Schlüsseln Sie eine der Arbeitslasten auf, bis Sie zu Deployment, Replikatset und Pods gelangen.

    Die Ausgabe sollte ungefähr so aussehen:

    Diagramm mit Deployment, Replikatset und Pods

Das wars! Sie haben das Lab erfolgreich abgeschlossen.

Im Rahmen dieses Labs haben Sie einen GKE-Cluster, Cloud Service Mesh und eine Istio-fähige Anwendung bereitgestellt. Außerdem haben Sie das Cloud Service Mesh-Dashboard verwendet, um sich mit der Leistung Ihrer Dienste und der Topologie Ihrer Anwendung vertraut zu machen.

Weitere Informationen

Google Cloud-Schulungen und -Zertifizierungen

In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.

Anleitung zuletzt am 9. Juni 2026 aktualisiert

Lab zuletzt am 9. Juni 2026 getestet

© 2026 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

Vorbereitung

  1. Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
  2. Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
  3. Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen

Privates Surfen verwenden

  1. Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
  2. Klicken Sie im privaten Modus auf Konsole öffnen

In der Konsole anmelden

  1. Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
  2. Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
  3. Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.

Diese Inhalte sind derzeit nicht verfügbar

Bei Verfügbarkeit können wir Sie per E-Mail benachrichtigen

Sehr gut!

Bei Verfügbarkeit können wir Sie per E-Mail kontaktieren

Es ist immer nur ein Lab möglich

Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten

Privates Surfen für das Lab verwenden

Am besten führen Sie dieses Lab in einem Inkognito- oder privaten Browserfenster aus. So vermeiden Sie Konflikte zwischen Ihrem privaten Konto und dem Teilnehmerkonto, die zusätzliche Kosten für Ihr privates Konto verursachen könnten.