Files
athletic-map-deploy/tenants/demo/50-backup.yaml
T

58 lines
1.7 KiB
YAML

# Backup diario do Postgres do tenant demo (pg_dump -> PVC, retencao 7 dias)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pg-backups
namespace: demo-prod
spec:
accessModes: [ReadWriteOnce]
storageClassName: local-path
resources:
requests:
storage: 5Gi
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: pg-backup
namespace: demo-prod
spec:
schedule: "0 2 * * *"
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 3
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: pg-backup
image: postgres:16
env:
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
command: ["/bin/sh", "-c"]
args:
- |
set -eo pipefail
echo "aguardando postgres ficar acessivel..."
for i in $(seq 1 30); do pg_isready -h postgres -U atm -t 3 >/dev/null 2>&1 && break; sleep 2; done
TS=$(date +%Y%m%d-%H%M%S)
for DB in athleticmap keycloak; do
echo "dump $DB ..."
pg_dump -h postgres -U atm -d "$DB" | gzip > "/backups/${DB}-${TS}.sql.gz"
done
find /backups -name '*.sql.gz' -mtime +7 -delete
echo "backups atuais:"; ls -lh /backups | tail -20
volumeMounts:
- name: backups
mountPath: /backups
volumes:
- name: backups
persistentVolumeClaim:
claimName: pg-backups