Anthos Service Mesh in GKE aktualisieren

In dieser Anleitung wird erläutert, wie Sie Anthos Service Mesh von Version 1.6.4+ auf Version 1.7.8 in GKE aktualisieren. Für ein Upgrade von Anthos Service Mesh ab Version 1.4.5 müssen Sie zuerst ein Upgrade auf Anthos Service Mesh 1.5 durchführen. Direkte Upgrades von Anthos Service Mesh 1.4 auf 1.6 werden nicht unterstützt.

Anthos Service Mesh-Installationen ab Version 1.7 unterstützen Upgrades mit Überspringen der Version. Informationen zum direkten Upgrade auf die Version 1.10 finden Sie unter Anthos Service Mesh auf die neueste Version aktualisieren.

Bei der Aktualisierung empfehlen wir ein Upgrade für die duale Steuerungsebene, die auch als Canary Upgrade bezeichnet wird. Dabei werden sowohl die neue als auch die vorherigen Versionen der Steuerungsebene ausgeführt, während Sie die neue Version mit einem kleinen Prozentsatz Ihrer Arbeitslasten testen. Dieser Ansatz ist sicherer als ein direktes Upgrade, bei dem die neue Version der Steuerungsebene die vorherige Version ersetzt. Das Istio-Ingress-Gateway wird direkt aktualisiert. Planen Sie in Ihrem Cluster deshalb eine gewisse Unterbrechung ein.

Es dauert fünf bis zehn Minuten, um die Komponenten der Anthos Service Mesh-Steuerungsebene noch einmal bereitzustellen. Außerdem müssen Sie in allen Arbeitslasten neue Sidecar-Proxys einfügen, damit sie mit der aktuellen Anthos Service Mesh-Version aktualisiert werden. Wie lange es dauert, die Sidecar-Proxys zu aktualisieren, hängt von vielen Faktoren ab, z. B. von der Anzahl der Pods, der Anzahl der Knoten, den Skalierungseinstellungen der Bereitstellung, den Budget für Pod-Störungen und anderen Konfigurationseinstellungen. Grob geschätzt dauert die Aktualisierung der Sidecar-Proxys 100 Pods pro Minute.

Upgrade vorbereiten

In diesem Abschnitt werden die Schritte beschrieben, um ein Upgrade von Anthos Service Mesh vorzubereiten.

  1. Prüfen Sie die Unterstützten Features und diese Anleitung, um sich mit den Features und dem Upgradeprozess vertraut zu machen.

  2. Wenn Sie bei der Installation der vorherigen Version von Anthos Service Mesh optionale Features aktiviert haben, müssen Sie dieselben Features beim Upgrade aktivieren. Sie aktivieren optionale Features, indem Sie --set values-Flags hinzufügen oder das Flag -f mit einer YAML-Datei angeben, wenn Sie den Befehl istioctl install ausführen.

  3. Wenn Sie Anthos Service Mesh in einem privaten Cluster installieren, müssen Sie Port 15017 in der Firewall öffnen, damit der Webhook mit automatischer Sidecar-Einfügung ordnungsgemäß funktioniert. Weitere Informationen finden Sie unter Port auf einem privaten Cluster öffnen.

  4. Wenn Sie ein Upgrade von Anthos Service Mesh 1.5 durchführen möchten, führen Sie die folgenden Schritte aus, falls ein Rollback erforderlich ist:

    1. Erstellen Sie ein Verzeichnis mit dem Namen asm-1-5.

    2. Laden Sie die Installationsdatei 1.5 in das Verzeichnis asm-1-5 herunter.

    3. Extrahieren Sie den Inhalt der Datei in das Verzeichnis asm-1-5.

    4. Prüfen Sie, ob Sie sich im Installations-Stammverzeichnis von Anthos Service Mesh 1.5 befinden.

    5. Laden Sie das kpt-Paket 1.5 herunter und konfigurieren Sie die 1.5 istio-operator.yaml.

Umgebung einrichten

Bei Installationen in Google Kubernetes Engine können Sie den Installationsanleitungen mit Cloud Shell, einer browserinternen Befehlszeile zu Ihren Google Cloud-Ressourcen oder auf Ihrem Computer mit Linux oder macOS folgen.

