Anthos Service Mesh 1.6

Anthos Service Mesh mithilfe der Anthos-Befehlszeile auf einem vorhandenen Cluster installieren

In diesem Leitfaden wird die saubere Installation der Anthos Service Mesh-Version 1.6.11-asm.1 auf einem vorhandenen GKE-Cluster in Google Cloud mithilfe der Anthos-Befehlszeile erläutert. Lesen Sie Upgrade von Anthos Service Mesh auf GKE ausführen, wenn Sie eine frühere Version von Anthos Service Mesh installiert haben.

Die Anthos-Befehlszeile bietet eine einfache und deklarative Möglichkeit, Ihr Google Cloud-Projekt zu konfigurieren und ein vorhandenes GKE-Cluster in Google Cloud zu aktualisieren, das alle Anforderungen erfüllt. Anschließend wird Anthos Service Mesh auf dem Cluster installiert. Die Anthos-Befehlszeile unterstützt Installationen nur in GKE in Google Cloud. Informationen zum Installieren von Anthos Service Mesh in anderen Umgebungen finden Sie in den folgenden Anleitungen:

Informationen zum Installieren von Anthos Service Mesh in Google Cloud mit dem Konfigurationsprofil asm-gcp-multiproject oder mit Citadel als Zertifizierungsstelle anstelle der Anthos Service Mesh-Zertifizierungsstelle (Mesh CA) finden Sie unter Anthos Service Mesh in Google Cloud installieren.

Durch die Installation werden die folgenden Funktionen aktiviert:

In dieser Anleitung wird auch beschrieben, wie Sie Ihren Cluster im Environ Ihres Projekts registrieren. Mit einem Environ können Sie Cluster organisieren und so die Verwaltung mehrerer Cluster vereinfachen. Wenn Sie Ihre Cluster in einem Environ registrieren, können Sie Dienste und andere Infrastruktur nach Bedarf gruppieren, um einheitliche Richtlinien anzuwenden.

Vorbereitung

Bevor Sie mit der Installation beginnen:

Voraussetzungen

  • Ihr GKE-Cluster muss die folgenden Anforderungen erfüllen:

  • Für die Aufnahme in das Service Mesh müssen Dienstports benannt werden und der Name muss das Protokoll des Ports in der folgenden Syntax enthalten: name: protocol[-suffix], wobei die eckigen Klammern ein optionales Suffix angeben, das mit einem Bindestrich beginnen muss. Weitere Informationen finden Sie unter Dienstports benennen.

Beschränkungen

Nur eine Installation von Anthos Service Mesh pro Google Cloud-Projekt wird unterstützt. Mehrere Mesh-Bereitstellungen in einem einzelnen Projekt werden nicht unterstützt.

Zertifikatsdaten

Zertifikate der Mesh CA enthalten die folgenden Daten zu den Diensten Ihrer Anwendung:

  • Die Google Cloud-Projekt-ID
  • Der GKE-Namespace
  • Der Name des GKE-Dienstkontos

Umgebungsvariablen einrichten

  1. Rufen Sie die Projekt-ID des Projekts ab, in dem der Cluster erstellt wurde.

    gcloud

    gcloud projects list
    

    Console

    1. Öffnen Sie in der Cloud Console die Seite Dashboard.

      Zur Seite "Dashboard"

    2. Klicken Sie oben auf der Seite auf die Drop-down-Liste Auswählen aus. Wählen Sie im angezeigten Fenster Auswählen aus Ihr Projekt aus.

      Die Projekt-ID wird auf der Dashboard-Karte Projektinformationen des Projekts angezeigt.

  2. Erstellen Sie eine Umgebungsvariable für die Projekt-ID:

    export PROJECT_ID=YOUR_PROJECT_ID

  3. Erstellen Sie eine Umgebungsvariable für die Projektnummer:

    export ENVIRON_PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")

    Obwohl dies dieselbe Projektnummer ist, in der der Cluster erstellt wurde, wird diese Projektnummer für die im Cluster und in Anthos Service Mesh festgelegte Mesh-ID verwendet. Sie verwenden diese Projektnummer auch, wenn Sie mit der Environ Ihr Cluster registrieren.

  4. Erstellen Sie eine Umgebungsvariable für den Clusternamen:

    export CLUSTER_NAME=YOUR_CLUSTER_NAME
  5. Erstellen Sie eine Umgebungsvariable für die Zone oder Region Ihres Clusters:

    export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION

