Anthos Service Mesh 1.6

Anthos Service Mesh in GKE in Google Cloud aktualisieren

In dieser Anleitung wird beschrieben, wie Sie Anthos Service Mesh von Version 1.5.4+ or 1.6.4+ auf Version 1.6.8 in GKE in Google Cloud 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.

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 Budgets für Pod-Unterbrechungen und anderen Konfigurationseinstellungen. Grob geschätzt dauert die Aktualisierung der Sidecar-Proxys 100 Pods pro Minute.

Übersicht über das Upgrade

In diesem Abschnitt werden die Schritte zum Upgrade von Anthos Service Mesh beschrieben.

Vorbereiten

  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. Sie können entweder eine Firewallregel hinzufügen oder die Firewallregel aktualisieren, die beim Erstellen des privaten Clusters automatisch erstellt wurde:

    1. Suchen Sie den Quellbereich (master-ipv4-cidr) des Clusters. Ersetzen Sie im folgenden Befehl cluster_name durch den Namen des Clusters:

      gcloud compute firewall-rules list --filter="name~gke-cluster_name-[0-9a-z]*-master"
    2. Aktualisieren Sie die Firewallregel mit Port 1507. Ersetzen Sie im folgenden Befehl firewall_rule_name durch den Namen der Firewall:

      gcloud compute firewall-rules update firewall_rule_name --allow tcp:10250,tcp:443,tcp:15017

      Der Aktualisierungsbefehl ist eigentlich eine Ersetzung. Sie müssen also die Standardports 443 (HTTPS) und 10250 (kubelet) sowie 15017 einfügen.

Upgraden

  1. Befolgen Sie die Schritte in dieser Anleitung, um ein Upgrade auf Anthos Service Mesh vorzubereiten.

  2. Führen Sie ein Upgrade für Anthos Service Mesh durch.

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 der Cloud Shell über die Befehlszeile zugreifen.

So verwenden Sie Cloud Shell:

  1. Gehen Sie zur Cloud Console.
  2. Wählen Sie Ihr Cloud-Projekt aus.
  3. Klicken Sie im oberen Bereich des Cloud Console-Fensters auf Cloud Shell aktivieren.

    Google Cloud Platform Console

    Im unteren Bereich der Cloud Console wird ein neuer Frame 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 Cloud SDK 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. Installieren Sie kubectl:

    sudo apt-get install kubectl
    
  7. Installieren Sie kpt:

    sudo apt-get install google-cloud-sdk-kpt
    

Option B: Befehlszeilentools lokal verwenden

Installieren und initialisieren Sie auf Ihrem lokalen Computer das Cloud SDK (das gcloud-Befehlszeilentool).

Wenn Sie das Cloud SDK bereits installiert haben:

  1. Authentifizieren Sie sich beim Cloud SDK:

    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
    

Umgebungsvariablen festlegen

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

    gcloud

    Führen Sie diesen Befehl aus:

    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 des Projekts, in dem der Cluster erstellt wurde:

    export PROJECT_ID=YOUR_PROJECT_ID

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

    export ENVIRON_PROJECT_NUMBER=YOUR_ENVIRON_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

