Cloud Service Mesh deinstallieren

Auf dieser Seite wird erläutert, wie Sie Cloud Service Mesh deinstallieren, wenn Sie die Istio APIs verwenden. Wenn Sie Compute Engine APIs verwenden, sind keine Schritte erforderlich. Informationen zu den Unterschieden finden Sie in der Übersicht zu Cloud Service Mesh.

Cloud Service Mesh deinstallieren

Deinstallieren Sie mit den folgenden Befehlen alle Cloud Service Mesh-Komponenten. 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 angewendet oder die Standardkonfiguration der Flotte verwendet haben):

      gcloud container fleet mesh update \
         --management manual \
         --memberships MEMBERSHIP_NAME \
         --project FLEET_PROJECT_ID \
         --location MEMBERSHIP_LOCATION
    

    Ersetzen Sie Folgendes:

    • MEMBERSHIP_NAME ist der Name der Mitgliedschaft, der aufgeführt ist, als Sie bestätigt haben, dass Ihr Cluster bei der Flotte registriert wurde.
    • MEMBERSHIP_LOCATION ist der Standort Ihrer Mitgliedschaft (entweder eine Region oder global).
  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 das verwaltete Cloud Service Mesh verwenden, prüfen Sie, welche Implementierung der Steuerungsebene in Ihrem Cluster vorhanden ist. Dadurch können Sie in den weiteren Schritten relevante Ressourcen löschen.

  6. Wenn Sie das verwaltete Cloud Service Mesh verwenden, entfernen Sie alle controlplanerevision-Ressourcen im Cluster:

    kubectl delete controlplanerevision asm-managed asm-managed-rapid asm-managed-stable -n istio-system --ignore-not-found=true
    
  7. Löschen Sie Webhooks aus Ihrem Cluster, sofern vorhanden.

    Cloud Service Mesh im Cluster

    validatingwebhooksconfiguration und mutatingwebhookconfiguration löschen.

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

    Verwaltetes Cloud Service Mesh

    A. Löschen Sie die validatingwebhooksconfiguration:

    kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp
    

    B. Alle mutatingwebhookconfiguration löschen.

    kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
    
  8. Sobald alle Arbeitslasten gestartet und keine Proxys beobachtet wurden, können Sie die Steuerungsebene im Cluster sicher löschen, um die Abrechnung zu beenden.

    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 Cloud Service Mesh-Ressourcen zu entfernen. Andernfalls löschen Sie die Dienste, die den Cloud Service Mesh-Überarbeitungen entsprechen. Dadurch werden freigegebene Ressourcen wie CRDs nicht gelöscht.

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

     kubectl delete namespace istio-system asm-system --ignore-not-found=true
    
  10. 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
    
  11. Wenn Sie Ihre Cluster löschen oder sie bereits gelöscht haben, achten Sie darauf, dass jeder Cluster bei Ihrer Flotte nicht registriert ist.

  12. Wenn Sie die verwaltete Flottenstandardkonfiguration für Cloud Service Mesh aktiviert haben und sie für zukünftige Cluster deaktivieren möchten, deaktivieren Sie sie. Wenn Sie die Deinstallation nur von einem einzelnen Cluster aus durchführen, können Sie diesen Schritt überspringen.

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

    Dabei ist FLEET_PROJECT_ID die ID Ihres Flottenhostprojekts.

  13. Wenn Sie das verwaltete Cloud Service Mesh aktiviert haben, prüfen und löschen Sie verwaltete Ressourcen, sofern vorhanden:

    1. Löschen Sie das Deployment mdp-controller:

        kubectl delete deployment mdp-controller -n kube-system
      
    2. Wenn Sie die Implementierung der TRAFFIC_DIRECTOR-Steuerungsebene haben, bereinigen Sie transparente Systemdiagnose-Ressourcen. Normalerweise werden diese Elemente automatisch entfernt. Sie können jedoch sicherstellen, dass sie bereinigt werden, indem Sie Folgendes tun:

      1. Löschen Sie das Daemonset snk.

           kubectl delete daemonset snk -n kube-system
        
      2. Löschen Sie die Firewallregel.

           gcloud compute firewall-rules delete gke-csm-thc-FIRST_8_CHARS_OF_CLUSTER_ID
        

        Ersetzen Sie Folgendes:

        • FIRST_8_CHARS_OF_CLUSTER_ID sind die ersten acht Zeichen der Cluster-ID für Ihren spezifischen Cluster.
    3. Prüfen Sie, ob die Configmap istio-cni-plugin-config vorhanden ist:

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

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

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

        kubectl delete daemonset istio-cni-node -n kube-system
      
  14. Wenn Sie das verwaltete Cloud Service Mesh deinstallieren und Ihren Cluster behalten, wenden Sie sich an den Support, damit alle Google Cloud-Ressourcen bereinigt werden. Der Namespace und die Konfigurationszuordnungen von istio-system können auch weiterhin neu erstellt werden, wenn Sie diesen Schritt nicht ausführen.

Nach Abschluss dieser Schritte werden alle Cloud Service Mesh-Komponenten, einschließlich Proxys, clusterinternen Zertifizierungsstellen sowie RBAC-Rollen und -Bindungen, systematisch aus dem Cluster entfernt. Während der Installation werden einem Google-eigenen Dienstkonto die erforderlichen Berechtigungen zum Einrichten der Service Mesh-Ressourcen im Cluster gewährt. Durch diese Deinstallationsanleitung werden diese Berechtigungen nicht aufgehoben, sodass Cloud Service Mesh in Zukunft nahtlos wieder aktiviert werden kann.