48 lines
1.5 KiB
YAML
48 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
|