Ressourcenkonfigurationsdateien vorbereiten

Sie verwenden die Anthos-Befehlszeile und kustomize zum Exportieren und Patchen von Config Connector-Ressourcendateien, mit denen Sie einen vorhandenen Cluster mit den für Anthos Service Mesh erforderlichen Optionen aktualisieren. Die Config Connector-Ressource ist die Kubernetes-Darstellung von Google Cloud-Ressourcen.

Ressourcenkonfigurationsdateien exportieren

Mit dem Befehl gcloud beta anthos export geben Sie Ressourcenkonfigurationsdateien für einen vorhandenen Cluster aus.

  1. Laden Sie das Paket asm-patch in das aktuelle Arbeitsverzeichnis herunter:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-patch@release-1.6-asm .
    

    Der Befehl erstellt ein Unterverzeichnis mit dem Namen asm-patch/.

  2. Fügen Sie in einer Umgebungsvariablen namens BASE_DIR einen Verzeichnisnamen hinzu. Es empfiehlt sich, den Clusternamen als Verzeichnisnamen zu verwenden.

    export BASE_DIR=YOUR_BASE_DIR

    Wichtige Hinweise:

    • Sie können einen relativen Pfad für BASE_DIR anstelle eines Verzeichnisnamens angeben, z. B. export BASE_DIR=../example-resources/example-cluster.

    • Geben Sie keinen absoluten Pfad wie /usr/example-resources/example-cluster an, da der Schritt zum Patchen der Ressourcenkonfigurationsdatei fehlschlägt.

    • Sie müssen das Verzeichnis nicht erstellen, da der Befehl gcloud beta anthos export das Verzeichnis automatisch erstellt. Wenn ein Verzeichnis vorhanden ist, erstellt der Befehl export ein Verzeichnis mit dem Namen $BASE_DIR.bak.<number>, verschiebt den Inhalt von $BASE_DIR in das Sicherungsverzeichnis und exportiert dann die Ressourcenkonfigurationsdatei nach $BASE_DIR.

  3. Exportieren Sie die Clustereinstellungen in eine Config Connector-Ressourcenkonfigurationsdatei:

    gcloud beta anthos export ${CLUSTER_NAME} \
        --output-directory ${BASE_DIR} \
        --project ${PROJECT_ID} \
        --location ${CLUSTER_LOCATION}

    Standardmäßig werden mit dem Befehl export die Projekt-ID und die Clusterzone/-region in der Konfigurationsdatei entsprechend den aktuellen gcloud config-Einstellungen gefüllt, sofern Sie nicht die Optionen --project und --location in der Befehlszeile angeben. Weitere Informationen zu Befehlszeilenoptionen finden Sie unter gcloud beta anthos export --help.

Ressourcenkonfigurationsdateien patchen

Verwenden Sie die kpt-Setter von Anthos und kustomize, um die Ressourcenkonfigurationsdateien zu aktualisieren.

