Verwaltetes Cloud Service Mesh deinstallieren
Auf dieser Seite wird erläutert, wie Sie verwaltetes Cloud Service Mesh deinstallieren. Wenn Sie clusterinternes Cloud Service Mesh deinstallieren, folgen Sie stattdessen der Anleitung zur clusterinternen Deinstallation.
Wenn Sie eine Legacy-Einrichtung mit mehreren bereitgestellten Steuerungsebenen verwenden, werden durch das Befolgen dieser Anleitung alle bereitgestellten Steuerungsebenen entfernt.
Von asmcli verwaltete Steuerungsebenen werden für die Deinstallation nicht unterstützt, aber
Cluster mit Steuerungsebenen, die entweder von asmcli --managed oder der Mesh API verwaltet werden,
werden unterstützt. Wenn Sie sich nicht sicher sind, welche Steuerungsebene verwendet wird, führen Sie den folgenden Befehl aus:
kubectl get controlplanerevisions -n istio-system -l 'app.kubernetes.io/created-by!=asmcli'
Die Deinstallation wird unterstützt, wenn eines der in der Ausgabe aufgeführten Elemente vorhanden ist.
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 Multi-Cluster-Funktion, wenn auf dem Cluster, den Sie deinstallieren, andere Cluster die Endpunkterkennung ausführen.
kubectl patch configmap/asm-options -n istio-system --type merge -p '{"data":{"multicluster_mode":"manual"}}'Suchen Sie nach Secrets, die bereinigt werden müssen, und löschen Sie sie:
kubectl get secrets -n istio-system -l istio/multiCluster=truekubectl delete secret SECRET_NAMEDabei ist SECRET_NAME der Name des Secrets. Wiederholen Sie diesen Schritt für jedes aufgeführte Secret.
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 Sie in der Ausgabe in der Spalte
LABELSdie Optionistio.io/rev=sehen, entfernen Sie sie:kubectl label namespace YOUR_NAMESPACE istio.io/rev-Wenn Sie in der Ausgabe in der Spalte
LABELSdie Optionistio-injectionsehen, entfernen Sie sie: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.
Prüfen Sie, ob keine Proxys mit der verwalteten Steuerungsebene verbunden sind:
kubectl get pods --all-namespaces -o json | jq -r ' .items[] | select( .spec.containers[].env[]? | select(.name == "PROXY_CONFIG" and (.value | contains("\"discoveryAddress\":\"meshconfig.googleapis.com:443\""))) ) | "\(.metadata.namespace)\t\(.metadata.name)" 'Aktualisieren Sie die Spezifikation für die Mitgliedschaft des Mesh-Features auf
not-installed:gcloud alpha container fleet mesh update \ --project FLEET_PROJECT_ID \ --memberships MEMBERSHIP_NAME \ --location MEMBERSHIP_LOCATION \ --management not-installedErsetzen Sie Folgendes:
- MEMBERSHIP_NAME ist der Mitgliedschaftsname, der bei der Registrierung des Clusters bei der Flotte aufgeführt wurde.
- MEMBERSHIP_LOCATION ist der Standort Ihrer Mitgliedschaft (entweder
eine Region oder
global).
Prüfen Sie, ob der Status der Mitgliedschaft des Mesh-Features für den Status der Steuerungsebene
DISABLEDist.gcloud container fleet mesh describe --project FLEET_PROJECT_IDDie Ausgabe sieht etwa so aus:
servicemesh: controlPlaneManagement: details: - code: DISABLED details: Control Plane Management is not enabled. state: DISABLED dataPlaneManagement: details: - code: DISABLED details: Data Plane Management is not enabled. state: DISABLED state: description: 'Please see https://cloud.google.com/service-mesh/docs/install for instructions to onboard to Anthos Service Mesh.' ...Wenn der Status der Steuerungsebene
DEPROVISIONINGist, prüfen Sie nach einigen Minuten noch einmal.- Wenn der Status der Steuerungsebene
STALLEDist, wird die Deinstallation aufgrund eines internen Fehlerzustands blockiert. Wenn das Problem weiterhin besteht, wenden Sie sich an den Support.
- Wenn der Status der Steuerungsebene
Optional können Sie Istio-CRs, Istio-CRDs, die ConfigMap „istio-(revision)“, die ConfigMap „asm-options“ und den Namespace
istio-systementfernen, um das Service Mesh aus dem Cluster zu entfernen oder in einem anderen mit der 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-namespacesIstio-CRDs entfernen:
kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl deleteDie ConfigMap „istio-(revision)“ entfernen: 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 (
asm-managed,asm-managed-stableoderasm-managed-rapid).Die ConfigMap „asm-options“ entfernen:
kubectl delete configmap asm-options -n istio-systemDen Namespace
istio-systementfernen:kubectl delete namespace istio-system --ignore-not-found=truePrüfen Sie, ob die Löschvorgänge erfolgreich waren:
kubectl get nsDie Ausgabe sollte den Status
Terminatinganzeigen und wie angegeben zurückgegeben werden. Andernfalls müssen Sie möglicherweise alle verbleibenden Ressourcen in den Namespaces manuell löschen und es noch einmal versuchen.NAME STATUS AGE istio-system Terminating 71m
Wenn verwaltetes CNI auf Ihrem Cluster aktiviert war(Standardeinstellung für moderne Installationen), bereinigen Sie die CNI-Ressourcen:
Standardcluster:Suchen Sie nach der ConfigMap
istio-cni-plugin-configund löschen Sie sie:Prüfen Sie, ob die ConfigMap
istio-cni-plugin-configvorhanden ist:kubectl get configmap istio-cni-plugin-config -n kube-systemWenn sie vorhanden ist, löschen Sie die ConfigMap
istio-cni-plugin-config:kubectl delete configmap istio-cni-plugin-config -n kube-system
Autopilot-Cluster:GKE Autopilot beschränkt Änderungen an Ressourcen im Namespace
kube-system. Wenn Sie Ihren Autopilot-Cluster nach der Deinstallation von verwaltetem Cloud Service Mesh behalten möchten, wenden Sie sich an den Support, damit dieistio-cni-plugin-configConfigMap auskube-systementfernt wird.
Wenn Sie Certificate Authority Service verwenden, bereinigen Sie die Berechtigungen und den CA-Pool , die beim Konfigurieren von Certificate Authority Service für verwaltetes Cloud Service Mesh erstellt wurden.
Wenn Sie die Standardkonfiguration für verwaltetes Cloud Service Mesh für Flotten aktiviert haben und sie für zukünftige Cluster deaktivieren möchten, deaktivieren Sie sie. Sie können diesen Schritt überspringen, wenn Sie die Deinstallation nur für einen einzelnen Cluster durchführen.
gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_IDDabei ist FLEET_PROJECT_ID die ID Ihres Flotten-Hostprojekts.
Wenn Sie Cloud Service Mesh auf Flotteneebene 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 Ihres Flotten-Hostprojekts.
Nach Abschluss dieser Schritte werden alle Cloud Service Mesh-Komponenten, einschließlich Proxys, Zertifizierungsstellen sowie RBAC-Rollen und -Bindungen, systematisch aus dem Cluster entfernt. Während der Installation wird einem Google-eigenen Dienstkonto die erforderliche Berechtigung erteilt, um die Service Mesh-Ressourcen im Cluster einzurichten. Bei der Deinstallation werden diese Berechtigungen nicht widerrufen, sodass Cloud Service Mesh in Zukunft nahtlos wieder aktiviert werden kann.