diff --git a/templates/cronjob-backup.yaml b/templates/cronjob-backup.yaml new file mode 100644 index 0000000..1d1e729 --- /dev/null +++ b/templates/cronjob-backup.yaml @@ -0,0 +1,55 @@ +{{- if .Values.backup.enabled }} +apiVersion: batch/v1 +kind: CronJob +metadata: + name: {{ include "postgresql.fullname" . }}-backup + labels: + {{- include "postgresql.labels" . | nindent 4 }} + app.kubernetes.io/component: backup +spec: + schedule: {{ .Values.backup.schedule | quote }} + successfulJobsHistoryLimit: 3 + failedJobsHistoryLimit: 3 + concurrencyPolicy: Forbid + jobTemplate: + spec: + template: + metadata: + labels: + {{- include "postgresql.selectorLabels" . | nindent 12 }} + app.kubernetes.io/component: backup + spec: + restartPolicy: OnFailure + containers: + - name: backup + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - /bin/bash + - /config/backup.sh + env: + - name: POSTGRES_USER + value: {{ .Values.postgres.user | quote }} + - name: PGPASSWORD + valueFrom: + secretKeyRef: + name: {{ .Values.postgres.existingSecret | default (include "postgresql.fullname" .) }} + key: {{ .Values.postgres.passwordKey }} + - name: PGHOST + value: {{ include "postgresql.fullname" . }}-primary + volumeMounts: + - name: backup + mountPath: /backup + - name: config + mountPath: /config + resources: + {{- toYaml .Values.backup.resources | nindent 14 }} + volumes: + - name: backup + persistentVolumeClaim: + claimName: {{ include "postgresql.fullname" . }}-backup + - name: config + configMap: + name: {{ include "postgresql.fullname" . }}-config + defaultMode: 0755 +{{- end }}