Helm Hooks & Release Lifecycle
Intermediatev1.0.0
Use Helm hooks for database migrations, pre-install checks, post-upgrade notifications, and cleanup tasks — control execution order and handle hook failures gracefully.
Content
Overview
Helm hooks are resources annotated to run at specific points in the release lifecycle — before install, after upgrade, before delete, etc. Common uses include database migrations, health checks, notifications, and cleanup.
Why This Matters
- -Database migrations — run before app upgrade, rollback on failure
- -Validation — check prerequisites before installing
- -Cleanup — remove temporary resources after uninstall
- -Notifications — alert teams after successful deployments
Hook Annotations
Available Hooks
| Hook | When |
|---|---|
| pre-install | Before resources are created |
| post-install | After all resources are created |
| pre-upgrade | Before resources are updated |
| post-upgrade | After all resources are updated |
| pre-delete | Before resources are deleted |
| post-delete | After all resources are deleted |
| pre-rollback | Before rollback |
| post-rollback | After rollback |
| test | When `helm test` is run |
Database Migration Hook
Pre-Install Validation Hook
Delete Policies
| Policy | Behavior |
|---|---|
| before-hook-creation | Delete previous hook before creating new one |
| hook-succeeded | Delete hook after successful completion |
| hook-failed | Delete hook after failure |
Best Practices
- -Use
hook-weightto control execution order (migrations before app start) - -Set
hook-delete-policy: before-hook-creation,hook-succeededfor migrations - -Use
backoffLimit: 3for retryable operations,0for validation checks - -Set
restartPolicy: Neveron hook Jobs - -Use
--atomicwithhelm upgradeto auto-rollback if hooks fail - -Keep hooks fast — long-running hooks block the release
Common Mistakes
- -Hooks without delete policies (old Jobs accumulate)
- -Missing backoffLimit (infinite retries on failure)
- -Hooks that depend on resources created in the same release
- -Not using hook-weight (random execution order)
FAQ
Discussion
Loading comments...