82 lines
1.9 KiB
YAML
Executable File
82 lines
1.9 KiB
YAML
Executable File
---
|
|
|
|
apiVersion: v1
|
|
kind: PersistentVolume
|
|
metadata:
|
|
name: crates-postgres-backup-pv
|
|
spec:
|
|
storageClassName: ""
|
|
capacity:
|
|
storage: 1Gi
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
persistentVolumeReclaimPolicy: Retain
|
|
claimRef:
|
|
namespace: default
|
|
name: crates-postgres-backup-pvc
|
|
hostPath:
|
|
# Into homedir so we can scp it ez
|
|
path: "/home/ntr/archives/crates-postgres"
|
|
type: DirectoryOrCreate
|
|
|
|
---
|
|
|
|
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"
|
|
-
|
|
|
|
|
TZ="Australia/Melbourne"
|
|
TIMESTAMP=$(date '+%Y-%m-%d-%H-%M-%S')
|
|
DEST=/mnt/dest/crates-$TIMESTAMP-sql.gz
|
|
|
|
echo "Backing up to $DEST"
|
|
pg_dump --dbname=$POSTGRES_URL | gzip > $DEST
|
|
echo "Backup Complete"
|
|
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
|
|
|
|
---
|