Anthos Service Mesh lokal installieren

In dieser Anleitung wird die saubere Installation der Anthos Service Mesh-Version 1.11.8-asm.4 auf GKE auf VMware und auf Bare Metal erläutert. Lesen Sie Upgrade von Anthos Service Mesh lokal ausführen, wenn Sie eine frühere Version von Anthos Service Mesh installiert haben. In der Installationsanleitung erfahren Sie, wie Sie die Zertifizierungsstelle für Anthos Service Mesh (Mesh CA) oder die Istio-Zertifizierungsstelle (ehemals Citadel) installieren. In diesem Leitfaden wird der Cluster als cluster1 bezeichnet. Sie können diese Schritte jedoch wiederholen, um viele Cluster einzurichten.

Komponenten der Steuerungsebene

Bei GKE on VMware und Bare Metal sind die folgenden Istio-Komponenten vorinstalliert:

  • Die Istio-Zertifizierungsstelle (ehemals Citadel) ist im Namespace kube-system installiert.
  • Das Istio-Ingress-Gateway und andere Istio-Komponenten werden im Namespace gke-system installiert.

GKE on VMware und on Bare Metal verwenden diese Komponenten, um eingehenden Traffic zu ermöglichen und die Kommunikation zwischen von Google gesteuerten Komponenten zu sichern.

Wenn Sie Anthos Service Mesh installieren, sind dessen Komponenten im Namespace istio-system installiert. Da sich die Anthos Service Mesh-Komponenten in einem anderen Namespace befinden, stehen sie nicht in Konflikt mit den vorinstallierten Istio-Komponenten.

Hinweise

Lesen Sie die folgenden Voraussetzungen, bevor Sie mit der Einrichtung beginnen.

Voraussetzungen

  • Sie benötigen ein Anthos-Abo. Alternativ ist eine „Pay as you go“-Abrechnungsoption nur für GKE Enterprise in Google Cloud verfügbar. Weitere Informationen finden Sie in der GKE Enterprise-Preisübersicht.

  • Prüfen Sie, ob Ihr Nutzercluster, auf dem Sie Anthos Service Mesh installieren, mindestens 4 vCPUs, 15 GB Arbeitsspeicher und 4 Knoten hat.

  • Nur Mesh-CA: Ihre Nutzerclusterknoten benötigen das Internet, um die Installation von Anthos Service Mesh erfolgreich abzuschließen. Internetzugriff über einen HTTP-Proxy ist nicht möglich.

  • Verwenden Sie für die Benennung Ihrer Dienstports die folgende Syntax: name: protocol[-suffix]. Die eckigen Klammern geben dabei ein optionales Suffix an, das mit einem Bindestrich beginnen muss. Weitere Informationen finden Sie unter Dienstports benennen.

  • Prüfen Sie, ob Ihre Clusterversion unter Unterstützte Plattformen aufgeführt ist.

Umgebung einrichten

Sie benötigen die folgenden Tools auf dem Computer, auf dem Sie den Installationsprozess steuern können. Sie können Anthos Service Mesh nur auf einem Nutzercluster und nicht auf einem Administratorcluster installieren.

Nach der Installation des Google Cloud CLI:

  1. Authentifizieren Sie sich mit dem Google Cloud CLI:

    gcloud auth login
    
  2. Aktualisieren Sie die Komponenten:

    gcloud components update
    
  3. Installieren Sie kubectl:

    gcloud components install kubectl
    
  4. Installieren Sie kpt:

       curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2
       chmod +x kpt_0_39_2
       alias kpt="$(readlink -f kpt_0_39_2)"
    

Umgebungsvariablen festlegen

  1. Rufen Sie den Kontextnamen für den Cluster ab. Verwenden Sie dazu die Werte in der Spalte NAME in der Ausgabe dieses Befehls:

    kubectl config get-contexts
  2. Legen Sie die Umgebungsvariablen auf den Namen des Clusterkontexts fest, der in dieser Anleitung in vielen Schritten verwendet wird:

    export CTX_CLUSTER1=CLUSTER1_CONTEXT_NAME