So legen Sie die erforderlichen Werte fest und wenden die Patches an:

  1. Legen Sie den relativen Pfad zwischen den Verzeichnissen ${BASE_DIR} und asm-patch fest:

    kpt cfg set asm-patch/ base-dir ../${BASE_DIR}
    
  2. Legen Sie die Projekt-ID fest:

    kpt cfg set asm-patch/ gcloud.core.project ${PROJECT_ID}
    
  3. Legen Sie die Projektnummer fest:

    kpt cfg set asm-patch gcloud.project.environProjectNumber ${ENVIRON_PROJECT_NUMBER}
    
  4. Legen Sie den Clusternamen fest:

    kpt cfg set asm-patch/ gcloud.container.cluster ${CLUSTER_NAME}
    
  5. Legen Sie den Clusterstandort fest:

    kpt cfg set asm-patch/ gcloud.compute.location ${CLUSTER_LOCATION}
    
  6. Wenden Sie die Anthos Service Mesh-Patches auf die Ressourcenkonfigurationsdateien des Clusters an:

    pushd ${BASE_DIR} && kustomize create --autodetect \
    --namespace ${PROJECT_ID} && popd
    pushd asm-patch && kustomize build -o ../${BASE_DIR}/all.yaml && popd

Endgültige Ressourcenkonfigurationen validieren

Bevor Sie Ihre Cluster aktualisieren und Anthos Service Mesh installieren, müssen Sie die Ressourcenkonfigurationsdateien validieren:

kpt fn source ${BASE_DIR} | kpt fn run --image gcr.io/kustomize-functions/validate-asm:v0.1.0

Im Folgenden sind einige Fehler aufgeführt, die auftreten können:

error - unsupported spec.releaseChannel.channel value in ContainerCluster
cluster_name< (all.yaml [7]), expected: REGULAR, RAPID,STABLE, actual:
UNSPECIFIED

Dieser Fehler weist darauf hin, dass Sie Ihren Cluster nicht in einer Release-Version registriert haben. Es wird empfohlen, sich für die Release-Version "Regular" zu registrieren, da andere Versionen möglicherweise auf einer GKE-Version basieren, die mit Anthos Service Mesh nicht unterstützt wird. 1.6.11. Weitere Informationen finden Sie unter Unterstützte Umgebungen. Nach der Registrierung des Clusters in einer Release-Version:

  1. Löschen Sie das Verzeichnis $BASE_DIR.

  2. Wiederholen Sie die Schritte zum Exportieren und Patchen der Ressourcenkonfigurationsdateien.

  2 error(s) occurred:
    * Error - spec.workloadIdentity.identityNamespace missing in ContainerCluster cluster_name (all.yaml [0])
    * Error - spec.labels.mesh_id missing in ContainerCluster cluster_name (all.yaml [0])

Diese Fehler weisen darauf hin, dass die Patches für die Ressourcenkonfiguration fehlgeschlagen sind. Dieser Fehler kann auftreten, wenn $BASE_DIR auf einen absoluten Pfad festgelegt ist. So beheben Sie diesen Fehler:

  1. Legen Sie für die Umgebungsvariable $BASE_DIR einen Verzeichnisnamen fest. Wir empfehlen die Verwendung des Clusternamens.

  2. Wiederholen Sie die Schritte zum Exportieren und Patchen der Ressourcenkonfigurationsdateien.

Cluster aktualisieren und Anthos Service Mesh installieren

Die Anthos-Befehlszeile aktualisiert Ihren Cluster mit den folgenden Optionen, die von Anthos Service Mesh benötigt werden:

  • Fügt dem Cluster ein mesh_id-Label im Format proj-${ENVIRON_PROJECT_NUMBER} hinzu, wobei ${ENVIRON_PROJECT_NUMBER} die Projektnummer des Projekts ist, in dem der Cluster erstellt wurde. Das Label mesh_id ist erforderlich, damit Messwerte im Anthos Service Mesh-Dashboard in der Cloud Console angezeigt werden. Wenn Ihr Cluster bereits Labels hat, werden diese von der Anthos-Befehlszeile beibehalten.

  • Aktiviert Workload Identity.

  • Aktiviert Kubernetes Engine Monitoring.

Führen Sie den folgenden Befehl aus, um den Cluster zu aktualisieren und Anthos Service Mesh zu installieren:

