# --- # kind: PersistentVolumeClaim # apiVersion: v1 # metadata: # name: crates-postgres-backup-pvc # spec: # volumeName: crates-postgres-backup-pv # accessModes: # - ReadWriteOnce # resources: # requests: # storage: 1Gi # --- # apiVersion: batch/v1 # kind: CronJob # metadata: # name: crates-db-backup # spec: # schedule: "20 4 * * *" # jobTemplate: # spec: # template: # metadata: # labels: # app: crates-postgres-backup # spec: # restartPolicy: Never # containers: # - name: crates-postgres-backup # image: postgres:16 # command: # - "/bin/sh" # - "-c" # - # | # cd /mnt/dest/ # TZ="Australia/Melbourne" # TIMESTAMP=$(date '+%Y-%m-%d-%H-%M-%S') # DEST=crates-$TIMESTAMP.sql.gz # echo "Backing up to $DEST" # pg_dump --dbname=$POSTGRES_URL | gzip > $DEST # echo "Backup Complete" # echo "Removing old copies..." # find . -type f -name "*.sql.gz" -mtime 7 | xargs rm -v # echo "Setting latest link..." # ln -nfs $DEST latest.sql.gz # env: # - name: POSTGRES_URL # valueFrom: # secretKeyRef: # name: crates # key: POSTGRES_URL # volumeMounts: # - name: crates-postgres-backup-storage # mountPath: /mnt/dest # volumes: # - name: crates-postgres-backup-storage # persistentVolumeClaim: # claimName: crates-postgres-backup-pvc # ---