IBM Cloud Docs
Aktualisieren von Istio

Aktualisieren von Istio

Verwenden Sie istioctl nicht, um die Version von Istio zu aktualisieren, die durch das verwaltete Add-on installiert wird. Wenn das verwaltete Istio-Add-on aktualisiert wird, wird auch die Istio-Version aktualisiert.

Aktualisierung auf eine kleinere Version des Istio-Add-ons

IBM Cloud hält alle Ihre Istio-Komponenten auf dem aktuellen Stand, indem Patchaktualisierungen auf die neueste Version von Istio, die von IBM Cloud Kubernetes Service unterstützt wird, durch automatische Rollouts zur Verfügung gestellt werden. Die unterstützten Versionen sind von IBM Cloud getestet und für die Verwendung in IBM Cloud Kubernetes Service zugelassen.

Vorbereitende Schritte:

Beachten Sie bei der Aktualisierung von Nebenversionen Folgendes:

  • Sie können das Istio-Add-on nur manuell um jeweils eine Versionsstife aktualisieren. Um das Istio-Add-on um zwei oder mehr Versionen zu aktualisieren, können Sie den manuellen Aktualisierungsprozess wiederholen oder das Add-on deinstallieren und dann die neuere Version installieren.

  • Sie können Ihr verwaltetes Istio-Add-on nicht auf eine frühere Version zurücksetzen. Um zu einer früheren Version zurückzukehren, müssen Sie das Add-on deinstallieren und dann die frühere Version installieren.

  • Wenn Sie die Komponenten zu Steuerung von Istio im Namensbereich istio-system auf die neueste Nebenversion aktualisieren, kann es dabei zu Änderungen mit Unterbrechung kommen. Prüfen Sie die folgenden Änderungen, die bei einer Aktualisierung der Nebenversion auftreten.

    • Beim Ausrollen von Aktualisierungen zu den Pods der Steuerebene werden die Pods neu erstellt. Die Istio-Steuerebene ist erst nach Abschluss der Aktualisierung vollständig verfügbar.
    • Die Istio-Datenebene funktioniert auch während der Aktualisierung weiter. Es kann jedoch vorkommen, dass bei einem Teil des Datenverkehrs zu Apps im Servicenetz vorübergehend kurz Unterbrechungen auftreten.
    • Die externe IP-Adresse für die Lastausgleichsfunktion istio-ingressgateway ändert sich bei oder nach der Aktualisierung nicht.

So aktualisieren Sie die Nebenversion des Istio-Add-ons:

  1. Prüfen Sie die aktuelle Version Ihres Istio-Add-ons.

    kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}'
    
  2. Überprüfen Sie, welche Versionen für das Istio-Add-on verfügbar sind.

    ibmcloud ks addon-versions
    
  3. Überprüfen Sie die Änderungen, die in jeder Version im Änderungsprotokoll des Istio-Add-ons enthalten sind.

  4. Wenn Sie ein Upgrade von Version 1.11 auf Version 1.12 durchführen und Ihre Istio-Komponenten mit Version 1.10 oder niedriger bereitgestellt wurden:

    1. Führen Sie den Befehl aus, um die Konfigurationsdetails für Ihren mutierenden Webhook abzurufen.

      kubectl get mutatingwebhookconfigurations
      

      Beispielausgabe

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   5          32m
      
    2. Suchen Sie in der Ausgabe nach istio-sidecar-injector und überprüfen Sie die Spalte WEBHOOKS. Wenn 5 oder mehr Webhooks vorhanden sind, führen Sie den folgenden Befehl aus, um die zusätzlichen Webhooks zu löschen.

      kubectl delete mutatingwebhookconfigurations istio-sidecar-injector && kubectl rollout restart deploy addon-istio-operator -n ibm-operators
      

      Beispielausgabe

      mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted
      
    3. Überprüfen Sie, dass die zusätzlichen Webhooks gelöscht wurden. Rufen Sie die Konfigurationsdetails für Ihre mutierenden Webhooks ab und überprüfen Sie, dass 4 istio-sidecar-injector-Webhooks vorhanden sind.

      kubectl get mutatingwebhookconfigurations
      

      Beispielausgabe

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   4          60s
      
    4. Führen Sie den Befehl aus, um die Konfigurationsdetails Ihrer Webhook-Überprüfung abzurufen.

      kubectl get validatingwebhookconfigurations
      

      Beispielausgabe

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          66s
      istiod-istio-system            1          31m
      
    5. Überprüfen Sie die Ausgabe. Wenn der Webhook istiod-istio-system aufgelistet wird, löschen Sie ihn durch Ausführen des folgenden Befehls.

      kubectl delete ValidatingWebhookConfiguration istiod-istio-system
      

      Beispielausgabe

      validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted
      
    6. Überprüfen Sie, dass der Webhook istiod-istio-system nicht mehr aufgelistet wird.

      kubectl get validatingwebhookconfigurations
      

      Beispielausgabe

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          2m
      
  5. Aktualisieren Sie das Istio-Add-on.

    ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID>
    
  6. Stellen Sie sicher, dass die Aktualisierung vollständig ausgeführt wurde und abschlossen ist, bevor Sie fortfahren.

    Der Aktualisierungsprozess kann bis zu 20 Minuten in Anspruch nehmen.

    1. Stellen Sie sicher, dass das Istio-Add-on den Zustand (Health State) normal aufweist und sich im Status (Health Status) der Bereitschaft (Addon Ready) befindet. Wenn als Status der Wert updating angegeben wird, bedeutet dies, dass der Aktualisierungsvorgang noch nicht abgeschlossen ist.

      ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
      
    2. Stellen Sie sicher, dass für die Komponentenpods der Steuerebene im Namensbereich istio-system der STATUS mit dem Wert Running als aktiv angegeben wird.

      kubectl get pods -n istio-system
      
      NAME                                                     READY   STATUS    RESTARTS   AGE
      istio-system    istio-egressgateway-6d4667f999-gjh94     1/1     Running     0          61m
      istio-system    istio-egressgateway-6d4667f999-txh56     1/1     Running     0          61m
      istio-system    istio-ingressgateway-7bbf8d885-b9xgp     1/1     Running     0          61m
      istio-system    istio-ingressgateway-7bbf8d885-xhkv6     1/1     Running     0          61m
      istio-system    istiod-5b9b5bfbb7-jvcjz                  1/1     Running     0          60m
      istio-system    istiod-5b9b5bfbb7-khcht                  1/1     Running     0          60m
      
  7. Aktualisieren Sie Ihren istioctl-Client sowie die Sidecars.