gcloud beta anthos apply ${BASE_DIR}

Der Befehl aktualisiert Ihren Cluster mit den erforderlichen Optionen und stellt dann Anthos Service Mesh bereit. Dieser Vorgang dauert etwa 30 Minuten.

Komponenten der Steuerungsebene prüfen

Prüfen Sie, ob die Pods der Steuerungsebene in istio-system aktiv sind:

kubectl get pod -n istio-system

Die erwartete Ausgabe sieht in etwa so aus:

NAME                                   READY   STATUS      RESTARTS   AGE
istio-ingressgateway-cff9f5c7d-qg4ls   1/1     Running   0          7m5s
istio-ingressgateway-cff9f5c7d-vlkzb   1/1     Running   0          7m20s
istiod-66b587859c-886gx                1/1     Running   0          7m33s
istiod-66b587859c-dfs2j                1/1     Running   0          7m33s

Sidecar-Proxys einfügen

Anthos Service Mesh verwendet Sidecar-Proxys, um die Sicherheit, Zuverlässigkeit und Beobachtbarkeit von Netzwerken zu verbessern. Mit Anthos Service Mesh werden diese Funktionen vom primären Container der Anwendung abstrahiert und in einem gemeinsamen Out-of-Process-Proxy implementiert, der als separater Container im selben Pod bereitgestellt wird.

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

Alle Arbeitslasten, die vor der Installation von Anthos Service Mesh auf Ihrem Cluster ausgeführt wurden, müssen den Sidecar-Proxy enthalten oder aktualisiert haben, damit sie die aktuelle Anthos Service Mesh-Version haben. Bevor Sie neue Arbeitslasten bereitstellen, muss die Sidecar-Proxy-Einfügung konfiguriert werden, um den Traffic mit Anthos Service Mesh überwachen und schützen zu können.

Sie können das automatische Einfügen der Sidecar-Datei mit einem Befehl aktivieren. Beispiel:

kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-1611-1 --overwrite

Dabei ist NAMESPACE der Name des Namespace für die Dienste der Anwendung oder default, wenn Sie nicht explizit einen Namespace erstellt haben.

Anthos Service Mesh-Seiten aufrufen

Dieser Abschnitt ist nur relevant, wenn Sie Anthos Service Mesh mit dem Konfigurationsprofil asm-gcp installiert haben. Wenn Sie das Profil asm-gcp-multiproject verwendet haben, um Anthos Service Mesh zu installieren, sind Telemetriedaten in den Anthos Service Mesh-Dashboards in der Cloud Console nicht verfügbar.

Nachdem Sie Arbeitslasten mit den eingefügten Sidecar-Proxys auf Ihrem Cluster bereitgestellt haben, können Sie die Anthos Service Mesh-Seiten in der 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 Cloud Console angezeigt werden.

Der Zugriff auf Anthos Service Mesh in der Cloud Console wird durch die Identitäts- und Zugriffsverwaltung (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 Cloud Console steuern beschriebenen restriktiveren Rollen gewähren.

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

    Zur Seite "Anthos Service Mesh"

  2. Wählen Sie das 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 Cloud Console vertraut machen.

Zusätzlich zu den Anthos Service Mesh-Seiten werden Messwerte, die sich auf Ihre Dienste beziehen (z. B. die Anzahl der Anfragen, die von einem bestimmten Dienst empfangen wurden), an Cloud Monitoring gesendet, wo sie im Metrics Explorer angezeigt werden.

So rufen Sie Messwerte auf:

  1. Rufen Sie in der Google Cloud Console die Seite Monitoring auf.

    Zu Monitoring

  2. Wählen Sie Ressourcen > Metrics Explorer aus.

Eine vollständige Liste der Messwerte finden Sie unter Istio-Messwerte in der Cloud Monitoring-Dokumentation.

Weitere Informationen