Istio on GKE deaktivieren oder deinstallieren

In dieser Anleitung erfahren Sie, wie Sie das Add-on "Istio on GKE" entweder deaktivieren oder vollständig deinstallieren.

Wenn Sie das Add-on "Istio on GKE“ deaktivieren, wird die Add-on-Verwaltung von Istio im Cluster deaktiviert, die Installation und Konfigurationen von Istio werden jedoch beibehalten. Wenn Sie das Add-on "Istio on GKE“ deaktivieren, verwaltet Google Ihre Istio-Installation im Cluster nicht mehr. Sie sind für die Verwaltung der Konfiguration und des Lebenszyklus von Istio im Cluster verantwortlich. Folgen Sie der Anleitung unter Add-on "Istio on GKE" deaktivieren, um das Add-on "Istio on GKE“ zu deaktivieren.

Anstatt das Add-on zu deaktivieren, können Sie es auch vollständig deinstallieren. Durch Deinstallieren des Add-ons "Istio on GKE“ werden Istio und alle zugehörigen Konfigurationen vollständig aus dem Cluster entfernt. Folgen Sie der Anleitung im Abschnitt Istio aus einem Cluster deinstallieren, um das Add-on "Istio on GKE“ zu deinstallieren.

Add-on "Istio on GKE" deaktivieren

Sie können das Add-on "Istio on GKE" deaktivieren, wenn Google Ihre Istio-Installation nicht mehr verwalten soll. Ihre Istio-Installation und -Konfigurationen bleiben dabei erhalten. Sie müssen dazu die GKE-Version 1.17.17-gke.3100+, 1.18.16-gke.1600+ oder 1.19.8-gke.1600+ und höher ausführen. Durch das Deaktivieren des Add-ons "Istio on GKE" in früheren GKE-Versionen wird Istio (die Istio-Installation und -Konfigurationen) vollständig deinstalliert, was zu Ausfallzeiten bei Ihren Diensten führen kann.

  1. Deaktivieren Sie Istio on GKE mit dem folgenden Befehl:

    gcloud beta container clusters update my-cluster --project=$PROJECT_ID \
      --update-addons=Istio=DISABLED
    

Istio aus einem Cluster deinstallieren

Am einfachsten können Sie das Add-on „Istio on GKE“ entfernen, wenn Sie den Cluster löschen. Wenn der Cluster jedoch eine vorhandene Anwendung enthält, die beibehalten werden muss, sind für die Deaktivierung von Istio die folgenden Schritte erforderlich:

  1. Achten Sie darauf, dass der mTLS-Standardmodus auf Permissive mTLS eingestellt ist.
  2. Traffic vom Istio Ingress Gateway wegleiten
  3. Deaktivieren Sie die automatische Injektion von Sidecar-Dateien, falls diese aktiviert ist.
    kubectl label namespace your-namespace istio-injection=disabled
    
  4. Starten Sie die Anwendungs-Pods neu, z. B. mithilfe eines rollierenden Neustarts, um die Envoy-Sidecars zu entfernen.
  5. Entfernen Sie die Istio-Steuerungsebene mit gcloud:
    gcloud beta container clusters update my-cluster --project=$PROJECT_ID \
      --update-addons=Istio=DISABLED
    
  6. Löschen Sie die IstioOperator CustomResource:

    kubectl delete istiooperator -n istio-system istio-1-6-11-gke-0
    

    Je nach Clusterversion müssen Sie möglicherweise istio-1-6-11-gke-0 durch den Namen der im Cluster installierten CustomResource ersetzen. Führen Sie folgenden Befehl aus, um den Namen abzurufen:

    kubectl get istiooperator -n istio-system\
    
  7. Warten Sie einige Minuten, bis der Istio-Operator alle installierten Ressourcen gelöscht hat.

  8. Löschen Sie den Namespace istio-system, falls vorhanden:

    kubectl delete ns istio-system

  9. Löschen Sie die verbleibenden Istio-Clusterressourcen:

    for i in $(kubectl get clusterrole,clusterrolebinding,crd | grep istio | cut -f1 -d' '); do kubectl delete $i; done

  10. Sie haben das Istio on GKE-Add-on erfolgreich deinstalliert. Es gibt jedoch zugehörige Ressourcen, die absichtlich für sichere Migrationen gekennzeichnet sind und manuell aus dem Cluster gelöscht werden müssen:

    kubectl delete mutatingwebhookconfiguration istio-sidecar-injector
    kubectl delete clusterrole istio-citadel-istio-system istio-galley-istio-system istio-mixer-istio-system istio-operator istio-pilot-istio-system istio-reader istio-security-post-install-istio-system istio-sidecar-injector-istio-system
    kubectl delete clusterrolebinding istio-citadel-istio-system istio-galley-admin-role-binding-istio-system istio-mixer-admin-role-binding-istio-system istio-multi istio-operator istio-pilot-istio-system istio-security-post-install-role-binding-istio-system istio-sidecar-injector-admin-role-binding-istio-system
    kubectl delete deployment istio-operator -n istio-operator
    kubectl delete service istio-operator -n istio-operator
    kubectl delete ns istio-operator