Option A: Cloud Shell verwenden

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 enthält die benötigten Befehlszeilentools gcloud, kubectl und helm.

  • 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

  4. Aktualisieren Sie die Komponenten:

    gcloud components update
    

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

    ERROR: (gcloud.components.update)
    You cannot perform this action because the gcloud CLI component manager
    is disabled for this installation. You can run the following command
    to achieve the same result for this installation:
    
    sudo apt-get update && sudo apt-get --only-upgrade install ...
  5. Kopieren Sie den langen Befehl und fügen Sie ihn ein, um die Komponenten zu aktualisieren.

  6. Prüfen Sie, ob sich Git in Ihrem Pfad befindet, damit kpt es finden kann.

Option B: Befehlszeilentools lokal verwenden

Installieren und initialisieren Sie Google Cloud CLI auf Ihrem lokalen Computer.

Wenn die gcloud CLI bereits installiert ist:

  1. Authentifizieren Sie sich über die gcloud CLI:

    gcloud auth login
    
  2. Aktualisieren Sie die Komponenten:

    gcloud components update
    
  3. Installieren Sie kubectl:

    gcloud components install kubectl
    
  4. Installieren Sie kpt:

    gcloud components install kpt
    
  5. Prüfen Sie, ob sich Git in Ihrem Pfad befindet, damit kpt es finden kann.

Umgebungsvariablen festlegen

  1. Rufen Sie die Projekt-ID des Projekts ab, in dem der Cluster erstellt wurde, sowie die Projektnummer für das Flotten-Hostprojekt.

    gcloud

    Führen Sie dazu diesen Befehl aus:

    gcloud projects list
    

    Console

    1. Wechseln Sie in der Google Cloud Console zur 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 des Projekts, in dem der Cluster erstellt wurde:

    export PROJECT_ID=YOUR_PROJECT_ID

  3. Erstellen Sie eine Umgebungsvariable für die Projektnummer des Flotten-Hostprojekts.

    export FLEET_PROJECT_NUMBER=YOUR_FLEET_PROJECT_NUMBER

  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

Optional die Mesh-ID des Clusters ändern

Wenn Ihr Service Mesh mehrere Cluster enthält oder enthalten wird, die sich in verschiedenen Projekten befinden, müssen alle Cluster dieselbe Mesh-ID haben. Diese basiert auf der Projektnummer des Flotten-Hostprojekts. Die in Ihrem Cluster festgelegte Mesh-ID muss der Mesh-ID entsprechen, die Sie für die Verwendung durch Anthos Service Mesh festgelegt haben.

Wenn Sie nur einen Cluster haben oder wenn Ihr Service Mesh mehrere Cluster enthält oder enthalten wird, die sich im selben Projekt befinden, überspringen Sie die folgenden Schritte und fahren Sie mit Anmeldedaten und Berechtigungen festlegen fort.

So legen Sie das neue Mesh-ID-Label im Cluster fest:

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

    export MESH_ID="proj-${FLEET_PROJECT_NUMBER}"

  2. Wenn Sie die vorhandenen Labels des Clusters übernehmen möchten, müssen Sie diese Labels beim Hinzufügen des Labels mesh_id angeben.

    1. So prüfen Sie, ob Ihr Cluster vorhandene Labels hat:

      gcloud container clusters describe ${CLUSTER_NAME} \
        --project ${PROJECT_ID}

      Suchen Sie in der Ausgabe nach dem Feld resourceLabels. Jedes Label wird in einer separaten Zeile unter dem Feld resourceLabels gespeichert. Beispiel:

      resourceLabels:
        csm: ''
        env: dev
        release: stable

      Das bestehende Label mesh_id müssen Sie nicht beibehalten. Überschreiben Sie es mit dem neuen Label mesh_id.

      Zur Vereinfachung können Sie die Labels einer Umgebungsvariablen hinzufügen. Ersetzen Sie im Folgenden YOUR_EXISTING_LABELS durch eine durch Kommas getrennte Liste der vorhandenen Labels im Cluster im Format KEY=VALUE. Beispiel: env=dev,release=stable

      export EXISTING_LABELS="YOUR_EXISTING_LABELS"
    2. Legen Sie das Label mesh_id fest:

      • Wenn Ihr Cluster bereits vorhandene Labels hat, die Sie beibehalten möchten, aktualisieren Sie den Cluster mit der mesh_id und den vorhandenen Labels:

        gcloud container clusters update ${CLUSTER_NAME} \
          --project ${PROJECT_ID}
          --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
      • Wenn der Cluster keine vorhandenen Labels hat, aktualisieren Sie den Cluster mit dem neuen Label mesh_id:

        gcloud container clusters update ${CLUSTER_NAME} \
          --project=${PROJECT_ID} \
          --update-labels=mesh_id=${MESH_ID}