Aktualisierung des istioctl-Clients und der Sidecars

Aktualisieren Sie bei jeder Aktualisierung des über Istio verwalteten Add-ons Ihren Client istioctl sowie die Istio-Sidecars Ihrer App.

Die Patchversion Ihres Add-ons könnte zum Beispiel automatisch von IBM Cloud Kubernetes Service aktualisiert werden oder Sie könnten die Nebenversion des Istio-Add-ons aktualisieren. In jeden Fall müssen Sie Ihren istioctl-Client und die bereits vorhandenen Istio-Sidecars Ihrer App so aktualisieren, dass sie mit der Istio-Version des Add-ons übereinstimmen.

  1. Rufen Sie die Version Ihres istioctl-Clients sowie der Komponenten der Steuerebene des Istio-Add-ons ab.

    istioctl version --short=false
    

    Beispielausgabe

    client version: version.BuildInfo{Version:"1.11.2"}
    pilot version: version.BuildInfo{Version:1.23.5}
    pilot version: version.BuildInfo{Version:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-vp97p.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-qkhgm.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-dffhq.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"httpbin-74fb669cc6-svc8x.default", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-cs9r9.istio-system", IstioVersion:1.23.5}
    ...
    
  2. Vergleichen Sie in der Ausgabe die Angabe für client version (istioctl) mit der Versionsangabe für die Komponenten der Istio-Steuerebene, wie zum Beispiel pilot version. Gehen Sie wie folgt vor, wenn die Versionen der Komponenten auf der Steuerebene und von client version nicht übereinstimmen:

    1. Laden Sie den istioctl-Client derselben Version herunter, die auch die Komponenten der Steuerebene aufweisen.

      curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
      
    2. Navigieren Sie zum Istio-Paketverzeichnis.

      cd istio-1.23.5
      
    3. Linux- und Mac OS-Benutzer: Fügen Sie den Client istioctl zu Ihrer Systemvariablen PATH hinzu.

      export PATH=$PWD/bin:$PATH
      
  3. Vergleichen Sie in der Ausgabe von Schritt 1 für jeden Pod der Datenebene die Angabe für die Pilotversion (pilot version) mit der Versionsangabe für die Datenebene (data plane version).

    • Wenn die Angaben für die Pilotversion (pilot version) und die Version der Datenebene (data plane version) übereinstimmen, sind keine weiteren Aktualisierungen erforderlich.
    • Wenn pilot version und data plane version nicht übereinstimmen, starten Sie Ihre Bereitstellungen für die Pods der Datenebene erneut, in denen die alte Version ausgeführt wird. Der Name und der Namensbereich des Pods werden in jedem Eintrag als data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"} aufgelistet.
    kubectl rollout restart deployment <deployment> -n <namespace>
    

Aktualisierung von einer nicht unterstützten Version des Istio-Add-ons

Aktualisieren Sie Ihre Istio-Komponenten auf die neueste Patch-Version, die von IBM Cloud Kubernetes Service unterstützt wird.

Umstellung vom Istio-Add-on auf Community-Istio

Sie können auf das Community-Istio migrieren, anstatt das verwaltete Istio-Add-on zu verwenden.

Vorbereitende Schritte

Schritt 1: Deaktivieren des Istio-Add-ons über die Konsole

Deaktivieren Sie das Add-on über die Konsole oder CLI.

  1. Klicken Sie in Ihrem Cluster-Dashboard auf den Namen des Clusters, aus dem Sie das Istio-Add-on entfernen möchten.

  2. Navigieren Sie zum Abschnitt Add-ons.

  3. Klicken Sie auf der Karte für verwaltete Istio-Add-ons auf das Symbol für das Aktionsmenü.

  4. Klicken Sie auf Deinstallieren. Das verwaltete Istio-Add-on ist in diesem Cluster deaktiviert.

  5. Vergewissern Sie sich auf der Karte für verwaltete Istio-Add-ons, dass das Add-on, das Sie deinstalliert haben, nicht mehr aufgelistet wird.

Schritt 1: Deaktivieren der Istio-Add-ons über die CLI

Deaktivieren Sie das Add-on und stellen Sie sicher, dass keine weiteren Istio-Add-ons vorhanden sind.

  1. Inaktivieren Sie das istio-Add-on.
    ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
    
  2. Überprüfen Sie, ob alle verwalteten Istio-Add-ons in diesem Cluster inaktiviert wurden. In der Ausgabe werden keine Istio-Add-ons zurückgegeben.
    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    
  3. Warten Sie 10 Minuten, bevor Sie mit dem nächsten Schritt fortfahren. Das gibt uns Zeit, den istio-Operator zu entschärfen.

Schritt 2: Verkleinern des Istio-Operators

Verkleinern Sie den Istio-Operator-Einsatz.

Führen Sie den folgenden Befehl aus:

kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0

Schritt 3: Einsparung von Ressourcen

Speichern Sie alle Ressourcen, die Sie im Namespace istio-system erstellt oder geändert haben, sowie alle Kubernetes Ressourcen, die automatisch durch benutzerdefinierte Ressourcendefinitionen (CRDs) erzeugt wurden.

  1. Speichern Sie die managed-istio-custom ConfigMap, um ein Problem zu beheben oder das Add-on später erneut zu installieren.

    kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
    
  2. Speichern Sie alle IstioOperator CRs (IOPs).

    • Liste der IOP-Ressourcen:
      kubectl get iop -A
      
    • Entfernen Sie für jede aufgelistete IOP-Ressource den Finalizer. Beispiel unter Verwendung des managed-istio IOP:
      kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]'
      
    • Speichern Sie jede der aufgeführten IOP-Ressourcen in einer Datei:
      kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
      
  3. Warten Sie 10 Minuten, bevor Sie mit dem nächsten Schritt fortfahren.