Clusteradministrator-Berechtigungen erteilen

  1. Gewähren Sie dem Nutzerkonto Administratorberechtigungen (Ihre E-Mail-Adresse für die Anmeldung in Google Cloud). Sie benötigen diese Berechtigungen, um die erforderlichen Regeln für die rollenbasierte Zugriffssteuerung (Role Based Access Control, RBAC) für Anthos Service Mesh zu erstellen:

    kubectl --context="${CTX_CLUSTER1}" create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user=USER_ACCOUNT

Installationsdatei herunterladen

Linux

  1. Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.11.8-asm.4-linux-amd64.tar.gz
  2. Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit openssl:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.11.8-asm.4-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.11.8-asm.4-linux-amd64.tar.gz.1.sig istio-1.11.8-asm.4-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Folgende Ausgabe wird erwartet: Verified OK

  3. Entpacken Sie die Inhalte der Datei in einem Verzeichnis Ihres Dateisystems. So extrahieren Sie beispielsweise den Inhalt in das aktuelle Arbeitsverzeichnis:

     tar xzf istio-1.11.8-asm.4-linux-amd64.tar.gz

    Mit diesem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.11.8-asm.4 ein Installationsverzeichnis erstellt, das Folgendes enthält:

    • Beispielanwendungen im Verzeichnis samples.
    • Das istioctl-Befehlszeilentool, mit dem Sie Anthos Service Mesh installieren, befindet sich im Verzeichnis bin.
    • Die Anthos Service Mesh-Konfigurationsprofile befinden sich im Verzeichnis manifests/profiles.
  4. Prüfen Sie, ob Sie sich im Stammverzeichnis der Anthos Service Mesh-Installation befinden.

    cd istio-1.11.8-asm.4

macOS

  1. Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.11.8-asm.4-osx.tar.gz
  2. Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit openssl:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.11.8-asm.4-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.11.8-asm.4-osx.tar.gz.1.sig istio-1.11.8-asm.4-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Folgende Ausgabe wird erwartet: Verified OK

  3. Entpacken Sie die Inhalte der Datei in einem Verzeichnis Ihres Dateisystems. So extrahieren Sie beispielsweise den Inhalt in das aktuelle Arbeitsverzeichnis:

    tar xzf istio-1.11.8-asm.4-osx.tar.gz

    Mit diesem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.11.8-asm.4 ein Installationsverzeichnis erstellt, das Folgendes enthält:

    • Beispielanwendungen im Verzeichnis samples.
    • Das istioctl-Befehlszeilentool, mit dem Sie Anthos Service Mesh installieren, befindet sich im Verzeichnis bin.
    • Die Anthos Service Mesh-Konfigurationsprofile befinden sich im Verzeichnis manifests/profiles.
  4. Prüfen Sie, ob Sie sich im Stammverzeichnis der Anthos Service Mesh-Installation befinden.

    cd istio-1.11.8-asm.4

Windows

  1. Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.11.8-asm.4-win.zip
  2. Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit openssl:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.11.8-asm.4-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.11.8-asm.4-win.zip.1.sig istio-1.11.8-asm.4-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Folgende Ausgabe wird erwartet: Verified OK

  3. Entpacken Sie die Inhalte der Datei in einem Verzeichnis Ihres Dateisystems. So extrahieren Sie beispielsweise den Inhalt in das aktuelle Arbeitsverzeichnis:

    tar xzf istio-1.11.8-asm.4-win.zip

    Mit diesem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.11.8-asm.4 ein Installationsverzeichnis erstellt, das Folgendes enthält:

    • Beispielanwendungen im Verzeichnis samples.
    • Das istioctl-Befehlszeilentool, mit dem Sie Anthos Service Mesh installieren, befindet sich im Verzeichnis bin.
    • Die Anthos Service Mesh-Konfigurationsprofile befinden sich im Verzeichnis manifests/profiles.
  4. Prüfen Sie, ob Sie sich im Stammverzeichnis der Anthos Service Mesh-Installation befinden.

    cd istio-1.11.8-asm.4

Anthos Service Mesh mit Mesh CA installieren