Anmeldedaten und Berechtigungen festlegen

  1. Rufen Sie die Anmeldedaten für die Authentifizierung ab, um mit dem Cluster zu interagieren:

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${PROJECT_ID}
    
  2. Gewähren Sie dem aktuellen Nutzer Cluster-Administratorberechtigungen. 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 create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user="$(gcloud config get-value core/account)"

Wenn der Fehler "cluster-admin-binding" already exists angezeigt wird, können Sie ihn ignorieren und mit der vorhandenen Cluster-Administratorbindung fortfahren.

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.7.8-asm.10-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.7.8-asm.10-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Die erwartete Ausgabe ist 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.7.8-asm.10-linux-amd64.tar.gz

    Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.7.8-asm.10 ein Installationsverzeichnis erstellt, das Folgendes enthält:

    • Beispielanwendungen im Verzeichnis samples.
    • Das istioctl-Befehlszeilentool, das Sie zum Installieren von Anthos Service Mesh verwenden, befindet sich im Verzeichnis bin.
    • Die Anthos Service Mesh-Konfigurationsprofile befinden sich im Verzeichnis manifests/profiles.

  4. macOS

  5. Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz
  6. Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit openssl:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Die erwartete Ausgabe ist Verified OK.

  7. 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.7.8-asm.10-osx.tar.gz

    Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.7.8-asm.10 ein Installationsverzeichnis erstellt, das Folgendes enthält:

    • Beispielanwendungen im Verzeichnis samples.
    • Das istioctl-Befehlszeilentool, das Sie zum Installieren von Anthos Service Mesh verwenden, befindet sich im Verzeichnis bin.
    • Die Anthos Service Mesh-Konfigurationsprofile befinden sich im Verzeichnis manifests/profiles.

  8. Windows

  9. Laden Sie die Anthos Service Mesh-Installationsdatei in Ihr aktuelles Arbeitsverzeichnis herunter:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip
  10. Laden Sie die Signaturdatei herunter und bestätigen Sie die Signatur mit openssl:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Die erwartete Ausgabe ist Verified OK.

  11. 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.7.8-asm.10-win.zip

    Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.7.8-asm.10 ein Installationsverzeichnis erstellt, das Folgendes enthält:

    • Beispielanwendungen im Verzeichnis samples.
    • Das istioctl-Befehlszeilentool, das Sie zum Installieren von Anthos Service Mesh verwenden, befindet sich im Verzeichnis bin.
    • Die Anthos Service Mesh-Konfigurationsprofile befinden sich im Verzeichnis manifests/profiles.

  12. Prüfen Sie, ob Sie sich im Stammverzeichnis der Anthos Service Mesh-Installation befinden.
    cd istio-1.7.8-asm.10
  13. Fügen Sie die Tools der Einfachheit halber im Verzeichnis /bin Ihrem PATH hinzu.
    export PATH=$PWD/bin:$PATH

Ressourcenkonfigurationsdateien vorbereiten

Wenn Sie den Befehl istioctl install ausführen, geben Sie -f istio-operator.yaml in der Befehlszeile an. Diese Datei enthält Informationen zu Ihrem Projekt und Cluster, die Anthos Service Mesh erfordert. Sie müssen ein Paket mit istio-operator.yaml- und anderen Ressourcenkonfigurationsdateien herunterladen, um die Projekt- und Clusterinformationen festlegen zu können.

So bereiten Sie die Ressourcenkonfigurationsdateien vor:

Mesh CA

  1. Erstellen Sie ein neues Verzeichnis für die Ressourcenkonfigurationsdateien des Anthos Service Mesh-Pakets. Es empfiehlt sich, den Clusternamen als Verzeichnisnamen zu verwenden.

  2. Wechseln Sie zu dem Verzeichnis, in das Sie das Anthos Service Mesh-Paket herunterladen möchten.

  3. Laden Sie das Paket herunter:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.7-asm asm
    
  4. Legen Sie die Projekt-ID für das Projekt fest, in dem der Cluster erstellt wurde:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  5. Legen Sie die Projektnummer für das Flotten-Hostprojekt fest:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  6. Legen Sie den Clusternamen fest:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  7. Legen Sie die Standardzone oder -region fest:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  8. Setzen Sie das Tag auf die Version des Anthos Service Mesh, das Sie installieren:

    kpt cfg set asm anthos.servicemesh.tag 1.7.8-asm.10
    
  9. Legen Sie den Validierungs-Webhook so fest, dass er ein Überarbeitungslabel verwendet:

    kpt cfg set asm anthos.servicemesh.rev asm-178-10
    

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

  10. Da sich die Cluster in Ihrer Multi-Cluster-Konfiguration in verschiedenen Projekten befinden, müssen Sie die vertrauenswürdigen Domain-Aliasse für die anderen Projekte konfigurieren, die das Service Mesh mit mehreren Clustern oder mehreren Projekten bilden.

    1. Rufen Sie die Projekt-ID aller Cluster im Multi-Cluster-/Multi-Projekt-Mesh ab.

    2. Legen Sie für die Projekt-ID jedes Clusters die vertrauenswürdigen Domain-Aliase fest. Wenn Sie beispielsweise Cluster in drei Projekten haben, führen Sie den folgenden Befehl aus und ersetzen Sie PROJECT_ID_1, PROJECT_ID_2 und PROJECT_ID_3 durch die Projekt-ID jedes Clusters.

      kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog

      Wenn Sie die Cluster in den anderen Projekten konfigurieren, können Sie denselben Befehl verwenden.

      Mithilfe der vertrauenswürdigen Domain-Aliasse kann Mesh CA Arbeitslasten in Clustern in anderen Projekten authentifizieren. Zusätzlich zur Festlegung der vertrauenswürdigen Domain-Aliasse müssen Sie nach der Installation von Anthos Service Mesh das clusterübergreifende Load-Balancing aktivieren.

  11. Geben Sie die Werte der kpt-Setter aus:

    kpt cfg list-setters asm
    

    Die Ausgabe dieses Befehls sieht in etwa so aus:

                              NAME                                                       VALUE
    anthos.servicemesh.canonicalServiceHub               gcr.io/gke-release/asm/canonical-service-controller:1.7.8-asm.10
    anthos.servicemesh.controlplane.monitoring.enabled   true
    anthos.servicemesh.hub                               gcr.io/gke-release/asm
    anthos.servicemesh.hubMembershipID                   MEMBERSHIP_ID
    anthos.servicemesh.tag                               1.7.8-asm.10
    anthos.servicemesh.trustDomainAliases                [example-project-12345.svc.id.goog,example-project-23456.svc.id.goog,example-project-98765.svc.id.goog]
    base-dir                                             base
    gcloud.compute.location                              us-central
    gcloud.compute.network                               default
    gcloud.compute.subnetwork                            default
    gcloud.container.cluster                             example-cluster-1
    gcloud.container.cluster.clusterSecondaryRange
    gcloud.container.cluster.releaseChannel              REGULAR
    gcloud.container.cluster.servicesSecondaryRange
    gcloud.container.nodepool.max-nodes                  4
    gcloud.core.project                                  example-project-12345
    gcloud.project.environProjectID                      FLEET_PROJECT_ID
    gcloud.project.environProjectNumber                  1234567890123
    gcloud.project.projectNumber                         9876543210987

    Prüfen Sie, ob die Werte für die folgenden Setter korrekt sind:

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • anthos.servicemesh.trustDomainAliases
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Sie können die Werte für die anderen Setter ignorieren.

