Uninstalling Releases

1. Uninstalling Release

Example: Remove release

helm uninstall api -n web

2. Keeping Release History

FlagEffect
--keep-historyMarks release uninstalled but retains history for rollback
Without flagPurges all release Secrets

3. Waiting for Deletion

FlagBehavior
--waitBlock until resources fully deleted

4. Setting Deletion Timeout

FlagDefault
--timeout5m

5. Performing Dry Run Uninstall

Example: Preview deletion

helm uninstall api --dry-run

6. Uninstalling with Cascade

FlagEffect
--cascade background (default)Server-side cascade in background
--cascade foregroundBlock until owned resources fully removed
--cascade orphanLeave child resources behind

7. Viewing Uninstall Output

FlagEffect
--description "reason"Annotate uninstall in history
--no-hooksSkip pre/post-delete hooks

8. Uninstalling Multiple Releases

Example: Batch uninstall

helm uninstall api web cache -n web
# All matching a regex
helm list -q -f '^test-' | xargs -r helm uninstall

9. Handling Failed Uninstalls

IssueFix
Stuck Finalizerskubectl patch <res> -p '{"metadata":{"finalizers":[]}}' --type=merge
Hook failure blocksRe-run with --no-hooks
Release Secret remainskubectl delete secret -l owner=helm,name=<release>

10. Cleaning Up Orphaned Resources

ResourceCleanup
PVCsNot deleted automatically; kubectl delete pvc -l app.kubernetes.io/instance=<release>
CRDsNever deleted; remove manually if no longer needed
External LBs / DNSUse post-delete hook or external automation
Secrets created via lookupLabelled with release; clean via selector