In diesem Abschnitt wird beschrieben, wie Sie Anthos Service Mesh mit Mesh CA installieren und den Cluster für die Flotte registrieren. Im Allgemeinen empfehlen wir, Mesh CA zu verwenden, denn:

  • Mesh CA ist ein zuverlässiger und skalierbarer Dienst, der für dynamisch skalierte Arbeitslasten in Google Cloud und lokal optimiert ist.
  • Mit Mesh CA verwaltet Google die Sicherheit und Verfügbarkeit des CA-Back-Ends.
  • Mesh CA ermöglicht Ihnen, sich für alle Cluster auf eine einzige Root of Trust zu verlassen.

Wenn Sie die Istio-Zertifizierungsstelle mit Ihrer eigenen Stamm-CA verwenden möchten, finden Sie weitere Informationen unter Istio-CA konfigurieren.

Das Mesh CA-Feature hängt von der Flottenregistrierung ab. Standardmäßig ist Ihr Cluster für eine Flotte registriert. Informationen zum Prüfen des Clusterstatus finden Sie unter Registrierte Cluster ansehen.

  1. Aktivieren Sie folgende APIs:

    gcloud services enable \
      anthos.googleapis.com \
      cloudtrace.googleapis.com \
      cloudresourcemanager.googleapis.com \
      container.googleapis.com \
      compute.googleapis.com \
      gkeconnect.googleapis.com \
      gkehub.googleapis.com \
      iam.googleapis.com \
      iamcredentials.googleapis.com \
      logging.googleapis.com \
      meshca.googleapis.com \
      meshtelemetry.googleapis.com \
      meshconfig.googleapis.com \
      monitoring.googleapis.com \
      stackdriver.googleapis.com \
      sts.googleapis.com
    
  2. Initialisieren Sie die Mesh-Netzwerk-Konfiguration:

    IDENTITY_PROVIDER="$(kubectl get memberships.hub.gke.io membership -o=jsonpath='{.spec.identity_provider}')"
    
    IDENTITY="$(echo "${IDENTITY_PROVIDER}" | sed 's/^https:\/\/gkehub.googleapis.com\/projects\/\(.*\)\/locations\/global\/memberships\/\(.*\)$/\1 \2/g')"
    
    read -r ENVIRON_PROJECT_ID HUB_MEMBERSHIP_ID <<EOF
    ${IDENTITY}
    EOF
    
    POST_DATA='{"workloadIdentityPools":["'${ENVIRON_PROJECT_ID}'.hub.id.goog","'${ENVIRON_PROJECT_ID}'.svc.id.goog"]}'
    
    curl --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --data "${POST_DATA}" \
    https://meshconfig.googleapis.com/v1alpha1/projects/${ENVIRON_PROJECT_ID}:initialize
    
  3. Installation konfigurieren:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.11 asm
    
    ENVIRON_PROJECT_NUMBER=$(gcloud projects describe "${ENVIRON_PROJECT_ID}" --format="value(projectNumber)")
    
    CLUSTER_NAME="${HUB_MEMBERSHIP_ID}"
    
    CLUSTER_LOCATION="global"
    
    HUB_IDP_URL="$(kubectl get memberships.hub.gke.io membership -o=jsonpath='{.spec.identity_provider}')"
    
    kpt cfg set asm gcloud.core.project ${ENVIRON_PROJECT_ID}
    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    kpt cfg set asm anthos.servicemesh.hub gcr.io/gke-release/asm
    kpt cfg set asm anthos.servicemesh.rev asm-1118-4
    kpt cfg set asm anthos.servicemesh.tag 1.11.8-asm.4
    kpt cfg set asm gcloud.project.environProjectNumber ${ENVIRON_PROJECT_NUMBER}
    kpt cfg set asm anthos.servicemesh.trustDomain ${ENVIRON_PROJECT_ID}.svc.id.goog
    kpt cfg set asm anthos.servicemesh.idp-url "${HUB_IDP_URL}"
    
  4. Wechseln Sie gegebenenfalls zum Verzeichnis istio-1.11.8-asm.4. Der istioctl-Client ist versionsabhängig. Sie müssen die Version im Verzeichnis istio-1.11.8-asm.4/bin verwenden.

  5. Führen Sie den folgenden Befehl aus, um Anthos Service Mesh zu installieren.

    bin/istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/hub-meshca.yaml --revision=asm-1118-4
    

    Wenn Sie ein unterstütztes optionales Feature aktivieren möchten, fügen Sie in der folgenden Befehlszeile -f und den YAML-Dateinamen nach -f cluster.yaml hinzu. Weitere Informationen finden Sie unter Optionale Features aktivieren.