Citadel

  1. Erstellen Sie ein neues Verzeichnis für die Ressourcenkonfigurationsdateien des Anthos Service Mesh-Pakets. Es empfiehlt sich, den Clusternamen als Verzeichnisnamen zu verwenden.

  2. Wechseln Sie zu dem Verzeichnis, in das Sie das Anthos Service Mesh-Paket herunterladen möchten.

  3. Laden Sie das Paket herunter:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.7-asm asm
    
  4. Legen Sie die Projekt-ID für das Projekt fest, in dem der Cluster erstellt wurde:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  5. Legen Sie die Projektnummer für das Flotten-Hostprojekt fest:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  6. Legen Sie den Clusternamen fest:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  7. Legen Sie die Standardzone oder -region fest:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  8. Setzen Sie das Tag auf die Version des Anthos Service Mesh, das Sie installieren:

    kpt cfg set asm anthos.servicemesh.tag 1.7.8-asm.10
    
  9. Legen Sie den Validierungs-Webhook so fest, dass er ein Überarbeitungslabel verwendet:

    kpt cfg set asm anthos.servicemesh.rev asm-178-10
    
  10. Geben Sie die Werte der kpt-Setter aus:

    kpt cfg list-setters asm
    

    Die Ausgabe dieses Befehls sieht in etwa so aus:

                              NAME                                                       VALUE
    anthos.servicemesh.canonicalServiceHub               gcr.io/gke-release/asm/canonical-service-controller:1.7.8-asm.10
    anthos.servicemesh.controlplane.monitoring.enabled   true
    anthos.servicemesh.hub                               gcr.io/gke-release/asm
    anthos.servicemesh.hubMembershipID                   MEMBERSHIP_ID
    anthos.servicemesh.tag                               1.7.8-asm.10
    anthos.servicemesh.trustDomainAliases
    base-dir                                             base
    gcloud.compute.location                              us-central
    gcloud.compute.network                               default
    gcloud.compute.subnetwork                            default
    gcloud.container.cluster                             example-cluster-1
    gcloud.container.cluster.clusterSecondaryRange
    gcloud.container.cluster.releaseChannel              REGULAR
    gcloud.container.cluster.servicesSecondaryRange
    gcloud.container.nodepool.max-nodes                  4
    gcloud.core.project                                  example-project-12345
    gcloud.project.environProjectID                      FLEET_PROJECT_ID
    gcloud.project.environProjectNumber                  1234567890123
    gcloud.project.projectNumber                         9876543210987

    Prüfen Sie, ob die Werte für die folgenden Setter korrekt sind:

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Sie können die Werte für die anderen Setter ignorieren.

Upgrade von Anthos Service Mesh durchführen

Zum Installieren einer neuen Version von Anthos Service Mesh empfehlen wir den Upgradeprozess für die duale Steuerungsebene durchzuführen (in der Istio-Dokumentation als Canary-Upgrade bezeichnet). Mit einem Upgrade der dualen Steuerungsebene installieren Sie eine neue Version der Steuerungsebene neben der vorhandenen Steuerungsebene. Fügen Sie bei der Installation der neuen Version das Label revision ein, das die Version der neuen Steuerungsebene angibt. Jede Überarbeitung ist eine vollständige Implementierung der Anthos Service Mesh-Steuerungsebene mit eigenem Deployment und Dienst.

Anschließend migrieren Sie zur neuen Version. Legen Sie dazu für Ihre Arbeitslasten dasselbe revision-Label fest, das auf die neue Steuerungsebene verweist, und führen Sie einen rollierenden Neustart durch, um die neue Anthos Service Mesh-Version in die Proxys einzufügen. Bei diesem Ansatz können Sie die Auswirkungen des Upgrades auf einen kleinen Prozentsatz Ihrer Arbeitslasten überwachen. Nachdem Sie Ihre Anwendung getestet haben, können Sie den gesamten Traffic zur neuen Version migrieren. Dieser Ansatz ist wesentlich sicherer als ein direktes Upgrade, bei dem eine neue Steuerungsebene die vorherige Version der Steuerungsebene ersetzt.

Steuerungsebene aktualisieren

Führen Sie den folgenden Befehl aus, um die neue Steuerungsebene mit dem Konfigurationsprofil bereitzustellen, das Sie in der Datei istio-operator.yaml festgelegt haben. 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.

  istioctl install \
    -f asm/cluster/istio-operator.yaml \
    --set revision=asm-178-10

Das Argument --set revision fügt istiod das Label istio.io/rev hinzu. Nach der Ausführung des Befehls haben Sie für die Steuerungsebene zwei Bereitstellungen und Dienste, die nebeneinander ausgeführt werden:

kubectl get pods -n istio-system

