Upgrading Releases
1. Upgrading Release
Example: Standard upgrade
helm upgrade api ./chart -n web -f values-prod.yaml
2. Installing or Upgrading
| Flag | Behavior |
--install / -i | Install if release missing, otherwise upgrade (idempotent for CI) |
3. Forcing Resource Update
| Flag | Behavior |
--force | Replace resources via delete + recreate when patch is rejected |
Warning: --force can cause downtime — Services are recreated, losing ClusterIP; PVCs may be deleted. Use sparingly.
4. Resetting Values
| Flag | Effect |
--reset-values | Discard previous user values; use chart defaults + new -f/--set |
5. Reusing Previous Values
| Flag | Effect |
--reuse-values | Keep previous values; merge new --set on top |
| Default (3.x) | If no -f or --set provided, reuses; otherwise resets and applies new only |
Note: Helm 3 default behavior surprises many users. Always explicitly pass -f values.yaml + --reset-values for reproducible upgrades.
6. Upgrading with New Values
Example: Versioned upgrade
helm upgrade api bitnami/nginx --version 18.1.0 \
--reuse-values --set image.tag=1.27.0
7. Using Atomic Upgrades
| Flag | Effect |
--atomic | Implies --wait; auto-rolls back on failure |
--cleanup-on-fail | Delete newly created resources from failed upgrade |
8. Cleaning Up on Failed Upgrade
Example: Safe CI upgrade
helm upgrade --install api ./chart \
--atomic --cleanup-on-fail --timeout 10m \
-f values-prod.yaml
9. Setting Revision Limits
| Flag | Behavior |
--history-max N | Keep N revisions (0 = unlimited; default 10) |
10. Waiting for Upgrade Completion
| Flag | Use |
--wait | Block until resources Ready |
--wait-for-jobs | Block on Job completion |
--timeout 15m | Hard ceiling |