Anthos Service Mesh mit Istio-Zertifizierungsstelle installieren

In diesem Abschnitt wird erläutert, wie Sie Zertifikate und Schlüssel für die Istio-Zertifizierungsstelle generieren, die Anthos Service Mesh On-Prem zum Signieren Ihrer Arbeitslasten verwendet. Wenn Sie Anthos Service Mesh mit Mesh CA bereits installiert haben, können Sie mit dem Abschnitt Standardnetzwerk festlegen fortfahren.

Für eine optimale Sicherheit empfehlen wir dringend, eine Offline-Stamm-CA zu behalten und die untergeordneten Zertifizierungsstellen einzusetzen, um für jeden Cluster Zertifikate auszugeben. Weitere Informationen finden Sie unter CA-Zertifikate anschließen. In dieser Konfiguration verwenden alle Arbeitslasten im Service Mesh dieselbe Stammzertifizierungsstelle (Certificate Authority, CA). Jede Anthos Service Mesh CA verwendet einen Zwischen-CA-Signierschlüssel und ein Zertifikat, das von der Stamm-CA signiert wird. Wenn es in einem Mesh mehrere CAs gibt, wird eine Hierarchie des Vertrauens zwischen den CAs eingerichtet. Sie können diese Schritte wiederholen, um Zertifikate und Schlüssel für eine beliebige Anzahl von Zertifizierungsstellen bereitzustellen.

  1. Erstellen Sie ein Verzeichnis für die Zertifikate und Schlüssel:

    mkdir -p certs && \
    pushd certs
  2. Generieren Sie ein Root-Zertifikat und einen Root-Schlüssel:

    make -f ../tools/certs/Makefile.selfsigned.mk root-ca
    

    Dadurch werden diese Dateien generiert:

    • root-cert.pem: Root-Zertifikat
    • root-key.pem: Root-Schlüssel
    • root-ca.conf: Konfiguration für openssl, um das Root-Zertifikat zu generieren
    • root-cert.csr: CSR für das Root-Zertifikat
  3. Generieren Sie ein Zwischenzertifikat und einen Zwischenschlüssel:

    make -f ../tools/certs/Makefile.selfsigned.mk cluster1-cacerts

    Dadurch werden diese Dateien in einem Verzeichnis namens cluster1 generiert:

    • ca-cert.pem: Zwischenzertifikate
    • ca-key.pem: Zwischenschlüssel
    • cert-chain.pem: Die von Istiod verwendete Zertifikatskette
    • root-cert.pem: Root-Zertifikat

    Wenn Sie diese Schritte mit einem Offline-Computer ausführen, kopieren Sie das generierte Verzeichnis auf einen Computer mit Zugriff auf die Cluster.

  4. Erstellen Sie ein Secret cacerts mit allen Eingabedateien ca-cert.pem, ca- key.pem, root-cert.pem und cert-chain.pem:

    kubectl --context="${CTX_CLUSTER1}" create namespace istio-system
    kubectl --context="${CTX_CLUSTER1}" create secret generic cacerts -n istio-system \
      --from-file=cluster1/ca-cert.pem \
      --from-file=cluster1/ca-key.pem \
      --from-file=cluster1/root-cert.pem \
      --from-file=cluster1/cert-chain.pem

    Anthos Service Mesh lokal erkennt diese Präsenz bzw. Schlüssel und verwendet sie während des Installationsprozesses in späteren Schritten.

  5. Kehren Sie zum vorherigen Verzeichnis zurück:

    popd

Anthos Service Mesh mit Istio-Zertifizierungsstelle konfigurieren und installieren