Beispielausgabe:

NAME                                        READY   STATUS    RESTARTS   AGE
istio-ingressgateway-c56675fcd-86zdn        1/1     Running   0          2m9s
istio-ingressgateway-c56675fcd-vn4nv        1/1     Running   0          2m21s
istiod-asm-178-10-6d5cfd4b89-xztlr           1/1     Running   0          3m44s
istiod-fb7f746f4-wcntn                      1/1     Running   0          50m

Arbeitslasten neu bereitstellen

Die Installation der neuen Überarbeitung hat keine Auswirkungen auf die vorhandenen Sidecar-Proxys. Für ein Upgrade müssen Sie diese so konfigurieren, dass sie auf die neue Steuerungsebene verweisen. Dies wird während der Einfügung von Sidecar-Dateien mithilfe des Namespace-Labels istio.io/rev gesteuert.

  1. Aktualisieren Sie Arbeitslasten, die mit der neuen Anthos Service Mesh-Version eingefügt werden:

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-178-10 --overwrite

    Das Label istio-injection muss entfernt werden, da es Vorrang vor dem Label istio.io/rev hat.

  2. Starten Sie die Pods neu, um das erneute Einfügen auszulösen:

    kubectl rollout restart deployment -n NAMESPACE
  3. Prüfen Sie, ob die Pods so konfiguriert sind, dass sie auf die Steuerungsebene istiod-asm-178-10 verweisen:

    kubectl get pods -n NAMESPACE -l istio.io/rev=asm-178-10

  4. Testen Sie die Anwendung, um zu prüfen, ob die Arbeitslasten ordnungsgemäß funktionieren.

  5. Wenn Sie Arbeitslasten in anderen Namespaces haben, wiederholen Sie die vorherigen Schritte für jeden Namespace.

  6. Wenn Sie sich sicher sind, dass Ihre Anwendung wie erwartet funktioniert, fahren Sie mit Upgrade abschließen fort. Andernfalls führen Sie die folgenden Schritte aus, um ein Rollback auf die vorherige Version durchzuführen.

    1. Aktualisieren Sie Arbeitslasten, damit die vorherige Version der Steuerungsebene eingeschleust werden kann:

       kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite

    2. Starten Sie die Pods neu, um die erneute Injektion auszulösen, damit die Proxys die vorherige Version erhalten:

       kubectl rollout restart deployment -n NAMESPACE

    3. Führen Sie ein Rollback der Komponenten der Steuerungsebene durch:

      Rollback auf vorherige Version 1.6

      1. Stellen Sie die vorherige Version von istio-ingressgateway noch einmal bereit:

        kubectl -n istio-system rollout undo deploy istio-ingressgateway
        
      2. Entfernen Sie die neue Steuerungsebene:

        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-178-10 -n istio-system --ignore-not-found=true
        

      Rollback auf 1.5

      1. Wechseln Sie in das Verzeichnis, in das Sie die Installationsdatei für Anthos Service Mesh 1.5 heruntergeladen haben.

      2. Installieren Sie die vorherige Version von Anthos Service Mesh neu. Wenn Sie im folgenden Befehl optionale Features aktiviert haben, fügen Sie die entsprechenden --set values-Flags oder das Flag -f mit dem YAML-Dateinamen hinzu.

        bin/istioctl install \
        -f asm/cluster/istio-operator.yaml

Upgrade abschließen

Wenn Sie sich sicher sind, dass Ihre Anwendung wie erwartet funktioniert, führen Sie die folgenden Schritte aus, um das Upgrade abzuschließen:

  1. Entfernen Sie die alte Steuerungsebene:

    kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
    
  2. Führen Sie den folgenden Befehl aus, um den kanonischen Dienstüberwacher bereitzustellen:

    kubectl apply -f asm/canonical-service/controller.yaml

    Der Befehl stellt den kanonischen Dienstüberwacher in Ihrem Cluster bereit. Der kanonische Dienstüberwacher gruppiert Arbeitslasten, die zum selben logischen Dienst gehören, und ist erforderlich, um zusätzliche Funktionen im Dashboard "Dienste" in der Cloud Console freizuschalten. Weitere Informationen finden Sie unter kanonischen Dienstüberwacher aktivieren und deaktivieren.

Nächste Schritte