49 lines
1.5 KiB
YAML
49 lines
1.5 KiB
YAML
|
apiVersion: batch/v1
|
||
|
kind: CronJob
|
||
|
metadata:
|
||
|
name: backup
|
||
|
spec:
|
||
|
schedule: "0 3 * * *"
|
||
|
jobTemplate:
|
||
|
spec:
|
||
|
template:
|
||
|
spec:
|
||
|
restartPolicy: OnFailure
|
||
|
containers:
|
||
|
- name: backup
|
||
|
image: busybox
|
||
|
command:
|
||
|
- /bin/bash
|
||
|
- -c
|
||
|
- |
|
||
|
echo $HEALTHCHECK_BASE_URL/${HEALTHCHECK_ID}
|
||
|
# Start signal
|
||
|
curl -fsS -m 10 --retry 5 ${HEALTHCHECK_BASE_URL}/${HEALTHCHECK_ID}/start
|
||
|
|
||
|
# Perform backup
|
||
|
if ! ${BACKUP_COMMAND} | gzip > /backup/${ROTATE_PREFIX}-$(date +%Y%m%d).sql.gz; then
|
||
|
curl -fsS -m 10 --retry 5 ${HEALTHCHECK_BASE_URL}/${HEALTHCHECK_ID}/fail
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# list backups
|
||
|
ls /backup
|
||
|
# Rotate old backups
|
||
|
find /backup -name "${ROTATE_PREFIX}-*.sql.gz" -mtime +7 -delete
|
||
|
|
||
|
# Success signal
|
||
|
curl -fsS -m 10 --retry 5 ${HEALTHCHECK_BASE_URL}/${HEALTHCHECK_ID}
|
||
|
envFrom:
|
||
|
- configMapRef:
|
||
|
name: backup-config
|
||
|
- secretRef:
|
||
|
name: core-secrets
|
||
|
volumeMounts:
|
||
|
- mountPath: /backup
|
||
|
name: backup
|
||
|
subPath: "data"
|
||
|
volumes:
|
||
|
- name: backup
|
||
|
persistentVolumeClaim:
|
||
|
claimName: backup-pvc
|