In diesem Abschnitt wird erläutert, wie Sie Anthos Service Mesh mit den zuvor generierten Zertifikaten der Istio-CA (ehemals Citadel) installieren. Wenn Sie Anthos Service Mesh mit Mesh CA bereits installiert haben, können Sie mit dem Abschnitt Standardnetzwerk festlegen fortfahren.

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

    export PROJECT_ID=YOUR_PROJECT_ID
  2. Erstellen Sie eine Umgebungsvariable für die Projektnummer:

    export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
  3. Erstellen Sie eine Umgebungsvariable für die Mesh-ID: Der Name kann ein beliebiger String sein, sollte aber in einem Format vorliegen, das für alle Cluster einheitlich ist.

    export MESH_ID="proj-${PROJECT_NUMBER}"
  4. Erstellen Sie die Konfiguration für die Steuerungsebene des Clusters, die Anthos Service Mesh mithilfe des Profils asm-multicloud installiert. Wenn Sie ein unterstütztes optionales Feature aktivieren möchten, fügen Sie in der folgenden Befehlszeile -f und den YAML-Dateinamen hinzu. Weitere Informationen finden Sie unter Optionale Features aktivieren.

    Im folgenden Beispiel gilt:

    • Verwenden Sie den MESH_ID aus den vorherigen Schritten.

    • NETWORK_ID kann ein beliebiger String sein, der das Netzwerk eines Clusters identifiziert. In dieser lokalen Konfiguration befindet sich jeder Cluster in seinem eigenen Netzwerk. Deshalb sollte jeder Cluster einen anderen Wert haben. Für NETWORK_ID gelten die gleichen Stringeinschränkungen wie für ein Kubernetes-Label, das unter Syntax und Zeichensatz beschrieben ist.

    cat <<EOF > cluster.yaml
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      profile: asm-multicloud
      revision: asm-1118-4
      values:
        global:
          meshID: ${MESH_ID}
          multiCluster:
            clusterName: CLUSTER_NAME
          network: NETWORK_ID
    EOF
    
  5. Wechseln Sie gegebenenfalls zum Verzeichnis istio-1.11.8-asm.4. Der istioctl-Client ist versionsabhängig. Sie müssen die Version im Verzeichnis istio-1.11.8-asm.4/bin verwenden.

  6. Führen Sie den folgenden Befehl aus, um Anthos Service Mesh zu installieren. Wenn Sie ein unterstütztes optionales Feature aktivieren möchten, fügen Sie in der folgenden Befehlszeile -f und den YAML-Dateinamen hinzu und zwar nach -f cluster.yaml. Weitere Informationen finden Sie unter Optionale Features aktivieren.

    bin/istioctl install \
      --context="${CTX_CLUSTER1}" \
      -f cluster.yaml
    

Standardnetzwerk festlegen

Legen Sie das Standardnetzwerk für den Namespace istio-system fest.

 kubectl --context="${CTX_CLUSTER1}" label \
 namespace istio-system topology.istio.io/network=NETWORK_ID

Validierungs-Webhook konfigurieren

Wenn Sie Anthos Service Mesh installieren, legen Sie ein Überarbeitungslabel auf istiod fest. Sie müssen für den Validierungs-Webhook dieselbe Überarbeitung festlegen.

  1. Kopieren Sie die folgende YAML-Datei in eine Datei mit dem Namen istiod-service.yaml:

    cat <<EOF > istiod-service.yaml
    apiVersion: v1
    kind: Service
    metadata:
     name: istiod
     namespace: istio-system
     labels:
       istio.io/rev: asm-1118-4
       app: istiod
       istio: pilot
       release: istio
    spec:
     ports:
       - port: 15010
         name: grpc-xds # plaintext
         protocol: TCP
       - port: 15012
         name: https-dns # mTLS with k8s-signed cert
         protocol: TCP
       - port: 443
         name: https-webhook # validation and injection
         targetPort: 15017
         protocol: TCP
       - port: 15014
         name: http-monitoring # prometheus stats
         protocol: TCP
     selector:
       app: istiod
       istio.io/rev: asm-1118-4
    EOF
    
  2. Konfigurieren Sie den Validierungs-Webhook so, dass er den Dienst istiod mit dem Überarbeitungslabel finden kann:

    kubectl --context="${CTX_CLUSTER1}" apply -f istiod-service.yaml
    

    Dieser Befehl erstellt einen Diensteintrag, dank dem der Webhook automatisch Konfigurationen prüfen kann, bevor sie angewendet werden.

