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.
Auswirkungen des Entfernens von Cloud Service Mesh
Bevor Sie Cloud Service Mesh deinstallieren, sollten Sie sich überlegen, welche Funktionen aus Ihrem Cluster und Ihren Arbeitslasten entfernt werden. Wenn Sie Cloud Service Mesh-Proxys aus Ihren Arbeitslasten entfernen und sie neu starten, kehren Ihre Anwendungen zum standardmäßigen Kubernetes-Netzwerkverhalten zurück.
Sicherheit
Wenn Sie Cloud Service Mesh entfernen, gehen die folgenden Sicherheitsfunktionen verloren:
- Verschlüsselung mit gegenseitigem TLS (mTLS): Der Traffic zwischen Diensten wird nicht mehr mit vom Mesh verwalteten mTLS-Zertifikaten verschlüsselt.
- Autorisierungsrichtlinien: Die benutzerdefinierten Mesh-Ressourcen
AuthorizationPolicywerden nicht mehr erzwungen. Sie müssen Kubernetes-NetworkPolicy-Ressourcen oder die Authentifizierung und Autorisierung auf Anwendungsebene konfigurieren, um den Traffic einzuschränken.
Beobachtbarkeit
Wenn Sie Cloud Service Mesh entfernen, gehen die folgenden Observability-Funktionen verloren:
- Telemetrie und Messwerte: Die automatische Erfassung von Layer 7-Messwerten (z. B. Anfrageraten, Fehlerraten und Latenz) wird beendet. Mesh-Telemetrie wird nicht mehr automatisch in Cloud Monitoring aufgenommen. Standard-GKE-Messwerte sind nicht betroffen.
- Dashboards und SLOs: Vorkonfigurierte Cloud Service Mesh-Dashboards und SLO-Monitoring (Service Level Objective) in derGoogle Cloud Console werden nicht mehr mit Daten gefüllt.
- Zugriffsprotokollierung und ‑tracing: Sidecar-Proxy-Zugriffsprotokolle mit Client-mTLS-Identitäten und automatisierten verteilten Traces werden nicht mehr generiert.
Service Discovery und Netzwerkresilienz
Wenn Sie Cloud Service Mesh entfernen, gehen die folgenden Netzwerk- und Resilienzfunktionen verloren:
- Netzwerkresilienz: Arbeitslasten verlieren Resilienzfunktionen auf Sidecar-Ebene, einschließlich automatischer Wiederholungsversuche, konfigurierbarer Zeitüberschreitungen für Anfragen, Leistungsschaltern, Ausreißererkennung und Verwaltung von Verbindungspools. Anwendungen müssen Verbindungsfehler und Wiederholungsversuche direkt verwalten.
- Multi-Cluster Service Discovery: Die clusterübergreifende Endpunkterkennung und das Routing über mehrere Cluster in einer Flotte funktionieren nicht mehr über das Mesh. Dienste können Endpunkte nur in ihrem lokalen Cluster über Standard-DNS erkennen.
Cloud Service Mesh deinstallieren
Mit den folgenden Befehlen können Sie alle Cloud Service Mesh-Komponenten deinstallieren.
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.
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-labelsDie 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
LABELSistio.io/rev=angezeigt wird, entfernen Sie dies:kubectl label namespace YOUR_NAMESPACE istio.io/rev-Wenn in der Ausgabe unter der Spalte
LABELSistio-injectionangezeigt wird, entfernen Sie dies:kubectl label namespace YOUR_NAMESPACE istio-injection-Wenn Sie weder die Labels
istio.io/revnochistio-injectionsehen, wurde die automatische Einfügung im Namespace nicht aktiviert.Starten Sie Ihre Arbeitslasten mit eingefügten Sidecar-Dateien neu, um die Proxys zu entfernen.
Löschen Sie die
validatingwebhooksconfiguration- undmutatingwebhookconfiguration-Ressourcen aus Ihrem Cluster, sofern vorhanden:kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot,istio.io/owned-by!=mesh.googleapis.comSobald 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 --purgeWenn keine anderen Steuerungsebenen vorhanden sind, können Sie den Namespace
istio-systemlö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.Optional: Entfernen Sie Istio-CRs, Istio-CRDs, die ConfigMap „istio-(revision)“, die ConfigMap „asm-options“ sowie die Namespaces
istio-systemundasm-system, um das Service Mesh aus dem Cluster zu entfernen oder in einem anderen Istio-API-kompatiblen Service Mesh zu verwenden.Istio-CRs entfernen:
kubectl delete gateways,virtualservices,destinationrules,serviceentries,envoyfilters,sidecars,peerauthentications,requestauthentications,authorizationpolicies,telemetries,wasmplugins,proxyconfigs --all --all-namespacesEntfernen Sie Istio-CRDs:
kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl deleteEntfernen Sie die ConfigMap „istio-(revision)“. Sie können diesen Schritt überspringen, wenn Sie den Namespace
istio-systemlöschen.kubectl delete configmap istio-RELEASE_CHANNEL -n istio-systemErsetzen Sie RELEASE_CHANNEL durch Ihre Release-Version.
Entfernen Sie den Namespace
istio-system:kubectl delete namespace istio-system --ignore-not-found=trueEntfernen Sie den Namespace
asm-system:kubectl delete namespace asm-system --ignore-not-found=truePrü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 ```
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.
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_IDDabei 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.