You are viewing archived v1.21 Service Mesh documentation.
Available versions
Cloud Service Mesh latest
Cloud Service Mesh 1.26 archive
Cloud Service Mesh 1.24 archive
Cloud Service Mesh 1.24 archive
Cloud Service Mesh 1.23 archive
Cloud Service Mesh 1.22 archive
Cloud Service Mesh 1.21 archive
Cloud Service Mesh 1.20 archive
Anthos Service Mesh 1.19 archive
Uninstall Cloud Service Mesh
Note: This guide only supports Cloud Service Mesh with Istio APIs and doesnot support Google Cloud APIs. For more information see,Cloud Service Mesh overview.This page explains how to uninstall Cloud Service Mesh if you are using the Istio APIs. If you are using Compute Engine APIs, no steps arenecessary. See theCloud Service Mesh overviewto understand the differences.
Warning: Following these instructions to uninstall Cloud Service Mesh removes allconfigurations regardless of control plane type (in-cluster or managed).Uninstall Cloud Service Mesh
Use the following commands to uninstall all Cloud Service Mesh components. Thesecommands also delete theistio-system namespace and all custom resourcedefinitions (CRDs), including any CRDs that you applied.
To prevent interruption of application traffic:
- Downgrade any STRICT mTLS policies to PERMISSIVE.
- Remove any AuthorizationPolicy that may block traffic.
Disable Automatic Management on this cluster (whether you applied it directly or using the fleet-default configuration):
gcloud container fleet mesh update \ --management manual \ --membershipsMEMBERSHIP_NAME \ --projectFLEET_PROJECT_ID \ --locationMEMBERSHIP_LOCATIONReplace the following:
- MEMBERSHIP_NAME is the membership name listed when youverified that your cluster was registered to the fleet.
- MEMBERSHIP_LOCATION is the location of your membership (eithera region, or
global).
Disable sidecar auto-injection on your namespace(s), if it is enabled. Run the following command to display namespace labels:
kubectlgetnamespaceYOUR_NAMESPACE--show-labelsThe output is similar to the following:
NAMESTATUSAGELABELSdemoActive4d17histio.io/rev=asm-181-5If you see
istio.io/rev=in the output under theLABELScolumn, remove it:kubectllabelnamespaceYOUR_NAMESPACEistio.io/rev-If you see
istio-injectionin the output under theLABELScolumn, remove it:kubectllabelnamespaceYOUR_NAMESPACEistio-injection-If you don't see either the
istio.io/revoristio-injectionlabels, then auto-injection wasn't enabled on the namespace.Restart your workloads that have sidecars injected to remove the proxies.
If you're using managed Cloud Service Mesh, check whichcontrol plane implementationyou have in your cluster, this will help delete relevant resources in furthersteps.
If you're using managed Cloud Service Mesh, remove all
controlplanerevisionresources in the cluster:kubectldeletecontrolplanerevisionasm-managedasm-managed-rapidasm-managed-stable-nistio-system--ignore-not-found=trueDelete webhooks from your cluster, if they exist.
In-cluster Cloud Service Mesh
Delete the
validatingwebhooksconfigurationandmutatingwebhookconfiguration.kubectldeletevalidatingwebhookconfiguration,mutatingwebhookconfiguration-loperator.istio.io/component=PilotManaged Cloud Service Mesh
A. Delete the
validatingwebhooksconfiguration.kubectldeletevalidatingwebhookconfigurationistiod-istio-system-mcpB. Delete all
Note: Use themutatingwebhookconfiguration.RELEASE_CHANNELaccording to therelease channel you provisioned.For example, Regular(istiod-asm-managed), Rapid(istiod-asm-managed-rapid), and Stable (istiod-asm-managed-stable).kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNELOnce all workloads come up and no proxies are observed, then you can safelydelete the in-cluster control plane to stop billing.
To remove the in-cluster control plane, run the following command:
istioctluninstall--purgeIf there are no other control planes, you can delete the
istio-systemnamespace to get rid of all Cloud Service Mesh resources. Otherwise, delete theservices corresponding to the Cloud Service Mesh revisions. This avoids deletingshared resources, such as CRDs.Delete the
istio-systemandasm-systemnamespaces:kubectldeletenamespaceistio-systemasm-system--ignore-not-found=trueCheck if the deletions were successful:
kubectlgetnsThe output should indicate a
Terminatingstate and return as shown, otherwise you might have to manually delete any remaining resources in the namespaces and try again.NAMESTATUSAGEistio-systemTerminating71masm-systemTerminating71mIf you will delete your clusters, or have already deleted them, ensurethat each cluster isunregistered from your fleet.
If you enabled managed Cloud Service Mesh fleet-default configuration andwant to disable it for future clusters, disable it. You can skip this stepif you're only uninstalling from a single cluster.
gcloudcontainerhubmeshdisable--fleet-default-member-config--projectFLEET_PROJECT_IDWhereFLEET_PROJECT_ID is the ID of your Fleet Host project.
If you enabled managed Cloud Service Mesh, check and delete managed resources if they present:
Note: If your cluster is anAutopilotcluster, you cannot delete resources from thekube-systemnamespace. If you're uninstalling managed Cloud Service Mesh and you're keeping yourcluster,contact Support to ensure that these resources are deleted.Delete the
mdp-controllerdeployment:kubectldeletedeploymentmdp-controller-nkube-systemIf you have the
TRAFFIC_DIRECTORcontrol plane implementation, clean up Transparent Health Check resources. Normally these are removed automatically, but you can make sure they are cleaned up by doing the following:Delete the
snkdaemonset.kubectldeletedaemonsetsnk-nkube-systemDelete the firewall rule.
gcloudcomputefirewall-rulesdeletegke-csm-thc-FIRST_8_CHARS_OF_CLUSTER_IDReplace the following:
- FIRST_8_CHARS_OF_CLUSTER_ID is the first 8 characters of theCluster ID for your specific cluster.
Check to see if the
istio-cni-plugin-configconfigmap is present:kubectlgetconfigmapistio-cni-plugin-config-nkube-systemIf present, delete the
istio-cni-plugin-configconfigmap: Warning: The network reliability of your GKE cluster may be impacted if you don't delete this configmap.kubectldeleteconfigmapistio-cni-plugin-config-nkube-systemDelete the
istio-cni-nodedaemonset:kubectldeletedaemonsetistio-cni-node-nkube-system
If you're uninstalling managed Cloud Service Mesh and you're keeping yourcluster,contact Support to ensure that allGoogle Cloud resources are cleaned up. The
istio-systemnamespace and configmaps may also continue to be recreated if you don't follow this step.
Upon completion of these steps, all Cloud Service Mesh components, including proxies,in-cluster certificate authorities, and RBAC roles and bindings, aresystematically removed from the cluster. During the installation process, aGoogle-owned service account is granted the necessary permissions to establishthe service mesh resources within the cluster. These uninstall instructionsdon't revoke these permissions, allowing for a seamless re-activation ofCloud Service Mesh in the future.
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-02-19 UTC.