End of Sale Notice:

Commercial support for NGINX Service Mesh is available to customers who currently have active NGINX Microservices Bundle subscriptions. F5 NGINX announced the End of Sale (EoS) for the NGINX Microservices Bundles as of July 1, 2023.

See our End of Sale announcement for more details.

Uninstall with Helm

This topic explains how to uninstall NGINX Service Mesh using Helm.

Uninstalling the Chart

Important:
OpenShift users: Before uninstalling, read through the OpenShift considerations guide to make sure you understand the implications.

To uninstall the nsm release in the nginx-mesh namespace, run:

helm uninstall nsm --namespace nginx-mesh

This command removes most of the Kubernetes components associated with the NGINX Service Mesh release. Helm does not remove the following components:

  • CRDs
  • nginx-mesh namespace
  • Spire PersistentVolumeClaim in the nginx-mesh namespace

Run this command to remove the CRDS:

kubectl delete crd -l app.kubernetes.io/part-of==nginx-service-mesh

Deleting the namespace will also delete the PersistentVolumeClaim:

kubectl delete namespace nginx-mesh

After uninstalling, re-roll your injected Deployments, DaemonSets, and StatefulSets to remove the sidecar proxy from Pods.

kubectl rollout restart <resource type>/<resource name>

Example:

kubectl rollout restart deployment/frontend

Troubleshooting

In some cases, the mesh may fail to uninstall for unexpected reasons due to environmental, network, or timeout errors. If the mesh fails to uninstall continually, manual intervention may be necessary.

Run this command to see all resources associated with the mesh currently present in your cluster:

kubectl api-resources --verbs=list -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -l app.kubernetes.io/part-of=nginx-service-mesh -A

nginx-mesh Namespace Stuck “Terminating”

Use the following script to list and patch all Spiffeid resources:

for ns in $(kubectl get ns | awk '{print $1}' | tail -n +2)
do
if [ $(kubectl get spiffeids -n $ns 2>/dev/null | wc -l) -ne 0 ]
then
    kubectl patch spiffeid $(kubectl get spiffeids -n $ns | awk '{print $1}' | tail -n +2) --type='merge' -p '{"metadata":{"finalizers":null}}' -n $ns
fi
done

After patching the Spiffeids the namespace should be removed.

If you are unable to resolve the issues, please reach out to the appropriate support channel.