Anthos Service Mesh – Kurzanleitung für GKE

In dieser Anleitung installieren Sie Anthos Service Mesh 1.9.8-asm.6 mithilfe des von Google bereitgestellten Skripts install_asm in einem neuen GKE-Cluster (Google Kubernetes Engine). In dieser Anleitung wird Folgendes beschrieben:

  1. Google Cloud-Projekt konfigurieren
  2. GKE-Cluster mit der Mindestanzahl von vCPUs erstellen, die von Anthos Service Mesh benötigt werden
  3. Anthos Service Mesh mit einer clusterinternen Steuerungsebene installieren
  4. Beispielanwendung bereitstellen, um Telemetriedaten auf den Anthos Service Mesh-Dashboards in der Google Cloud Console aufzurufen

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss dieser Kurzanleitung können Sie weitere Kosten durch das Löschen des Clusters vermeiden. Weitere Informationen finden Sie unter Bereinigen.

Hinweise

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine API.

    Enable the API

  8. Notieren Sie sich die Projekt-ID.

Anthos Service Mesh erfordert zwar weitere APIs, aber das Skript install_asm aktiviert sie für Sie. Die GKE Enterprise API wird durch das Skript install_asm nicht aktiviert, um die Abrechnungskosten niedrig zu halten. Es gibt einige geringfügige Unterschiede in der Google Cloud Console, wenn die GKE Enterprise API aktiviert ist. Weitere Informationen zu diesen Unterschieden finden Sie unter Unterschiede zwischen GKE Enterprise und Anthos Service Mesh.

Erforderliche Tools installieren

Sie können das Skript in Cloud Shell oder auf Ihrem lokalen Computer ausführen, auf dem Linux ausgeführt wird. Cloud Shell installiert alle erforderlichen Tools vorab. macOS wird nicht unterstützt, da eine ältere Version von Bash enthalten ist.

Cloud Shell

Cloud Shell stellt eine g1-small Compute Engine-VM bereit, auf der ein Debian-basiertes Linux-Betriebssystem ausgeführt wird. Cloud Shell bietet folgende Vorteile:

  • Cloud Shell umfasst gcloud, kubectl, kpt und die anderen erforderlichen Befehlszeilentools.

  • Ihr $HOME-Verzeichnis in Cloud Shell verfügt über 5 GB nichtflüchtigen Speicher.

  • Es stehen verschiedene Texteditoren zur Auswahl:

    • Code-Editor, auf den Sie zugreifen, indem Sie oben im Cloud Shell-Fenster auf klicken.

    • Emacs, Vim oder Nano, auf die Sie in Cloud Shell über die Befehlszeile zugreifen.

So verwenden Sie Cloud Shell:

  1. Öffnen Sie die Google Cloud Console.
  2. Wählen Sie Ihr Google Cloud-Projekt aus.
  3. Klicken Sie im oberen Bereich des Google Cloud Console-Fensters auf Cloud Shell aktivieren.

    Google Cloud Platform Console

    Im unteren Bereich der Google Cloud Console wird ein neues Feld mit einer Cloud Shell-Sitzung und einer Befehlszeilen-Eingabeaufforderung geöffnet.

    Cloud Shell-Sitzung

Lokaler Linux-Computer

  1. Die folgenden Tools müssen installiert sind:

  2. Authentifizieren Sie sich mit Google Cloud-CLI:

    gcloud auth login
    
  3. Aktualisieren Sie die Komponenten:

    gcloud components update
    
  4. Prüfen Sie, ob sich git in Ihrem Pfad befindet, damit kpt es finden kann.

GKE-Cluster erstellen

  1. Führen Sie den folgenden Befehl aus, um den Cluster mit der Mindestanzahl von vCPUs zu erstellen, die für Anthos Service Mesh erforderlich ist. Ersetzen Sie im Befehl die Platzhalter durch folgende Informationen:

    • CLUSTER_NAME: Der Name Ihres Clusters. Der Name darf nur kleingeschriebene, alphanumerische Zeichen und - enthalten, muss mit einem Buchstaben beginnen und mit einem alphanumerischen Zeichen enden. Er darf nicht länger als 40 Zeichen sein.
    • PROJECT_ID: Die Projekt-ID, in der der Cluster erstellt wird.
    • CLUSTER_LOCATION: Die Zone des Clusters, z. B. us-central1-a.
    gcloud container clusters create CLUSTER_NAME  \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION  \
        --machine-type=e2-standard-4 \
        --num-nodes=2 \
        --workload-pool=PROJECT_ID.svc.id.goog
    
  2. Rufen Sie die Anmeldedaten für die Authentifizierung ab, um mit dem Cluster zu interagieren: Mit diesem Befehl wird auch der aktuelle Kontext für kubectl auf den Cluster festgelegt.

    gcloud container clusters get-credentials CLUSTER_NAME  \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION
    

ASM-Installationsskript herunterladen

  1. Laden Sie die Version des Skripts herunter, mit der Anthos Service Mesh 1.9.8 in das aktuelle Arbeitsverzeichnis installiert wird:

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9 > install_asm
    
  2. Laden Sie das SHA-256 der Datei in das aktuelle Arbeitsverzeichnis herunter:

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9.sha256 > install_asm.sha256
    
  3. Prüfen Sie den Download, wenn beide Dateien im selben Verzeichnis sind:

    sha256sum -c --ignore-missing install_asm.sha256
    

    Wenn die Prüfung erfolgreich ist, gibt der Befehl Folgendes aus: install_asm: OK

    Aus Kompatibilitätsgründen enthält die Datei install_asm.sha256 die Prüfsumme zweimal, damit jede Version des Skripts in install_asm umbenannt werden kann. Wenn Sie die Fehlermeldung erhalten, dass --ignore-missing nicht vorhanden ist, führen Sie den vorherigen Befehl ohne das Flag --ignore-missing noch einmal aus.

  4. Machen Sie das Skript ausführbar:

    chmod +x install_asm
    

