Downgrade von Anthos Service Mesh in GKE ausführen

In dieser Anleitung wird beschrieben, wie Sie ein Downgrade von Anthos Service Mesh von 1.6.14 auf 1.5.10 in GKE-Clustern in Google Cloud ausführen.

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.

Übersicht über das Downgrade

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

Vorbereiten

  1. Prüfen Sie die Unterstützten Features und diese Anleitung, um sich mit den Features und dem Downgradeprozess 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 Downgrade 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 ein Downgrade von Anthos Service Mesh auf einem privaten Cluster ausführen, müssen Sie eine Firewallregel zum Öffnen von Port 15017 hinzufügen, wenn Sie die automatische Sidecar-Einfügung verwenden möchten. Wenn Sie die Firewallregel nicht hinzufügen und die automatische Sidecar-Einfügung 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.

Downgrade ausführen

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

  2. Downgrade von Anthos Service Mesh ausführen

  3. Sidecar-Proxys aktualisieren

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

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 die gcloud CLI auf Ihrem lokalen Rechner.

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

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.5.10-asm.2-linux.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.5.10-asm.2-linux.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-linux.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.5.10-asm.2-linux.tar.gz

    Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.5.10-asm.2 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.5.10-asm.2-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.5.10-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-asm.2-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.5.10-asm.2-osx.tar.gz

    Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.5.10-asm.2 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.5.10-asm.2-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.5.10-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.5.10-asm.2-win.zip.1.sig istio-1.5.10-asm.2-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.5.10-asm.2-win.zip

    Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.5.10-asm.2 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.5.10-asm.2
  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.

Wählen Sie zuerst ein Paket basierend auf der Zertifizierungsstelle (Certificate Authority, CA) aus, die Sie verwenden möchten:

  • asm: Dieses Paket aktiviert die Zertifizierungsstelle Mesh CA, die für neue Installationen empfohlen wird.

  • asm-citadel: Sie können Citadel als CA aktivieren. Weitere Informationen zur Auswahl dieses Pakets finden Sie unter Zertifizierungsstelle auswählen.

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.5-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 den Clusternamen fest:

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

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    

Downgrade von Anthos Service Mesh durchführen

So führen Sie ein Downgrade von Anthos Service Mesh durch:

istioctl install \
  -f asm/cluster/istio-operator.yaml \
  --set profile=asm-gcp

Komponenten der Steuerungsebene prüfen

Beim Downgrade müssen die Komponenten der Steuerungsebene neu installiert werden. Das dauert etwa fünf bis zehn Minuten. Die alten Komponenten der Steuerungsebene werden beendet und bei der Installation der neuen Komponenten gelöscht. Sie können den Fortschritt mithilfe des Werts in der Spalte AGE der Arbeitslasten prüfen.

kubectl get pod -n istio-system

Beispielausgabe:

NAME                                     READY   STATUS        RESTARTS   AGE
istio-ingressgateway-5bfdf7c586-v6wxx    2/2     Terminating   0          25m
istio-ingressgateway-7b598c5557-b88md    2/2     Running       0          5m44s
istiod-78cdbbbdb-d7tps                   1/1     Running       0          5m16s
promsd-576b8db4d6-lqf64                  2/2     Running       1          5m26s

In diesem Beispiel gibt es zwei Instanzen von istio-ingressgateway. Die Instanz mit 25m in der Spalte AGE wird beendet. Alle anderen Komponenten werden neu installiert.

Sidecar-Proxys aktualisieren

Für alle Arbeitslasten, die vor dem Downgrade auf Ihrem Cluster ausgeführt wurden, muss der Sidecar-Proxy neu eingefügt werden, damit sie die aktuelle Anthos Service Mesh-Version haben.

Mit der automatischen Sidecar-Einfügung können Sie die Sidecar-Dateien für vorhandene Pods mit einem Pod-Neustart aktualisieren. Wie Sie Pods neu starten, hängt davon ab, ob sie als Teil einer Bereitstellung erstellt wurden.

  1. Starten Sie die Bereitstellung neu, wenn Sie eine Bereitstellung verwendet haben. Dadurch werden alle Pods mit Sidecar-Dateien neu gestartet:

    kubectl rollout restart deployment -n YOUR_NAMESPACE

    Wenn Sie keine Bereitstellung verwendet haben, löschen Sie die Pods, und sie werden automatisch mit Sidecar-Dateien neu erstellt:

    kubectl delete pod -n YOUR_NAMESPACE --all
  2. Prüfen Sie, ob alle Pods im Namespace Sidecar-Dateien eingefügt haben:

    kubectl get pod -n YOUR_NAMESPACE

    In der folgenden Beispielausgabe des vorherigen Befehls sehen Sie, dass die Spalte READY zwei Container für jede Ihrer Arbeitslasten enthält: den primären Container und den Container für den Sidecar-Proxy.

    NAME                    READY   STATUS    RESTARTS   AGE
    YOUR_WORKLOAD           2/2     Running   0          20s
    ...