Ändern Sie optional die Mesh-ID des Clusters.

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 Environ-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-${ENVIRON_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}
    
  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.6.8-asm.9-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.6.8-asm.9-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.8-asm.9-linux-amd64.tar.gz.1.sig istio-1.6.8-asm.9-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.6.8-asm.9-linux-amd64.tar.gz

    Mit diesem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.6.8-asm.9 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 install/kubernetes/operator/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.6.8-asm.9-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.6.8-asm.9-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.8-asm.9-osx.tar.gz.1.sig istio-1.6.8-asm.9-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.6.8-asm.9-osx.tar.gz

    Mit diesem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.6.8-asm.9 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 install/kubernetes/operator/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.6.8-asm.9-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.6.8-asm.9-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.8-asm.9-win.zip.1.sig istio-1.6.8-asm.9-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.6.8-asm.9-win.zip

    Mit diesem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.6.8-asm.9 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 install/kubernetes/operator/profiles.

  12. Prüfen Sie, ob Sie sich im Stammverzeichnis der Anthos Service Mesh-Installation befinden.
    cd istio-1.6.8-asm.9
  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:

  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 asm herunter:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.6-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 Environ-Hostprojekt fest:

    kpt cfg set asm gcloud.project.environProjectNumber ${ENVIRON_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. Legen Sie das Konfigurationsprofil fest, das Sie verwenden möchten:

    • Wenn sich Ihr Cluster in einer freigegebenen Virtual Private Cloud befindet und Ihr Service Mesh mehrere Cluster enthält oder enthalten wird, die sich in verschiedenen Projekten befinden, legen Sie das Profil asm-gcp-multiproject fest:

      kpt cfg set asm anthos.servicemesh.profile asm-gcp-multiproject
      
    • Wenn sich alle Cluster im selben Projekt befinden, legen Sie das Profil asm-gcp fest:

      kpt cfg set asm anthos.servicemesh.profile asm-gcp
      
  9. Wenn Sie das Profil asm-gcp-multiproject festlegen, müssen Sie die vertrauenswürdigen Domain-Aliasse für alle Projekte konfigurieren, aus denen das Multi-Cluster-Service Mesh bestehen wird.

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

    2. Legen Sie für jede Projekt-ID die vertrauenswürdigen Domain-Aliasse fest. Wenn Sie beispielsweise Cluster in drei Projekten haben, führen Sie den folgenden Befehl aus und ersetzen Sie für alle Projekte (einschließlich des aktuellen Projekts) PROJECT_ID_1, PROJECT_ID_2 und PROJECT_ID_3 durch die Projekt-IDs.

      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 das clusterübergreifende Load-Balancing aktivieren.

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

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 während der Installation der neuen Version die Installationsoption revision hinzu, um der Steuerungsebene ein Label zuzuweisen. 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 Überarbeitungslabel fest, das auf die neue Steuerungsebene verweist, und führen Sie einen rollierenden Neustart durch. 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

  1. Erstellen Sie eine Umgebungsvariable für den Überarbeitungsnamen. Wir empfehlen, einen Namen wie asm-168-9 für den Überarbeitungsnamen zu verwenden, da er die Version der Steuerungsebene identifiziert, auf die Sie ein Upgrade durchführen.

    export REVISION=asm-168-9

    Der Überarbeitungsname muss ein DNS-1035-Label sein und aus alphanumerischen Zeichen in Kleinbuchstaben oder - bestehen, mit einem Buchstaben beginnen und mit einem alphanumerischen Zeichen enden (z. B. my-name' oder abc-123). Der für die Validierung verwendete Regex lautet: '[a-z]([-a-z0-9]*[a-z0-9])?')

  2. So installieren Sie eine neue Überarbeitung:

    Führen Sie den folgenden Befehl aus, um Anthos Service Mesh mit dem Konfigurationsprofil zu installieren, das Sie in der Datei istio-operator.yaml festgelegt haben. Eine Übersicht über die Profile finden Sie unter Konfigurationsprofile. Weitere Informationen zu den in den einzelnen Profilen unterstützten Features finden Sie auf der Seite Unterstützte Features. Informationen zum Anpassen der Installation finden Sie unter Optionale Features aktivieren.

      istioctl install \
        -f asm/cluster/istio-operator.yaml \
        --revision=${REVISION}

    Das Argument --revision fügt dem Deployment der Steuerungsebene ein istio.io/rev-Label hinzu. Nach der Ausführung des Befehls haben Sie für die Steuerungsebene zwei Deployments 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-REVISION-6d5cfd4b89-xztlr       1/1     Running   0          3m44s
    istiod-fb7f746f4-wcntn                      1/1     Running   0          50m
    promsd-579f9f9bf4-m65nc                     2/2     Running   1          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. Erstellen Sie eine Umgebungsvariable für den Namespace der Arbeitslasten, die Sie neu bereitstellen möchten:

    export NAMESPACE=YOUR_NAMESPACE
  2. Aktualisieren Sie Arbeitslasten, die mit der neuen Anthos Service Mesh-Version eingefügt werden:

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=${REVISION} --overwrite

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

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

    kubectl rollout restart deployment -n ${NAMESPACE}
  4. Prüfen Sie, ob die Pods so konfiguriert sind, dass sie auf die Steuerungsebene istiod-${REVISION} verweisen:

    kubectl get pods -n ${NAMESPACE} -l istio.io/rev=${REVISION}
    
  5. Testen Sie die Anwendung, um zu prüfen, ob die Arbeitslasten ordnungsgemäß funktionieren.

    So führen Sie ein Rollback auf die vorherige Version durch:

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

      kubectl label namespace ${NAMESPACE} istio.io/rev- istio-injection=enabled --overwrite
    2. Starten Sie die Pods neu, um das erneute Einfügen auszulösen:

      kubectl rollout restart deployment -n ${NAMESPACE}

    Wenn Sie sicher sind, dass Ihre Anwendung wie erwartet funktioniert, führen Sie das Upgrade durch Entfernen der alten Steuerungsebene aus:

    kubectl delete svc istiod -n istio-system

    kubectl delete deploy istiod -n istio-system

Weitere Informationen