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

In dieser Anleitung wird beschrieben, wie Sie die Anthos Service Mesh-Version 1.5.10-asm.2 über die GKE Enterprise-Befehlszeile auf einem vorhandenen Google Cloud GKE-Cluster sauber installieren. Beachten Sie die folgenden Einschränkungen bei dieser Betaversion der GKE Enterprise CLI:

  • Upgrades werden nicht unterstützt. Wenn auf Ihrem Cluster eine frühere Version von Anthos Service Mesh installiert ist, lesen Sie den Artikel Anthos Service Mesh in GKE aktualisieren.
  • Installationen in GKE on VMware werden nicht unterstützt. Informationen zum Installieren von Anthos Service Mesh auf einem vorhandenen GKE on VMware-Cluster finden Sie unter Anthos Service Mesh lokal installieren.

Durch die Installation werden die folgenden Funktionen aktiviert:

Dieser Leitfaden erklärt auch, wie Sie Ihren Cluster in der Flotte registrieren, die sich im selben Google Cloud-Projekt wie der Cluster befindet. Mit einer Flotte können Sie Cluster organisieren, um die Verwaltung mehrerer Cluster zu vereinfachen. Wenn Sie Ihre Cluster in einer Flotte registrieren, können Sie Dienste und andere Infrastruktur nach Bedarf gruppieren, um einheitliche Richtlinien anzuwenden.

Hinweise

Bevor Sie mit der Installation beginnen:

Voraussetzungen

  • Sie benötigen eine GKE Enterprise-Testlizenz oder ein -Abo. Weitere Informationen finden Sie in der Preisübersicht für GKE Enterprise.

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

    • Mindestens vier Knoten.
    • Der minimale Maschinentyp ist e2-standard-4 und enthält vier vCPUs.
    • Verwenden Sie eine Release-Version anstelle einer statischen Version von GKE.
  • 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.

  • Wenn Sie Anthos Service Mesh auf einem privaten Cluster installieren, müssen Sie eine Firewallregel zum Öffnen von Port 15017 hinzufügen, um die automatische Sidecar-Injektion zu verwenden. Wenn Sie die Firewallregel nicht hinzufügen und die automatische Sidecar-Injektion aktiviert ist, erhalten Sie beim Bereitstellen von Arbeitslasten eine Fehlermeldung. Weitere Informationen zum Hinzufügen einer Firewallregel finden Sie unter Firewallregeln für bestimmte Anwendungsfälle hinzufügen.

  • Wenn Sie in Ihrer Organisation einen Dienstperimeter erstellt haben, müssen Sie möglicherweise den Mesh CA-Dienst dem Perimeter hinzufügen. Weitere Informationen finden Sie unter Mesh CA einem Dienstperimeter hinzufügen.

Einschrä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

Standardeinstellungen für Projekte und Cluster festlegen

  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 Google Cloud Console die Seite Dashboard:

      Zur Seite "Dashboard"

    2. Klicken Sie oben auf der Seite auf das Drop-down 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. Legen Sie das Standardprojekt ID für die Google Cloud CLI fest:

    gcloud config set project ${PROJECT_ID}
    
  4. Erstellen Sie die folgenden Umgebungsvariablen:

    • Legen Sie den Clusternamen fest:

      export CLUSTER_NAME=YOUR_CLUSTER_NAME
    • Legen Sie CLUSTER_LOCATION entweder auf Ihre Clusterzone oder Clusterregion fest:

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
  5. Legen Sie die Standardzone oder -region für Google Cloud-CLI fest.

    • Wenn Sie einen Cluster mit einer einzelnen Zone haben, legen Sie die Standardzone fest:

      gcloud config set compute/zone ${CLUSTER_LOCATION}
    • Wenn Sie einen regionalen Cluster haben, legen Sie die Standardregion fest:

      gcloud config set compute/region ${CLUSTER_LOCATION}

Ressourcenkonfigurationsdateien vorbereiten

