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