{{- 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 }}