Anthos Service Mesh deinstallieren

Auf dieser Seite wird erläutert, wie Sie Anthos Service Mesh deinstallieren.

Anthos Service Mesh deinstallieren

Mit den folgenden Befehlen können Sie alle Anthos Service Mesh-Komponenten deinstallieren. Mit diesen Befehlen werden auch der istio-system-Namespace und alle benutzerdefinierten Ressourcendefinitionen (Custom Resource Definitions, CRDs) gelöscht, einschließlich aller von Ihnen angewendeten CRDs.

  1. So verhindern Sie eine Unterbrechung des Anwendungstraffics:

    • Führen Sie ein Downgrade aller STRICT mTLS-Richtlinien auf PERMISSIVE aus.
    • Entfernen Sie alle AuthorizationPolicy, die den Traffic blockieren können.
  2. Deaktivieren Sie die automatische Verwaltung für diesen Cluster (unabhängig davon, ob Sie sie direkt oder über die Standardkonfiguration der Flotte angewendet haben):

      gcloud container fleet mesh update --management manual
    
  3. Deaktivieren Sie die automatische Sidecar-Einfügung für Ihre Namespaces, sofern sie aktiviert ist. Führen Sie den folgenden Befehl aus, um Namespace-Labels aufzurufen:

     kubectl get namespace YOUR_NAMESPACE --show-labels
    

    Die Ausgabe sieht in etwa so aus:

     NAME   STATUS   AGE     LABELS
     demo   Active   4d17h   istio.io/rev=asm-181-5

    Wenn in der Ausgabe unter der Spalte LABELS istio.io/rev= angezeigt wird, entfernen Sie dies:

     kubectl label namespace YOUR_NAMESPACE istio.io/rev-
    

    Wenn in der Ausgabe unter der Spalte LABELS istio-injection angezeigt wird, entfernen Sie dies:

     kubectl label namespace YOUR_NAMESPACE istio-injection-
    

    Wenn Sie weder die Labels istio.io/rev noch istio-injection sehen, wurde die automatische Einfügung im Namespace nicht aktiviert.

  4. Starten Sie Ihre Arbeitslasten mit eingefügten Sidecar-Dateien neu, um die Proxys zu entfernen.

  5. Wenn Sie ein verwaltetes Anthos Service Mesh verwenden, entfernen Sie alle controlplanerevision-Ressourcen im Cluster:

    kubectl delete controlplanerevision RELEASE_CHANNEL -n istio-system
    

    Dabei ist RELEASE_CHANNEL die von Ihnen bereitgestellte Release-Version, z. B. asm-managed, asm-managed-rapid oder asm-managed-stable.

  6. Löschen Sie Webhooks aus Ihrem Cluster, sofern vorhanden.

    Anthos Service Mesh im Cluster

    validatingwebhooksconfiguration und mutatingwebhookconfiguration löschen.

    kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot
    

    Verwaltetes Anthos Service Mesh

    A. Löschen Sie die validatingwebhooksconfiguration:

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B. Löschen Sie die mutatingwebhookconfiguration:

    kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
    
  7. Sobald alle Arbeitslasten gestartet und keine Proxys beobachtet wurden, können Sie die Steuerungsebene im Cluster sicher löschen, um die Abrechnung zu beenden. Wenn Sie eine verwaltete Steuerungsebene bereitgestellt haben, wird sie mit dem vorherigen Schritt automatisch gelöscht.

    Führen Sie den folgenden Befehl aus, um die clusterinterne Steuerungsebene zu entfernen:

    istioctl x uninstall --purge
    

    Wenn keine anderen Steuerungsebenen vorhanden sind, können Sie den Namespace istio-system löschen, um alle Anthos Service Mesh-Ressourcen zu entfernen. Löschen Sie andernfalls die Dienste, die den Überarbeitungen von Anthos Service Mesh entsprechen. Dadurch werden freigegebene Ressourcen wie CRDs nicht gelöscht.

  8. Löschen Sie die Namespaces istio-system und asm-system:

     kubectl delete namespace istio-system asm-system --ignore-not-found=true
    
  9. Prüfen Sie, ob die Löschvorgänge erfolgreich waren:

     kubectl get ns
    

    Die Ausgabe sollte den Status Terminating anzeigen und wie angegeben zurückgegeben werden. Andernfalls müssen Sie möglicherweise alle verbleibenden Ressourcen im Namespace manuell löschen und es noch einmal versuchen.

     NAME                 STATUS       AGE
     istio-system         Terminating  71m
     asm-system           Terminating  71m
    
    1. Wenn Sie Ihre Cluster löschen oder bereits gelöscht haben, achten Sie darauf, dass jeder Cluster bei Ihrer Flotte nicht registriert ist.
  10. Wenn Sie die verwaltete Standardkonfiguration der Anthos Service Mesh-Flotte aktiviert haben und sie für zukünftige Cluster deaktivieren möchten, deaktivieren Sie sie. Sie können diesen Schritt überspringen, wenn Sie nur die Deinstallation für einen einzelnen Cluster vornehmen.

     gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_ID
    

    Dabei ist FLEET_PROJECT_ID die ID Ihres Flottenhost-Projekts.

  11. Wenn Sie ein verwaltetes Anthos Service Mesh verwenden, löschen Sie das mdp-controller-Deployment:

     kubectl delete deployment mdp-controller -n kube-system
    
  12. Prüfen Sie, ob die istio-cni-plugin-config-Configmap vorhanden ist:

     kubectl get configmap istio-cni-plugin-config -n kube-system
    

    Falls vorhanden, löschen Sie die istio-cni-plugin-config-Konfigurationsmap:

     kubectl delete configmap istio-cni-plugin-config -n kube-system
    
  13. Löschen Sie das Daemonset istio-cni-node:

     kubectl delete daemonset istio-cni-node -n kube-system
    

Nach Abschluss dieser Schritte werden alle Anthos Service Mesh-Komponenten einschließlich Proxys, clusterinternen Zertifizierungsstellen sowie RBAC-Rollen und -Bindungen systematisch aus dem Cluster entfernt. Während des Installationsprozesses werden einem Google-eigenen Dienstkonto die erforderlichen Berechtigungen zum Einrichten der Service Mesh-Ressourcen im Cluster gewährt. Diese Deinstallationsanleitung widerruft diese Berechtigungen nicht, was eine nahtlose Reaktivierung von Anthos Service Mesh in Zukunft ermöglicht.