Files
helm-charts/pocket-id/templates/backup-db-cronjob.yaml
T

61 lines
2.1 KiB
YAML

{{- if .Values.backup.db.enabled }}
apiVersion: batch/v1
kind: CronJob
metadata:
name: {{ .Release.Name }}-db-backup
spec:
schedule: {{ .Values.backup.db.schedule | quote }}
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 1
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: pg-dump
image: {{ .Values.backup.db.image }}
command:
- /bin/sh
- -c
- |
set -e
mkdir -p /backup
TS=$(date +%Y%m%d-%H%M%S)
pg_dump -h $PGHOST -U $DB_USER -d $DB_NAME \
| gzip > /backup/${FILE_PREFIX}-${TS}.sql.gz
find /backup -name "${FILE_PREFIX}-*.sql.gz" -mtime +$RETENTION_DAYS -delete
env:
- name: PGHOST
value: {{ .Values.backup.db.host | quote }}
- name: DB_USER
value: {{ .Values.backup.db.user | quote }}
- name: DB_NAME
value: {{ .Values.backup.db.database | quote }}
- name: FILE_PREFIX
value: {{ .Values.backup.db.filePrefix | quote }}
- name: RETENTION_DAYS
value: {{ .Values.backup.db.retentionDays | quote }}
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.existingSecret }}
key: {{ .Values.backup.db.passwordSecretKey }}
volumeMounts:
- name: backup-storage
mountPath: /backup
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "256Mi"
cpu: "500m"
volumes:
- name: backup-storage
hostPath:
path: {{ .Values.backup.db.hostPath }}
type: DirectoryOrCreate
{{- end }}