These docs use the Kubernetes Gateway API to manage your service mesh. To manage your sidecar service mesh with Gloo Mesh Enterprise APIs instead, see the Gloo Mesh Enterprise docs.
Uninstall
Uninstall Gloo Mesh or deregister your cluster from the Gloo management plane.
If you no longer need your Gloo Mesh environment, you can uninstall Gloo Mesh components, such as the control and data plane, and any Gloo-managed Istio installations.
Single cluster link
Sidecar service mesh link
If you installed a sidecar mesh with the Gloo operator:
- Delete the ServiceMeshController resource.
kubectl delete ServiceMeshController managed-istio
- Optional: Uninstall the Gloo operator.
helm uninstall -n gloo-mesh gloo-operator
- Delete the Istio namespace.
kubectl delete namespace istio-system
If you manually deployed a sidecar mesh with Helm:
- Uninstall the Helm release for
istiod
. Note that your release name might be different.helm uninstall -n istio-system istiod-gloo
- Optional: Uninstall the Istio CNI.
helm uninstall -n kube-system istio-cni
- Uninstall the Istio CRDs.
helm uninstall -n istio-system istio-base
- Delete the Istio namespace.
kubectl delete namespace istio-system
If you used the legacy Istio lifecycle manager, uninstall the Istio control plane and gateways before you uninstall Gloo Mesh.
- Delete the
GatewayLifecycleManager
resources for any gateways.kubectl delete GatewayLifecycleManager istio-ingressgateway -n gloo-mesh kubectl delete GatewayLifecycleManager istio-egressgateway -n gloo-mesh
- Verify that the gateway resources are removed before you proceed to the next step.
kubectl get all -n gloo-mesh-gateways
- Delete the
IstioLifecycleManager
resource for theistiod
control plane.kubectl delete IstioLifecycleManager istiod-control-plane -n gloo-mesh
- Verify that the Istio resources are removed before you proceed to the next step.
# Change the revision as needed kubectl get all -n gm-iop-1-24 kubectl get all -n istio-system
- Delete the Istio namespaces.
kubectl delete ns istio-system kubectl delete ns gloo-mesh-gateways
Ambient service mesh link
If you installed an ambient mesh with the Gloo operator:
- Delete the ServiceMeshController resource.
kubectl delete ServiceMeshController managed-istio
- Optional: Uninstall the Gloo operator.
helm uninstall -n gloo-mesh gloo-operator
- Delete the Istio namespace.
kubectl delete namespace istio-system
If you manually deployed an ambient mesh with Helm:
- Uninstall the ztunnel Helm release.
helm uninstall -n istio-system ztunnel
- Uninstall the Istio CNI.
helm uninstall -n istio-system istio-cni
- Uninstall the istiod control plane.
helm uninstall -n istio-system istiod
- Uninstall the Istio CRDs.
helm uninstall -n istio-system istio-base
- Delete the Istio namespaces.
kubectl delete namespace istio-system
Gloo Mesh link
Uninstall the Gloo Mesh release.
helm uninstall gloo-mesh -n gloo-mesh
Uninstall any Gloo CRDs, such as by deleting the CRD Helm release.
helm uninstall gloo-platform-crds -n gloo-mesh
If you do not have a CRD Helm release, check for and manually remove any CRDs.
kubectl get crds | grep solo kubectl delete crd <$CRD>
Delete the
gloo-mesh
namespace.kubectl delete namespace gloo-mesh
Multicluster link
Before you begin, save the names and contexts of the clusters you want to uninstall Gloo Mesh from.
export MGMT_CLUSTER=<management-cluster>
export REMOTE_CLUSTER1=<remote-cluster1>
export REMOTE_CLUSTER2=<remote-cluster2>
export MGMT_CONTEXT=<management-cluster-context>
export REMOTE_CONTEXT1=<remote-cluster1-context>
export REMOTE_CONTEXT2=<remote-cluster2-context>
Sidecar service mesh link
If you installed a sidecar mesh with the Gloo operator:
Delete the ServiceMeshController resource.
kubectl delete ServiceMeshController managed-istio --context ${REMOTE_CONTEXT1} kubectl delete ServiceMeshController managed-istio --context ${REMOTE_CONTEXT2}
Optional: Uninstall the Gloo operator.
helm uninstall -n gloo-mesh gloo-operator --kube-context ${REMOTE_CONTEXT1} helm uninstall -n gloo-mesh gloo-operator --kube-context ${REMOTE_CONTEXT2}
Delete the Istio namespaces.
kubectl delete namespace istio-system --context ${REMOTE_CONTEXT1} kubectl delete namespace istio-system --context ${REMOTE_CONTEXT2}
If you manually deployed a sidecar mesh with Helm:
Find the names of your Istio Helm chart releases.
helm ls -A
Uninstall the Helm release for
istiod
. Note that your release name might be different.helm uninstall -n istio-system istiod-gloo --kube-context ${REMOTE_CONTEXT1} helm uninstall -n istio-system istiod-gloo --kube-context ${REMOTE_CONTEXT2}
Optional: Uninstall the Istio CNI.
helm uninstall -n kube-system istio-cni --kube-context ${REMOTE_CONTEXT1} helm uninstall -n kube-system istio-cni --kube-context ${REMOTE_CONTEXT2}
Uninstall the Istio CRDs.
helm uninstall -n istio-system istio-base --kube-context ${REMOTE_CONTEXT1} helm uninstall -n istio-system istio-base --kube-context ${REMOTE_CONTEXT2}
Delete the Istio namespaces.
kubectl delete namespace istio-system --context ${REMOTE_CONTEXT1} kubectl delete namespace istio-system --context ${REMOTE_CONTEXT2}
If you used the legacy Istio lifecycle manager, uninstall the Istio control plane and gateways before you uninstall Gloo Mesh.
- Delete the
GatewayLifecycleManager
resources for any gateways.kubectl delete GatewayLifecycleManager istio-ingressgateway -n gloo-mesh --context $MGMT_CONTEXT kubectl delete GatewayLifecycleManager istio-egressgateway -n gloo-mesh --context $MGMT_CONTEXT
- Verify that the gateway resources are removed before you proceed to the next step.
kubectl get all -n gloo-mesh-gateways --context $REMOTE_CONTEXT1 kubectl get all -n gloo-mesh-gateways --context $REMOTE_CONTEXT2
- Delete the
IstioLifecycleManager
resource for theistiod
control plane.kubectl delete IstioLifecycleManager istiod-control-plane -n gloo-mesh --context $MGMT_CONTEXT
- Verify that the Istio resources are removed before you proceed to the next step.
# Change the revision as needed kubectl get all -n gm-iop-1-24 --context $REMOTE_CONTEXT1 kubectl get all -n istio-system --context $REMOTE_CONTEXT1
- Delete the Istio namespaces from the workload clusters.
kubectl delete ns istio-system --context $REMOTE_CONTEXT1 kubectl delete ns gloo-mesh-gateways --context $REMOTE_CONTEXT1
kubectl delete ns istio-system --context $REMOTE_CONTEXT2 kubectl delete ns gloo-mesh-gateways --context $REMOTE_CONTEXT2
Ambient service mesh link
If you installed an ambient mesh with the Gloo operator:
- Save the name and kubeconfig context of one of your clusters in the following environment variables. Each time you repeat the steps in this section, you change these variables to the next workload cluster’s name and context.
export CLUSTER_NAME=<cluster-name> export CLUSTER_CONTEXT=<cluster-context>
- List the gateways in the
istio-eastwest
namespace.Example output for an east-west gateway and a remote peer gateway for one linked cluster:kubectl get gateways -n istio-eastwest --context $CLUSTER_CONTEXT
NAME CLASS ADDRESS PROGRAMMED AGE istio-eastwest istio-eastwest <address> True 29m istio-remote-peer-cluster2 istio-remote <address> True 16m
- Delete the
istio-remote-peer
gateway for each cluster.kubectl delete gateway -n istio-eastwest --context $CLUSTER_CONTEXT istio-remote-peer-<cluster>
- Delete the east-west gateway.
kubectl delete gateway istio-eastwest -n istio-eastwest --context $CLUSTER_CONTEXT
- Delete the ServiceMeshController resource.
kubectl delete ServiceMeshController managed-istio --context $CLUSTER_CONTEXT
- Optional: Uninstall the Gloo operator.
helm uninstall -n gloo-mesh gloo-operator --kube-context $CLUSTER_CONTEXT
- Delete the
ca-certs
secret.kubectl delete secret cacerts -n istio-system --context $CLUSTER_CONTEXT
- Delete the Istio namespaces.
kubectl delete namespace istio-system --context $CLUSTER_CONTEXT kubectl delete namespace istio-eastwest --context $CLUSTER_CONTEXT
- Repeat steps 1 - 8 for each cluster in the multicluster mesh setup. Be sure to reset the values of the
$CLUSTER_NAME
and$CLUSTER_CONTEXT
environment variables each time you repeat the steps.
If you manually deployed an ambient mesh with Helm:
- Save the name and kubeconfig context of one of your clusters in the following environment variables. Each time you repeat the steps in this section, you change these variables to the next workload cluster’s name and context.
export CLUSTER_NAME=<cluster-name> export CLUSTER_CONTEXT=<cluster-context>
- List the gateways in the
istio-eastwest
namespace.Example output for an east-west gateway and a remote peer gateway for one linked cluster:kubectl get gateways -n istio-eastwest --context $CLUSTER_CONTEXT
NAME CLASS ADDRESS PROGRAMMED AGE istio-eastwest istio-eastwest <address> True 29m istio-remote-peer-cluster2 istio-remote <address> True 16m
- Delete the
istio-remote-peer
gateway for each cluster.kubectl delete gateway -n istio-eastwest --context $CLUSTER_CONTEXT istio-remote-peer-<cluster>
- Delete the east-west gateway.
kubectl delete gateway istio-eastwest -n istio-eastwest --context $CLUSTER_CONTEXT
- Uninstall the Helm releases for ztunnel, CNI, istiod, and the CRDs.
helm uninstall -n istio-system ztunnel --kube-context $CLUSTER_CONTEXT helm uninstall -n istio-system istio-cni --kube-context $CLUSTER_CONTEXT helm uninstall -n istio-system istiod --kube-context $CLUSTER_CONTEXT helm uninstall -n istio-system istio-base --kube-context $CLUSTER_CONTEXT
- Delete the
ca-certs
secret.kubectl delete secret cacerts -n istio-system --context $CLUSTER_CONTEXT
- Delete the Istio namespaces.
kubectl delete namespace istio-system --context $CLUSTER_CONTEXT kubectl delete namespace istio-eastwest --context $CLUSTER_CONTEXT
- Repeat steps 1 - 7 for each cluster in the multicluster mesh setup. Be sure to reset the values of the
$CLUSTER_NAME
and$CLUSTER_CONTEXT
environment variables each time you repeat the steps.
Gloo Mesh link
Uninstall the Gloo agent that runs on each workload cluster.
meshctl cluster deregister \ --kubecontext $MGMT_CONTEXT \ --remote-context $REMOTE_CONTEXT1 \ $REMOTE_CLUSTER1
meshctl cluster deregister \ --kubecontext $MGMT_CONTEXT \ --remote-context $REMOTE_CONTEXT2 \ $REMOTE_CLUSTER2
Example output:
Deregistering cluster: cluster1 Finished uninstalling release gloo-mesh-agent Successfully deregistered cluster: cluster1
Uninstall the agent Helm releases.
helm uninstall gloo-platform -n gloo-mesh --kube-context $REMOTE_CONTEXT1 helm uninstall gloo-platform -n gloo-mesh --kube-context $REMOTE_CONTEXT2
Delete the corresponding KubernetesCluster resources from the management cluster.
kubectl delete kubernetescluster $REMOTE_CLUSTER1 $REMOTE_CLUSTER2 -n gloo-mesh --context $MGMT_CONTEXT
Delete the relay secrets from each workload cluster, as you cannot reuse the same secret if you decide to re-register the agent later.
kubectl delete secret -n gloo-mesh relay-client-tls-secret --context $REMOTE_CONTEXT1 kubectl delete secret -n gloo-mesh relay-identity-token-secret --context $REMOTE_CONTEXT1 kubectl delete secret -n gloo-mesh relay-root-tls-secret --context $REMOTE_CONTEXT1
kubectl delete secret -n gloo-mesh relay-client-tls-secret --context $REMOTE_CONTEXT2 kubectl delete secret -n gloo-mesh relay-identity-token-secret --context $REMOTE_CONTEXT2 kubectl delete secret -n gloo-mesh relay-root-tls-secret --context $REMOTE_CONTEXT2
Uninstall any Gloo CRDs, such as by deleting the CRD Helm release.
helm uninstall gloo-platform-crds -n gloo-mesh --kube-context $REMOTE_CONTEXT1 helm uninstall gloo-platform-crds -n gloo-mesh --kube-context $REMOTE_CONTEXT2
If you do not have a CRD Helm release, check for and manually remove any CRDs.
kubectl get crds --context $REMOTE_CONTEXT1 | grep solo kubectl delete --context $REMOTE_CONTEXT1 crd <$CRD> kubectl get crds --context $REMOTE_CONTEXT2 | grep solo kubectl delete --context $REMOTE_CONTEXT2 crd <$CRD>
Delete the
gloo-mesh
namespaces from each workload cluster.kubectl --context $REMOTE_CONTEXT1 delete namespace gloo-mesh kubectl --context $REMOTE_CONTEXT2 delete namespace gloo-mesh
Uninstall the Gloo management plane components from the management cluster.
helm uninstall gloo-platform -n gloo-mesh --kube-context $MGMT_CONTEXT helm uninstall gloo-platform-crds -n gloo-mesh --kube-context $MGMT_CONTEXT
Delete the
gloo-mesh
namespace.kubectl --context $MGMT_CONTEXT delete namespace gloo-mesh