feat(helm): pre-install/pre-upgrade migration Job
Helm hook runs migrate (and optionally seed) before any pod rolls. If the Job fails, helm upgrade aborts and the previous ReplicaSet keeps serving traffic. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
44
helm/ezscale-website/templates/job-migrate.yaml
Normal file
44
helm/ezscale-website/templates/job-migrate.yaml
Normal file
@@ -0,0 +1,44 @@
|
||||
{{- if .Values.migrate.enabled }}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: {{ include "ezscale-website.fullname" . }}-migrate
|
||||
labels:
|
||||
{{- include "ezscale-website.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: migrate
|
||||
annotations:
|
||||
"helm.sh/hook": pre-install,pre-upgrade
|
||||
"helm.sh/hook-weight": "0"
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
backoffLimit: 1
|
||||
ttlSecondsAfterFinished: 3600
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "ezscale-website.selectorLabels" . | nindent 8 }}
|
||||
app.kubernetes.io/component: migrate
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: migrate
|
||||
image: {{ include "ezscale-website.image" (dict "ctx" . "role" "app") }}
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
php artisan migrate --force --no-interaction
|
||||
{{- if .Values.migrate.seed }}
|
||||
php artisan db:seed --class={{ .Values.migrate.seedClass }} --force --no-interaction
|
||||
{{- end }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ include "ezscale-website.fullname" . }}-env
|
||||
- secretRef:
|
||||
name: {{ include "ezscale-website.secretName" . }}
|
||||
{{- end }}
|
||||
Reference in New Issue
Block a user