Uninstall
Uninstall Solo Enterprise for Istio or deregister your cluster from the Gloo management plane.
If you no longer need your Solo Enterprise for Istio environment, you can uninstall Solo Enterprise for Istio components, such as the control and data plane, and any Gloo-managed Istio installations.
Single cluster
Ambient service mesh
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 - Delete the Istio CRDs.
kubectl get crds | grep 'istio.io' | awk '{print $1}' | xargs kubectl delete crd
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
Sidecar service mesh
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 - Delete the Istio CRDs.
kubectl get crds | grep 'istio.io' | awk '{print $1}' | xargs kubectl delete crd
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
Solo Enterprise for Istio
Uninstall the Solo Enterprise for Istio release.
helm uninstall gloo-platform -n gloo-meshUninstall any Gloo CRDs, such as by deleting the CRD Helm release.
helm uninstall gloo-platform-crds -n gloo-meshIf 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-meshnamespace.kubectl delete namespace gloo-mesh
Multicluster
Before you begin, save the names and contexts of the clusters you want to uninstall Solo Enterprise for Istio 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>Ambient service mesh
If you installed a multicluster 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> - Delete the
east-westgateway.kubectl delete gateway istio-eastwest -n istio-eastwest --context $CLUSTER_CONTEXT - List the remote peering gateways for other clusters in your setup.Example output for a remote peer gateway for one linked cluster:
kubectl get gateways -n istio-eastwest --context $CLUSTER_CONTEXTNAME CLASS ADDRESS PROGRAMMED AGE istio-remote-peer-cluster2 istio-remote <address> True 16m - Delete the
istio-remote-peergateway for each linked cluster.kubectl delete gateway -n istio-eastwest --context $CLUSTER_CONTEXT istio-remote-peer-<cluster> - Delete the ServiceMeshController resource and
gloo-extensions-configconfigmap.kubectl delete ServiceMeshController managed-istio --context $CLUSTER_CONTEXT kubectl delete cm gloo-extensions-config -n gloo-mesh --context $CLUSTER_CONTEXT - Optional: Uninstall the Gloo Operator.
helm uninstall -n gloo-mesh gloo-operator --kube-context $CLUSTER_CONTEXT - Delete the
ca-certssecret.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 - Delete the Istio CRDs.
kubectl get crds --context $CLUSTER_CONTEXT | grep 'istio.io' | awk '{print $1}' | xargs kubectl delete crd --context $CLUSTER_CONTEXT - Repeat these steps for each cluster in the multicluster mesh setup. Be sure to reset the values of the
$CLUSTER_NAMEand$CLUSTER_CONTEXTenvironment variables each time you repeat the steps.
If you manually deployed a multicluster 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> - Delete the
east-westgateway.kubectl delete gateway istio-eastwest -n istio-eastwest --context $CLUSTER_CONTEXT - List the remote peering gateways for other clusters in your setup.Example output for a remote peer gateway for one linked cluster:
kubectl get gateways -n istio-eastwest --context $CLUSTER_CONTEXTNAME CLASS ADDRESS PROGRAMMED AGE istio-remote-peer-cluster2 istio-remote <address> True 16m - Delete the
istio-remote-peergateway for each linked cluster.kubectl delete gateway -n istio-eastwest --context $CLUSTER_CONTEXT istio-remote-peer-<cluster> - 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-certssecret.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 these steps for each cluster in the multicluster mesh setup. Be sure to reset the values of the
$CLUSTER_NAMEand$CLUSTER_CONTEXTenvironment variables each time you repeat the steps.
Sidecar service mesh
If you installed a multicluster sidecar 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> - Delete the
east-westgateway.kubectl delete gateway istio-eastwest -n istio-eastwest --context $CLUSTER_CONTEXT - List the remote peering gateways for other clusters in your setup.Example output for a remote peer gateway for one linked cluster:
kubectl get gateways -n istio-eastwest --context $CLUSTER_CONTEXTNAME CLASS ADDRESS PROGRAMMED AGE istio-remote-peer-cluster2 istio-remote <address> True 16m - Delete the
istio-remote-peergateway for each linked cluster.kubectl delete gateway -n istio-eastwest --context $CLUSTER_CONTEXT istio-remote-peer-<cluster> - Delete the ServiceMeshController resource and
gloo-extensions-configconfigmap.kubectl delete ServiceMeshController managed-istio --context $CLUSTER_CONTEXT kubectl delete cm gloo-extensions-config -n gloo-mesh --context $CLUSTER_CONTEXT - Optional: Uninstall the Gloo Operator.
helm uninstall -n gloo-mesh gloo-operator --kube-context $CLUSTER_CONTEXT - Delete the
ca-certssecret.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 - Delete the Istio CRDs.
kubectl get crds --context $CLUSTER_CONTEXT | grep 'istio.io' | awk '{print $1}' | xargs kubectl delete crd --context $CLUSTER_CONTEXT - Repeat these steps for each cluster in the multicluster mesh setup. Be sure to reset the values of the
$CLUSTER_NAMEand$CLUSTER_CONTEXTenvironment variables each time you repeat the steps.
If you manually deployed a multicluster sidecar 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> - Delete the
east-westgateway.kubectl delete gateway istio-eastwest -n istio-eastwest --context $CLUSTER_CONTEXT - List the remote peering gateways for other clusters in your setup.Example output for a remote peer gateway for one linked cluster:
kubectl get gateways -n istio-eastwest --context $CLUSTER_CONTEXTNAME CLASS ADDRESS PROGRAMMED AGE istio-remote-peer-cluster2 istio-remote <address> True 16m - Delete the
istio-remote-peergateway for each linked cluster.kubectl delete gateway -n istio-eastwest --context $CLUSTER_CONTEXT istio-remote-peer-<cluster> - 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-certssecret.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 these steps for each cluster in the multicluster mesh setup. Be sure to reset the values of the
$CLUSTER_NAMEand$CLUSTER_CONTEXTenvironment variables each time you repeat the steps.
Solo Enterprise for Istio
Uninstall the Gloo agent that runs on each workload cluster.
meshctl cluster deregister \ --kubecontext $MGMT_CONTEXT \ --remote-context $REMOTE_CONTEXT1 \ $REMOTE_CLUSTER1meshctl cluster deregister \ --kubecontext $MGMT_CONTEXT \ --remote-context $REMOTE_CONTEXT2 \ $REMOTE_CLUSTER2Uninstall 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_CONTEXT2Delete the corresponding KubernetesCluster resources from the management cluster.
kubectl delete kubernetescluster $REMOTE_CLUSTER1 $REMOTE_CLUSTER2 -n gloo-mesh --context $MGMT_CONTEXTDelete 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_CONTEXT1kubectl 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_CONTEXT2Uninstall 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_CONTEXT2If 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-meshnamespaces from each workload cluster.kubectl --context $REMOTE_CONTEXT1 delete namespace gloo-mesh kubectl --context $REMOTE_CONTEXT2 delete namespace gloo-meshUninstall 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_CONTEXTDelete the
gloo-meshnamespace from the management cluster.kubectl --context $MGMT_CONTEXT delete namespace gloo-mesh