Helm Hooks — events in the release lifecycle (install, upgrade, delete).
Hook types:
helm test.DB Migration hook:
1apiVersion: batch/v12kind: Job3metadata:4 name: {{ .Release.Name }}-migrate5 annotations:6 "helm.sh/hook": pre-upgrade,pre-install7 "helm.sh/hook-weight": "0"8 "helm.sh/hook-delete-policy": hook-succeeded,hook-failed9spec:10 template:11 spec:12 containers:13 - name: migrate14 image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"15 command: ["python", "migrate.py"]16 env:17 - name: DATABASE_URL18 valueFrom:19 secretKeyRef:20 name: {{ .Release.Name }}-db21 key: url22 restartPolicy: Never23 backoffLimit: 1
Helm Test hook:
1apiVersion: v12kind: Pod3metadata:4 name: {{ .Release.Name }}-test5 annotations:6 "helm.sh/hook": test7spec:8 containers:9 - name: test10 image: curlimages/curl:latest11 command: ["curl", "-f", "http://{{ .Release.Name }}:{{ .Values.service.port }}/health"]12 restartPolicy: Never
1helm test my-release
hook-weight: controls execution order (-1 → 0 → 1).
hook-delete-policy: hook-succeeded (delete after success), hook-failed (delete after failure), before-hook-creation (delete before creating new).