Anthos Service Mesh mit der GKE Enterprise-Befehlszeile installieren

In dieser Anleitung wird erläutert, wie Sie Anthos Service Mesh 1.4.10-asm.18 mithilfe der GKE Enterprise-Befehlszeile auf einem neuen Google Cloud GKE-Cluster mit den folgenden aktivierten Features installieren:

Derzeit unterstützt die GKE Enterprise-Befehlszeile keine Installationen in einem vorhandenen GKE-Cluster oder in GKE on VMware.

Hinweise

In diesem Leitfaden wird Folgendes vorausgesetzt:

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 9443 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

kpt und die Anthos-Befehlszeile installieren

Sie verwenden kpt, um die GKE Enterprise CLI zu installieren. Sie verwenden kpt auch, um die in GitHub gespeicherten Konfigurationsdateien für Anthos Service Mesh-Ressourcen herunterzuladen, zu verwalten und anzupassen. Die Konfigurationsdateien enthalten Platzhalter für Ihre spezifischen Google Cloud-Projekte und GKE-Clusterinformationen. Nachdem Sie die Konfigurationsdateien angepasst haben, können Sie sie in Ihr eigenes GitHub-Repository oder in ein anderes Versionsverwaltungssystem aufnehmen.

  1. Authentifizieren Sie sich mit Google Cloud-CLI:

    gcloud auth login
    
  2. Rufen Sie Ihre Google Cloud-Projekt-ID ab und erstellen Sie eine Umgebungsvariable dafür:

    export PROJECT_ID=YOUR_PROJECT_ID
  3. Legen Sie das Standardprojekt-ID für das Google Cloud CLI fest:

    gcloud config set project ${PROJECT_ID}
    
  4. Wählen Sie eine Zone oder Region und einen Maschinentyp für den neuen Cluster aus. Der von Anthos Service Mesh benötigte Mindestmaschinentyp ist n1-standard-4. Sie können eine beliebige Option für die Release-Version verwenden.

    • Wenn Sie einen Einzelzonencluster erstellen, führen Sie den folgenden Befehl aus, um eine Liste der verfügbaren GCP-Zonen abzurufen:

      gcloud compute zones list
      
    • Wenn Sie einen regionalen Cluster erstellen, führen Sie den folgenden Befehl aus, um eine Liste der verfügbaren Regionen abzurufen:

      gcloud compute regions list
      
    • So rufen Sie eine Liste der Maschinentypen ab:

      gcloud compute machine-types list | more
      
  5. Erstellen Sie die folgenden Umgebungsvariablen:

    • Legen Sie den Clusternamen fest:

      export CLUSTER_NAME=YOUR_CLUSTER_NAME

      Der Clustername darf nur kleingeschriebene, alphanumerische Zeichen und "-" enthalten und muss mit einem Buchstaben beginnen und mit einem alphanumerischen Zeichen enden. Er darf nicht länger als 40 Zeichen sein.

    • Legen Sie CLUSTER_LOCATION entweder auf Ihre Clusterzone oder Clusterregion fest:

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
  6. GKE Enterprise CLI installieren und Komponenten aktualisieren Wenn Sie Cloud Shell verwenden, fügen Sie den folgenden Befehlen sudo hinzu.

    gcloud components install kpt anthoscli alpha
    gcloud components update --version 292.0.0
  7. Erstellen Sie optional ein neues Verzeichnis für das Anthos Service Mesh-Paket und cd dafür.

  8. Laden Sie das Anthos Service Mesh-Paket in das aktuelle Arbeitsverzeichnis herunter:

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

    Standardmäßig füllt der Befehl kpt pkg get die Compute-Zone in den Paketdateien mit Ihrer aktuellen Konfiguration.

  9. Legen Sie die folgenden Werte in Ihren Konfigurationsdateien fest:

    • Legen Sie die Projekt-ID fest:

      kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    • Legen Sie den Clusternamen fest:

      kpt cfg set asm cluster-name ${CLUSTER_NAME}
    • Legen Sie die Standardzone oder -region fest:

      kpt cfg set asm gcloud.compute.zone ${CLUSTER_LOCATION}
    • Ändern Sie optional die Release-Version des Standardwerts REGULAR. Ersetzen Sie im folgenden Befehl YOUR_CHANNEL durch STABLE oder RAPID.

      kpt cfg set asm gcloud.container.cluster.releaseChannel YOUR_CHANNEL

      Eine Beschreibung der einzelnen Versionen finden Sie unter Welche Kanäle sind verfügbar?.

Anthos Service Mesh auf neuem Cluster installieren

  1. Führen Sie den folgenden Befehl aus, um einen neuen Cluster zu erstellen und das Anthos Service Mesh mit den von Ihnen angepassten Anthos Service Mesh-Konfigurationsdateien zu installieren:

    anthoscli apply -f asm
    
  2. Warten Sie, bis die Bereitstellung abgeschlossen ist.

    kubectl wait --for=condition=available --timeout=600s deployment --all -n istio-system
    

    Ausgabe:

    deployment.extensions/istio-galley condition met
    deployment.extensions/istio-ingressgateway condition met
    deployment.extensions/istio-pilot condition met
    deployment.extensions/istio-sidecar-injector condition met
    deployment.extensions/promsd condition met

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 Ausgabe sollte in etwa so aussehen:

NAME                                      READY   STATUS      RESTARTS   AGE
istio-galley-5c65896ff7-m2pls             2/2     Running     0          18m
istio-ingressgateway-587cd459f-q6hqt      2/2     Running     0          18m
istio-nodeagent-74w69                     1/1     Running     0          18m
istio-nodeagent-7524w                     1/1     Running     0          18m
istio-nodeagent-7652w                     1/1     Running     0          18m
istio-nodeagent-7948w                     1/1     Running     0          18m
istio-pilot-9db77b99f-7wfb6               2/2     Running     0          18m
istio-sidecar-injector-69c4d9f875-dt8rn   1/1     Running     0          18m
promsd-55f464d964-lqs7w                   2/2     Running     0          18m

Für jeden Knoten in Ihrem Cluster sollte eine Instanz von istio-nodeagent angezeigt werden. Das Feature „Mesh CA“, das die OSS-Istio-Komponente „Citadel“ ersetzt, erstellt die Knoten-Agents, um mTLS-Zertifikate für die in Ihrem Service Mesh ausgeführten Arbeitslasten auszustellen.

Prüfen Sie, ob Mesh CA funktioniert:

  kubectl get pods -n istio-system -l app=istio-nodeagent \
  --output=jsonpath={​.items..metadata.name} -o yaml | grep CA_ADDR -A 1

Erwartete Ausgabe: meshca.googleapis.com:443.

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.

Pod-Sicherheitsrichtlinien aktivieren

Um die Sicherheit des Service Mesh zu gewährleisten, empfehlen wir die Aktivierung von Pod-Sicherheitsrichtlinien.

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.

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
    

    Nun, da das Beispiel ausgeführt wird, können Sie sich mit Anthos Service Mesh in der Google Cloud Console vertraut machen. Beachten Sie, dass es bis zu fünf 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