Schritt 4: Ändern des Installationsprogramms für die IOPs

Löschen Sie alle Istio-Operator (IOP)-Ressourcen, z. B. für ein benutzerdefiniertes Ingress-Gateway.

  1. Vergewissern Sie sich, dass Ihr istioctl cli-Tool über die erforderliche Patch-Version verfügt.

    istioctl version
    
  2. Führen Sie für jede IOP-Datei, die Sie im vorherigen Schritt gespeichert haben, den Befehl upgrade aus.

    istioctl upgrade -f <filename>.yaml
    

Schritt 5: Entfernen des Istio-Operators und der IOPs

Löschen Sie den Istio-Operator-Einsatz, das Dienstkonto, die Clusterrollenbindung, die Clusterrolle und alle IOPs.

  1. Führen Sie die folgenden Befehle aus, um den Einsatz von istio operator zu löschen:

    kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrole addon-istio-operator --ignore-not-found=true
    
  2. Löschen Sie die IOPs.

    • Liste der IOP-Ressourcen:
      kubectl get iop -A
      
    • Löschen Sie jede aufgelistete IOP-Ressource:
      kubectl delete IstioOperator <resource_name> -n <namespace>
      

Schritt 6: Entfernen der ConfigMap

Da die Website ConfigMap zuvor gespeichert wurde, kann sie entfernt werden.

Entfernen Sie die managed-istio-custom ConfigMap.

kubectl delete cm -n ibm-operators managed-istio-custom

Die Entfernung des Add-ons ist abgeschlossen und Sie können die Community Istio weiterhin nutzen und bei Bedarf aktualisieren.