Anthos Service Mesh installieren

Führen Sie das Skript install_asm mit den folgenden Optionen aus, um Anthos Service Mesh im zuvor erstellten Cluster zu installieren. Wenn Sie diese Seite seit dem Erstellen des Clusters nicht geschlossen haben, enthalten die Platzhalter die Werte, die Sie für den Befehl gcloud container clusters create eingegeben haben.

./install_asm \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME  \
  --cluster_location CLUSTER_LOCATION  \
  --mode install \
  --output_dir ./asm-downloads \
  --enable_all

Es kann einige Minuten dauern, bis die Ausführung des Skripts install_asm abgeschlossen ist. Das Skript gibt Informationsnachrichten aus, damit Sie den Fortschritt verfolgen können.

Der Befehl führt install_asm mit den folgenden Optionen aus:

  • --mode install: Führt das Skript für eine neue Installation aus und aktiviert die Anthos Service Mesh-Zertifizierungsstelle (Mesh CA), also die standardmäßige Zertifizierungsstelle für Installationen.
  • --output_dir ./asm-downloads: Das Verzeichnis, in das das Skript die Dateien aus dem Repository anthos-service-mesh herunterlädt und die Anthos Service Mesh-Installationsdatei herunterlädt und extrahiert. Darin enthalten sind istioctl, Beispiele und Manifeste.
  • --enable-registration: Erlaubt dem Skript, den Cluster für das Projekt zu registrieren, in dem sich der Cluster befindet.
  • --enable_all: Erlaubt dem Skript, die erforderlichen Google APIs zu aktivieren, Berechtigungen für das Identity and Access Management zu erteilen und die erforderlichen Aktualisierungen an Ihrem Cluster vorzunehmen. Dazu gehört die Aktivierung von GKE Workload Identity.

Online Boutique-Beispiel bereitstellen

  1. Laden Sie das Beispiel mit kpt herunter:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    online-boutique
    
  2. Erstellen Sie einen Namespace für die Anwendung:

    kubectl create namespace demo
    
  3. Aktivieren Sie die automatische Sidecar-Injektion (automatische Injektion). Verwenden Sie den folgenden Befehl, um beim Dienst istiod nach dem Label zu suchen. Dort ist der Wert des Überarbeitungslabels enthalten, der in den späteren Schritten verwendet wird.

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

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

    kubectl label namespace demo 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 bisher nicht das Label istio-injection hatte, was bei Neuinstallationen von Anthos Service Mesh oder neuen Bereitstellungen zu erwarten wäre. Da die automatische Injektion fehlschlägt, wenn ein Namespace sowohl das istio-injection als auch das Überarbeitungslabel enthält, enthalten alle kubectl label-Befehle in der Anthos Service Mesh-Dokumentation das Label istio-injection.

  5. Stellen Sie das Beispiel im Cluster bereit:

    kubectl apply -n demo -f online-boutique
    
  6. Rufen Sie die externe IP-Adresse des Ingress-Gateways ab:

    kubectl get service istio-ingressgateway -n istio-system
    

    Die Ausgabe sieht etwa so aus:

    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-Gateways 35.239.7.64.

  7. Rufen Sie die Anwendung in Ihrem Browser auf, um die Installation zu bestätigen:

    http://EXTERNAL_IP/
    

Service Mesh-Dashboards aufrufen

Nachdem Sie Arbeitslasten mit den eingefügten Sidecar-Proxys auf Ihrem Cluster bereitgestellt haben, können Sie die Anthos Service Mesh-Seiten in der Google Cloud Console entdecken, um alle Beobachtbarkeitsfunktionen von Anthos Service Mesh zu sehen. Nach der Bereitstellung von Arbeitslasten dauert es etwa ein oder zwei Minuten, bis Telemetriedaten in der Google Cloud Console angezeigt werden.

In der Cloud Console wird der Zugriff auf Anthos Service Mesh durch die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) gesteuert. Für den Zugriff auf Anthos Service Mesh-Seiten muss ein Projektinhaber den Nutzern die Rolle „Projektbearbeiter“ oder „Betrachter“ oder die unter Zugriff auf Anthos Service Mesh in der Google Cloud Console steuern beschriebenen restriktiveren Rollen gewähren.

  1. Wechseln Sie in der Google Cloud Console zu Anthos Service Mesh.

    Zu Anthos Service Mesh

  2. Wählen Sie das Google Cloud-Projekt aus der Drop-down-Liste in der Menüleiste aus.

  3. Wenn Sie mehr als ein Service Mesh haben, wählen Sie das Mesh aus der Drop-down-Liste Service Mesh aus.

Weitere Informationen finden Sie unter Mit Anthos Service Mesh in der Google Cloud Console vertraut machen.

Bereinigen

Wenn Sie mehr über gegenseitiges TLS erfahren möchten, lesen Sie Anthos Service Mesh mit Beispiel: mTLS.

  • Wenn Sie zusätzliche Gebühren vermeiden möchten, löschen Sie den Cluster:

    gcloud container clusters delete  CLUSTER_NAME  \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION
    
  • Wenn Sie den Cluster behalten und das Online Boutique-Beispiel entfernen möchten:

    kubectl delete namespaces demo
    

Nächste Schritte

Mehr zu folgenden Themen: