diff --git a/deployments/operators/postgresql.yaml b/deployments/operators/postgresql.yaml index fbe30a7..acd9c06 100644 --- a/deployments/operators/postgresql.yaml +++ b/deployments/operators/postgresql.yaml @@ -80,3 +80,69 @@ spec: ports: - port: 5432 targetPort: 5432 + +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: postgres-backup-pv +spec: + capacity: + storage: 5Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-path + hostPath: + path: /dpool/postgres/backup + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: postgres-backup-pvc + namespace: postgres +spec: + accessModes: + - ReadWriteOnce + storageClassName: local-path + resources: + requests: + storage: 5Gi + + +--- +apiVersion: batch/v1 +kind: CronJob +metadata: + name: postgres-backup + namespace: postgres +spec: + schedule: "0 2 * * *" # Every day at 2 AM + jobTemplate: + spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: pg-backup + image: postgres:15 + envFrom: + - secretRef: + name: postgres-secret + command: + - /bin/sh + - -c + - | + mkdir -p /backup + PGPASSWORD=$POSTGRES_PASSWORD pg_dump -U $POSTGRES_USER -h localhost $POSTGRES_DB > /backup/backup-$(date +'%Y-%m-%d').sql + volumeMounts: + - name: backup-volume + mountPath: /backup + volumes: + - name: backup-volume + persistentVolumeClaim: + claimName: postgres-backup-pvc + + +