Sie verwenden die GKE Enterprise CLI und kustomize, um Config Connector-Ressourcendateien zu exportieren und zu patchen. Diese Dateien werden zum Aktualisieren eines vorhandenen Clusters mit den für Anthos Service Mesh erforderlichen Optionen verwendet. 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. Erstellen Sie ein Verzeichnis für die Anthos Service Mesh-Ressourcen. Der Einfachheit halber bezieht sich die folgenden Schritte auf das Verzeichnis, das Sie als ASM_RESOURCES erstellen.

  2. Wechseln Sie zum Verzeichnis ASM_RESOURCES.

  3. 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.5-asm .
    

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

  4. Fügen Sie in einer Umgebungsvariablen namens BASE_DIR einen Verzeichnisnamen hinzu. Wenn Sie den Befehl gcloud beta anthos export für einen vorhandenen Cluster ausführen, erstellt die GKE Enterprise-Befehlszeile ein Verzeichnis mit dem in BASE_DIR angegebenen Namen und gibt die Config Connector-Ressourcendateien in das Verzeichnis aus.

    export BASE_DIR=YOUR_BASE_DIR

    Wenn Sie mehr als einen Cluster einrichten möchten, empfehlen wir Ihnen, den Clusternamen als Verzeichnisnamen zu verwenden. Wenn Sie beispielsweise Ressourcenkonfigurationsdateien für zwei Cluster vorbereiten, sollte Ihre Verzeichnisstruktur nach Ausführen des Befehls gcloud beta anthos export für cluster-1 und cluster-2 etwa so aussehen:

    Skizze der Verzeichnisstruktur

    Im Diagramm sind cluster-1 und cluster-2 Verzeichnisse, die die Config Connector-Ressourcenkonfigurationsdateien für die Cluster mit den Namen cluster-1 und cluster-2 enthalten.

  5. Exportieren Sie die Config Connector-Ressourcenkonfigurationsdateien:

    gcloud beta anthos export ${CLUSTER_NAME} --output-directory ${BASE_DIR}
    

    Mit dem Befehl export werden die Projekt-ID und die Clusterzone/-region in den Ressourcenkonfigurationsdateien für Ihren Cluster mit den aktuellen gcloud config-Einstellungen gefüllt. Wenn Sie Ressourcenkonfigurationsdateien für einen Cluster exportieren möchten, der nicht mit Ihren aktuellen gcloud config-Einstellungen übereinstimmt, können Sie die folgenden Befehlszeilenoptionen angeben:

    • -p PROJECT_ID
    • -l YOUR_ZONE_OR_REGION

    Weitere Informationen finden Sie unter gcloud beta anthos export --help.

Ressourcenkonfigurationsdateien patchen

Sie verwenden die kpt-Setter von GKE Enterprise und kustomize, um die Ressourcenkonfigurationsdateien zu aktualisieren.

  1. Listen Sie die verfügbaren Konfigurations-Sets im Paket asm-patch auf:

    kpt cfg list-setters asm-patch/
    

    Die Ausgabe sieht in etwa so aus:

    NAME                           VALUE                  SET BY   DESCRIPTION   COUNT
    base-dir                       base                                           1
    gcloud.compute.location        your_zone_or_region                            1
    gcloud.container.cluster       your_cluster_name                              3
    gcloud.core.project            your_project_id        kpt                    11
    gcloud.project.projectNumber   your_project_number    kpt                     1
  2. Legen Sie den relativen Pfad zwischen den Verzeichnissen ${BASE_DIR} und asm-patch fest:

    kpt cfg set asm-patch/ base-dir ../${BASE_DIR}
  3. Legen Sie den Clusternamen fest.

    kpt cfg set asm-patch/ gcloud.container.cluster ${CLUSTER_NAME}
  4. Wenn Sie die Standardwerte für gcloud config nicht festgelegt haben oder die Werte ändern möchten, führen Sie die folgenden Setter aus:

    kpt cfg set asm-patch/ gcloud.compute.location ${CLUSTER_LOCATION}
    kpt cfg set asm-patch/ gcloud.core.project ${PROJECT_ID}
  5. 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
  6. Validieren Sie die endgültigen Ressourcenkonfigurationen:

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

    Wenn Fehler auftreten, beheben Sie diese und validieren Sie die Ressourcenkonfigurationen noch einmal.

  7. Optional können Sie die Ressourcenkonfigurationsdateien in Ihr eigenes Versionsverwaltungssystem wie Cloud Source Repositories einchecken, damit Sie Änderungen an den Dateien verfolgen können.

Cluster aktualisieren und Anthos Service Mesh installieren

