apiVersion: batch/v1 kind: Job metadata: name: {{ include "mastodon.fullname" . }}-db-migrate labels: {{- include "mastodon.labels" . | nindent 4 }} annotations: "helm.sh/hook": post-install,pre-upgrade "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded "helm.sh/hook-weight": "-2" spec: template: metadata: name: {{ include "mastodon.fullname" . }}-db-migrate spec: restartPolicy: Never # ensure we run on the same node as the other rails components; only # required when using PVCs that are ReadWriteOnce {{- if or (eq "ReadWriteOnce" .Values.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.persistence.system.accessMode) }} affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: component operator: In values: - rails topologyKey: kubernetes.io/hostname {{- end }} volumes: - name: assets persistentVolumeClaim: claimName: {{ template "mastodon.fullname" . }}-assets - name: system persistentVolumeClaim: claimName: {{ template "mastodon.fullname" . }}-system containers: - name: {{ include "mastodon.fullname" . }}-db-migrate image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} command: - bundle - exec - rake - db:migrate envFrom: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: name: {{ template "mastodon.fullname" . }} env: - name: "DB_PASS" {{- if .Values.postgresql.enabled }} valueFrom: secretKeyRef: name: {{ .Release.Name }}-postgresql key: postgresql-password {{- else }} value: {{ .Values.postgresql.postgresqlPassword | quote }} {{- end }} - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: name: {{ .Release.Name }}-redis key: redis-password - name: "PORT" value: {{ .Values.application.web.port | quote }} volumeMounts: - name: assets mountPath: /opt/mastodon/public/assets - name: system mountPath: /opt/mastodon/public/system