Clusterinternes Cloud Service Mesh deinstallieren

Auf dieser Seite wird beschrieben, wie Sie clusterinternes Cloud Service Mesh deinstallieren, wenn Sie die Istio APIs verwenden. Wenn Sie Compute Engine APIs verwenden, sind keine Schritte erforderlich. Die Unterschiede 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 Deinstallation von verwaltetem Cloud Service Mesh.

Wenn Sie von clusterintern zu verwaltet 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 validatingwebhooksconfiguration und mutatingwebhookconfiguration aus Ihrem Cluster, falls 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“, die Namespaces istio-system und asm-system, um Service Mesh aus dem Cluster zu entfernen oder in einem anderen mit der 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. Istio-CRDs entfernen:

      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. Namespace istio-system entfernen:

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

      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, stellen Sie sicher, dass jeder Cluster in Ihrer Flotte abgemeldet ist.

  8. Wenn Sie Cloud Service Mesh auf Flotteneebene nicht mehr verwenden möchten, deaktivieren Sie die Service Mesh-Funktion für Ihr Flotten-Hostprojekt.

     gcloud container hub mesh disable --project FLEET_PROJECT_ID
    

    Dabei ist FLEET_PROJECT_ID die ID Ihres 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 erhält ein Google-eigenes Dienstkonto die erforderlichen Berechtigungen, um die Service Mesh-Ressourcen im Cluster einzurichten. Diese Deinstallationsanleitung widerruft diese Berechtigungen nicht, sodass Cloud Service Mesh in Zukunft nahtlos reaktiviert werden kann.