Clusterinternes Cloud Service Mesh deinstallieren

Auf dieser Seite wird beschrieben, wie Sie Cloud Service Mesh im Cluster 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 Cloud Service Mesh-Übersicht.

Wenn Sie dieser Anleitung zum Deinstallieren von clusterinternem Cloud Service Mesh folgen, werden alle Konfigurationen entfernt.

Wenn Sie verwaltetes Cloud Service Mesh deinstallieren, folgen Sie stattdessen der Anleitung zur verwalteten Deinstallation.

Wenn Sie von einem clusterinternen zu einem verwalteten Controller migrieren, folgen Sie stattdessen der Migrationsanleitung.

Cloud Service Mesh deinstallieren

Mit den folgenden Befehlen können Sie alle Cloud Service Mesh-Komponenten deinstallieren.

  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 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 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.

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

  4. Löschen Sie die validatingwebhooksconfiguration- und mutatingwebhookconfiguration-Ressourcen aus Ihrem Cluster, sofern vorhanden:

      kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot,istio.io/owned-by!=mesh.googleapis.com
    
  5. 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 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. Löschen Sie andernfalls die Dienste, die den Überarbeitungen von Cloud Service Mesh entsprechen. Dadurch werden freigegebene Ressourcen wie CRDs nicht gelöscht.

  6. Optional: Entfernen Sie Istio-CRs, Istio-CRDs, die ConfigMap „istio-(revision)“, die ConfigMap „asm-options“ sowie die Namespaces istio-system und asm-system, um das Service Mesh aus dem Cluster zu entfernen oder in einem anderen Istio-API-kompatiblen Service Mesh zu verwenden.

    1. Istio-CRs entfernen:

      kubectl delete gateways,virtualservices,destinationrules,serviceentries,envoyfilters,sidecars,peerauthentications,requestauthentications,authorizationpolicies,telemetries,wasmplugins,proxyconfigs --all --all-namespaces
      
    2. Entfernen Sie Istio-CRDs:

      kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl delete
      
    3. Entfernen Sie die ConfigMap „istio-(revision)“. Sie können diesen Schritt überspringen, wenn Sie den Namespace istio-system löschen.

      kubectl delete configmap istio-RELEASE_CHANNEL -n istio-system
      

      Ersetzen Sie RELEASE_CHANNEL durch Ihre Release-Version.

    4. Entfernen Sie den Namespace istio-system:

      kubectl delete namespace istio-system --ignore-not-found=true
      
    5. Entfernen Sie den Namespace asm-system:

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

         kubectl get ns
         ```
        
        The output should indicate a `Terminating` state and return as shown,
        otherwise you might have to manually delete any remaining resources in
        the namespaces and try again.
        
        ```sh
         NAME                 STATUS       AGE
         istio-system         Terminating  71m
         asm-system           Terminating  71m
         ```
        
  7. Wenn Sie Ihre Cluster löschen oder bereits gelöscht haben, müssen Sie dafür sorgen, dass die Registrierung jedes Clusters bei Ihrer Flotte aufgehoben wird.

  8. Wenn Sie Cloud Service Mesh auf Flottenebene nicht mehr verwenden möchten, deaktivieren Sie das Service Mesh-Feature für Ihr Flotten-Hostprojekt.

     gcloud container hub mesh disable --project FLEET_PROJECT_ID
    

    Dabei ist FLEET_PROJECT_ID die ID des Flotten-Hostprojekts.

Nachdem Sie diese Schritte ausgeführt haben, werden alle Cloud Service Mesh-Komponenten, einschließlich Proxys, clusterinterner Zertifizierungsstellen sowie RBAC-Rollen und ‑Bindungen, systematisch aus dem Cluster entfernt. Während der Installation wird einem Google-eigenen Dienstkonto die erforderlichen Berechtigungen zum Einrichten der Service Mesh-Ressourcen im Cluster gewährt. Durch diese Deinstallationsanleitung werden diese Berechtigungen nicht widerrufen, sodass Cloud Service Mesh in Zukunft nahtlos reaktiviert werden kann.