Fix Helm 'UPGRADE FAILED: has no deployed releases'
The Error: "has no deployed releases"
You run helm upgrade --install and get:
Error: UPGRADE FAILED: "my-app" has no deployed releases
This is confusing because you're using the --install flag, which should handle first-time installs. But Helm still refuses.
Root Cause
This happens when a previous helm install (or helm upgrade --install) failed partway through. The release exists in Helm's history with a failed status, but no revision was ever successfully deployed. Helm sees an existing release (so it tries upgrade), but the upgrade logic requires at least one deployed revision to diff against. Since none exists, it errors out.
helm history my-app -n your-namespace
REVISION STATUS CHART DESCRIPTION
1 failed my-app-1.0.0 Install complete (failed)
That single failed revision is the culprit.
Step-by-Step Fix
Option A: Uninstall and Reinstall (Safest)
If the application was never successfully running:
# Remove the failed release
helm uninstall my-app -n your-namespace
# Install fresh
helm install my-app ./my-chart -n your-namespace -f values.yaml
Or in one step if you prefer upgrade --install:
helm uninstall my-app -n your-namespace 2>/dev/null; \
helm upgrade --install my-app ./my-chart -n your-namespace -f values.yaml
Option B: Force Replace the Failed Release
If you want to keep using upgrade --install in a CI/CD pipeline without two steps:
helm upgrade --install my-app ./my-chart \
-n your-namespace \
-f values.yaml \
--force \
--reset-values
Note: --force replaces resources using delete/recreate, which causes brief downtime.
Option C: Delete the Failed Release Secret Manually
If helm uninstall itself fails:
# List all release secrets
kubectl get secrets -n your-namespace -l "owner=helm,name=my-app"
# Delete them all
kubectl delete secrets -n your-namespace -l "owner=helm,name=my-app"
# Now install fresh
helm upgrade --install my-app ./my-chart -n your-namespace -f values.yaml
Option D: Fix in CI/CD Pipelines
For automated pipelines, wrap the logic to handle this case:
#!/bin/bash
set -e
RELEASE="my-app"
NAMESPACE="production"
CHART="./my-chart"
# Check if release exists and has only failed revisions
STATUS=$(helm status "$RELEASE" -n "$NAMESPACE" -o json 2>/dev/null | jq -r '.info.status' || echo "not-found")
if [ "$STATUS" = "failed" ]; then
echo "Found failed release, uninstalling first..."
helm uninstall "$RELEASE" -n "$NAMESPACE" --wait
fi
helm upgrade --install "$RELEASE" "$CHART" \
-n "$NAMESPACE" \
-f values.yaml \
--wait \
--timeout 5m0s
Verify the Fix
helm list -n your-namespace
You should see:
NAME NAMESPACE REVISION STATUS CHART
my-app production 1 deployed my-app-1.0.0
Also check that the actual workloads are running:
kubectl get pods -n your-namespace -l app.kubernetes.io/instance=my-app
Prevention Tips
- Always use
--atomicin CI/CD:helm upgrade --install --atomic --timeout 5m0s. This auto-rolls back on failure, leaving the release in a clean state instead offailed. - Use
--waitso Helm waits for pods to be ready and properly records success or failure. - Fix the root cause of the initial failure (bad image tag, missing secrets, resource limits) before retrying. Blindly rerunning the pipeline hits the same error.
- Add the uninstall-on-failed pattern to your CI/CD scripts as shown in Option D above.
- Test chart changes locally with
helm templateandhelm lintbefore pushing to CI.
Was this article helpful?
Platform Engineer
Terraform enthusiast, platform builder, DRY advocate. I believe infrastructure should be versioned, reviewed, and deployed like any other code. GitOps or bust.
Related Articles
Helm Error: Release Has No Deployed Revisions - How To Recover Failed Installations
If you've been working with Helm for any length of time, you've probably encountered this frustrating error: "Error: release has no deployed revisions." It...
Fix Helm 'Another Operation in Progress' Error
Resolve the Helm 'another operation (install/upgrade/rollback) is in progress' error caused by stuck releases with safe recovery steps.
Fix Kubernetes 'Evicted' Pods Filling Up the Node
Clean up Kubernetes evicted pods and fix the underlying disk pressure or resource exhaustion that causes pod evictions.
Fix Kubernetes ImagePullBackOff: Container Image Won't Pull
Resolve ImagePullBackOff and ErrImagePull errors in Kubernetes — fix registry credentials, image tags, and network access issues.
Fix Kubernetes OOMKilled: Pod Keeps Getting Killed for Memory
Diagnose and fix OOMKilled errors in Kubernetes pods — understand memory limits, identify leaks, and configure resource requests correctly.
Systematic Debugging of CrashLoopBackOff: A Field Guide From Someone Who's Been Paged Too Many Times
A systematic approach to debugging CrashLoopBackOff in Kubernetes, covering the most common causes and the exact commands to diagnose each one.
More in Kubernetes
View all →Kubernetes Vertical Pod Autoscaler: Automating Resource Request Tuning In Production
Let me be direct with you: most Kubernetes clusters I audit are hemorrhaging money because of poorly configured resource requests. I've seen teams running...
Istio Observability and Authorization: Distributed Tracing, Metrics, and Access Policies
How to use Istio's built-in observability — distributed tracing with Jaeger, Prometheus metrics, Kiali service graph — and enforce zero-trust access control with AuthorizationPolicies.
Istio Service Mesh: Installation, Traffic Management, and mTLS
A practical guide to getting started with Istio — installing on Kubernetes, enabling automatic mTLS, configuring VirtualServices for traffic management, and understanding the sidecar injection model.
Running Kafka on Kubernetes with Strimzi Operator
A hands-on guide to deploying and operating Kafka on Kubernetes using the Strimzi operator — covering cluster config, topic management, and TLS security.