Upgrading Releases

1. Upgrading Release

Example: Standard upgrade

helm upgrade api ./chart -n web -f values-prod.yaml

2. Installing or Upgrading

FlagBehavior
--install / -iInstall if release missing, otherwise upgrade (idempotent for CI)

3. Forcing Resource Update

FlagBehavior
--forceReplace 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

FlagEffect
--reset-valuesDiscard previous user values; use chart defaults + new -f/--set

5. Reusing Previous Values

FlagEffect
--reuse-valuesKeep 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

FlagEffect
--atomicImplies --wait; auto-rolls back on failure
--cleanup-on-failDelete 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

FlagBehavior
--history-max NKeep N revisions (0 = unlimited; default 10)

10. Waiting for Upgrade Completion

FlagUse
--waitBlock until resources Ready
--wait-for-jobsBlock on Job completion
--timeout 15mHard ceiling