job.yaml 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. {{- $hooks := dict "preInstall" "pre-install" "postInstall" "post-install" "preDelete" "pre-delete" "postDelete" "post-delete" "preUpgrade" "pre-upgrade" "postUpgrade" "post-upgrade" "preRollback" "pre-rollback" "postRollback" "post-rollback" }}
  2. {{- range $hookName, $hookType := $hooks }}
  3. {{- $hookConfig := index $.Values.hooks $hookName }}
  4. {{- if and $hookConfig $hookConfig.job $hookConfig.job.enabled }}
  5. ---
  6. apiVersion: batch/v1
  7. kind: Job
  8. metadata:
  9. name: {{ template "podinfo.fullname" $ }}-{{ $hookType }}
  10. namespace: {{ include "podinfo.namespace" $ }}
  11. labels:
  12. {{- include "podinfo.labels" $ | nindent 4 }}
  13. annotations:
  14. "helm.sh/hook": {{ $hookType }}
  15. "helm.sh/hook-delete-policy": {{ $hookConfig.job.hookDeletePolicy }}
  16. spec:
  17. {{- if kindIs "float64" $hookConfig.job.ttlSecondsAfterFinished }}
  18. ttlSecondsAfterFinished: {{ $hookConfig.job.ttlSecondsAfterFinished | int }}
  19. {{- end }}
  20. template:
  21. spec:
  22. containers:
  23. - name: job
  24. image: "{{ $.Values.image.repository }}:{{ $.Values.image.tag }}"
  25. imagePullPolicy: {{ $.Values.image.pullPolicy }}
  26. command:
  27. - sh
  28. - -c
  29. - |
  30. {{- if kindIs "float64" $hookConfig.job.sleepSeconds }}
  31. sleep {{ $hookConfig.job.sleepSeconds | int }}
  32. {{- end }}
  33. exit {{ $hookConfig.job.exitCode | default 0 }}
  34. restartPolicy: Never
  35. backoffLimit: 1
  36. {{- end }}
  37. {{- end }}