Automatisches gegenseitiges TLS (automTLS) ist standardmäßig aktiviert. Beim automatischen mTLS erkennt ein Client-Sidecar-Proxy automatisch, ob der Server eine Sidecar-Datei hat. Die Client-Sidecar-Datei sendet mTLS an Arbeitslasten mit Sidecar-Dateien und Nur-Text-Traffic an Arbeitslasten ohne Sidecar-Dateien.

Komponenten der Steuerungsebene prüfen

Prüfen Sie, ob die Pods der Steuerungsebene in istio-system ausgeführt werden:

kubectl --context="${CTX_CLUSTER1}" 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

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.

Die Installation ist erst abgeschlossen, wenn Sie die automatische Sidecar-Proxy-Einfügung (automatische Injektion) aktivieren und die Pods für alle Arbeitslasten neu starten, die auf dem Cluster ausgeführt wurden, bevor Sie Anthos Service Mesh installiert haben.

Wenn Sie die automatische Injektion aktivieren möchten, versehen Sie Ihre Namespaces mit dem Überarbeitungslabel, das bei der Installation von Anthos Service Mesh auf istiod festgelegt wurde. Das Überarbeitungslabel wird vom Sidecar-Injektor-Webhook verwendet, um eingefügte Sidecars mit einer bestimmten istiod-Überarbeitung zu verknüpfen. Nachdem Sie das Label hinzugefügt haben, müssen alle im Namespace vorhandenen Pods neu gestartet werden, damit Sidecars eingefügt werden können.

Bevor Sie neue Arbeitslasten in einem neuen Namespace bereitstellen, müssen Sie die automatische Injektion konfigurieren, damit Anthos Service Mesh den Traffic überwachen und sichern kann.

So aktivieren Sie die automatische Einfügung:

  1. Verwenden Sie den folgenden Befehl, um das Überarbeitungslabel für istiod zu finden:

    kubectl --context=${CTX_CLUSTER1} \
      -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-1118-4-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-1118-4,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-1118-4-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-1118-4,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-1118-4.

  2. Wenden Sie das Überarbeitungslabel an und entfernen Sie das Label istio-injection, falls vorhanden. Im folgenden Befehl ist NAMESPACE der Name des Namespace, in dem Sie die automatische Einfügung aktivieren möchten. REVISION ist das Überarbeitungslabel, das Sie im vorherigen Schritt notiert haben.

    kubectl --context=${CTX_CLUSTER1} \
      label namespace NAMESPACE 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 Einfügung fehlschlägt, wenn ein Namespace sowohl das Label istio-injectionals auch das Überarbeitungslabel enthält, umfassen alle kubectl label-Befehle in der Anthos Service Mesh-Dokumentation das Entfernen des Labels istio-injection.

  3. Wenn vor der Installation von Anthos Service Mesh in Ihrem Cluster Arbeitslasten ausgeführt wurden, starten Sie die Pods neu, um eine erneute Injektion auszulösen.

    Wie Sie Pods neu starten, hängt von der Anwendung und der Umgebung ab, in der sich der Cluster befindet. Beispielsweise können Sie in Ihrer Staging-Umgebung einfach alle Pods löschen, wodurch sie neu gestartet werden. Aber in Ihrer Produktionsumgebung haben Sie vielleicht einen Prozess, der ein Blau/Grün-Deployment implementiert, sodass Pods sicher neu gestartet werden können, um Traffic-Unterbrechungen zu vermeiden.

    Sie können kubectl verwenden, um einen rollierenden Neustart durchzuführen:

    kubectl  --context=${CTX_CLUSTER1} \
      rollout restart deployment -n NAMESPACE
    
  4. Überprüfen Sie, ob Ihre Pods so konfiguriert sind, dass sie auf die neue Version von istiod verweisen.

    kubectl --context=${CTX_CLUSTER1} \
      get pods -n NAMESPACE -l istio.io/rev=REVISION
    

Nächste Schritte

Wenn Sie mehrere Cluster für Ihr lokales Service Mesh verwenden möchten, finden Sie weitere Informationen unter Anthos Service Mesh lokal auf mehreren Clustern und Netzwerken installieren.

Andernfalls lautet der nächste Schritt Externe IP-Adressen konfigurieren.