Die GKE Enterprise-Befehlszeile aktualisiert Ihren Cluster mit den folgenden Optionen, die für Anthos Service Mesh erforderlich sind:

  • Fügt dem Cluster ein mesh_id-Label im Format proj-PROJECT_NUMBER hinzu, wobei 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 Google Cloud Console angezeigt werden. Wenn Ihr Cluster vorhandene Labels hat, werden diese von der GKE Enterprise-Befehlszeile beibehalten.

  • Aktiviert Workload Identity.

  • Aktiviert Kubernetes Engine Monitoring.

  • Meldet den Cluster in einer Übersicht über Release-Versionen an.

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-74cc894bfd-786rg     1/1     Running     0          7m19s
istiod-78cdbbbdb-d7tps                    1/1     Running     0          7m36s
promsd-576b8db4d6-lqf64                   2/2     Running     1          7m19s

Cluster registrieren

Sie müssen den Cluster in der Flotte des Projekts registrieren, um Zugriff auf die einheitliche Benutzeroberfläche in der Google Cloud Console zu erhalten. Eine Flotte ermöglicht die einheitliche Anzeige und Verwaltung der Cluster und ihrer Arbeitslasten, einschließlich Clustern außerhalb von Google Cloud.

Google Cloud-Dienstkonto und -Schlüsseldatei erstellen

Zum Registrieren eines Clusters ist eine JSON-Datei mit den Dienstkonto-Anmeldedaten erforderlich. Um das Prinzip der geringsten Berechtigung anzuwenden, empfehlen wir, dass Sie für jeden registrierten Cluster ein eigenes Dienstkonto erstellen.

So erstellen Sie ein Dienstkonto und eine Schlüsseldatei:

  1. Wählen Sie einen Namen für das Dienstkonto aus und erstellen Sie eine Umgebungsvariable dafür:

    export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
    
  2. Erstellen Sie das Dienstkonto:

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
  3. Listen Sie alle Dienstkonten eines Projekts auf, um zu prüfen, ob das Dienstkonto erstellt wurde:

    gcloud iam service-accounts list
  4. Weisen Sie dem Dienstkonto die IAM-Rolle „gkehub.connect“ zu:

    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
       --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
       --role="roles/gkehub.connect"
  5. Erstellen Sie eine Umgebungsvariable für den lokalen Dateipfad, unter dem Sie die JSON-Datei speichern möchten. Es empfiehlt sich, die Datei nach dem Namen des Dienstkontos und Ihrer Projekt-ID zu benennen. Beispiel: /tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json.

    export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
  6. Laden Sie die JSON-Datei des Dienstkontos mit dem privaten Schlüssel herunter:

    gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \
       --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

Cluster registrieren

Ersetzen Sie im folgenden Befehl MEMBERSHIP_NAME durch einen Namen, der sich eindeutig auf den im Hub registrierten Cluster bezieht.

gcloud container hub memberships register MEMBERSHIP_NAME \
    --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \
    --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}

Der Befehl meldet eine Ausgabe, die in etwa so aussieht:

kubeconfig entry generated for CLUSTER_NAME.
Waiting for membership to be created...done.
Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME]
Generating the Connect Agent manifest...
Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]...
Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect].
Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.

Dieser Dienstkontoschlüssel wird als Secret mit dem Namen creds-gcp im Namespace gke-connect gespeichert.

Weitere Informationen zur Clusterregistrierung finden Sie unter Cluster registrieren in der Connect-Dokumentation.

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.

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=enabled --overwrite

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

Weitere Informationen finden Sie unter Sidecar-Proxys einfügen.

Anthos Service Mesh-Seiten 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.

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.

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

Beispiel mit kpt installieren

Optional können Sie mit kpt das Hipster-Beispiel im Cluster installieren.

  1. Laden Sie das Beispiel herunter:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    hipster-demo
    
  2. Aktivieren Sie die automatische Sidecar-Einfügung:

    kubectl label namespace default istio-injection=enabled
    
  3. Stellen Sie das Beispiel im Cluster bereit:

    kubectl apply -f hipster-demo
    
  4. Suchen Sie die externe IP-Adresse der Anwendung:

    kubectl get service frontend-external
    
  5. Rufen Sie die Anwendung in Ihrem Browser auf, um die Installation zu bestätigen:

    http://EXTERNAL_IP/

    Nachdem Sie ein Beispiel ausgeführt haben, können Sie sich mit den Anthos Service Mesh-Beobachtbarkeitsfeatures in der Google Cloud Console vertraut machen. Beachten Sie, dass es bis zu 10 Minuten dauern kann, bis die Topologiegrafik die Dienste in Ihrem Mesh-Netzwerk anzeigt.

Wenn Sie fertig sind, entfernen Sie das Hipster-Beispiel:

kubectl delete -f hipster-demo

Nächste Schritte