Anthos Service Mesh lokal aktualisieren

In dieser Anleitung wird erläutert, wie Sie Anthos Service Mesh von Version 1.5.4+ or 1.6.4+ auf Version 1.6.14 in GKE on VMware 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 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 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.

Umgebung einrichten

Sie benötigen die folgenden Tools auf dem Computer, von dem Sie Anthos Service Mesh installieren möchten. 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 die erforderliche Version von 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)"
    
  5. Wechseln Sie den Kontext zu Ihrem Nutzercluster:

    kubectl config use-context CLUSTER_NAME
  6. 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 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.6.14-asm.2-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.14-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-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.14-asm.2-linux-amd64.tar.gz

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

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

    Mit dem Befehl wird in Ihrem aktuellen Arbeitsverzeichnis istio-1.6.14-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.6.14-asm.2
  13. Fügen Sie die Tools der Einfachheit halber im Verzeichnis /bin Ihrem PATH hinzu.
    export PATH=$PWD/bin:$PATH

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 bereitzustellen. Wenn Sie ein unterstütztes optionales Feature aktivieren möchten, fügen Sie in der folgenden Befehlszeile -f und den YAML-Dateinamen ein. Weitere Informationen finden Sie unter Optionale Features aktivieren.

istioctl install \
  --set profile=asm-multicloud \
  --set revision=asm-1614-2

Mit dem Argument --set revision wird das Label istio.io/rev zu istiod hinzugefügt. 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-asm-1614-2-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. Aktualisieren Sie Arbeitslasten, die mit der neuen Anthos Service Mesh-Version eingefügt werden:

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-1614-2 --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-1614-2 verweisen:

    kubectl get pods -n NAMESPACE -l istio.io/rev=asm-1614-2

  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-1614-2 -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 \
        --set profile=asm-multicloud \

Upgrade abschließen

Wenn Sie sicher sind, dass Ihre Anwendung wie erwartet funktioniert, entfernen Sie die alte Steuerungsebene, um das Upgrade abzuschließen:

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