Something went wrong. Try again.
AtAuth
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135---# CronJob to backup SQLite database before deploymentsapiVersion: batch/v1kind: CronJobmetadata: name: atauth-gateway-backup namespace: atauthspec: schedule: "0 */6 * * *" # Every 6 hours concurrencyPolicy: Forbid successfulJobsHistoryLimit: 3 failedJobsHistoryLimit: 1 jobTemplate: spec: template: spec: securityContext: runAsNonRoot: true runAsUser: 1001 fsGroup: 1001 containers: - name: backup image: alpine:3.19 command: - /bin/sh - -c - | set -e TIMESTAMP=$(date +%Y%m%d-%H%M%S) BACKUP_FILE="/backups/gateway-${TIMESTAMP}.db"
echo "Starting backup at ${TIMESTAMP}"
# Copy database (SQLite safe copy) cp /data/gateway.db "${BACKUP_FILE}"
# Verify backup sqlite3 "${BACKUP_FILE}" "PRAGMA integrity_check;"
# Keep only last 10 backups ls -t /backups/gateway-*.db | tail -n +11 | xargs -r rm
echo "Backup complete: ${BACKUP_FILE}" ls -la /backups/ volumeMounts: - name: data mountPath: /data readOnly: true - name: backups mountPath: /backups resources: requests: memory: "32Mi" cpu: "10m" limits: memory: "64Mi" cpu: "100m" restartPolicy: OnFailure volumes: - name: data persistentVolumeClaim: claimName: atauth-gateway-data - name: backups persistentVolumeClaim: claimName: atauth-gateway-backups---# PVC for backupsapiVersion: v1kind: PersistentVolumeClaimmetadata: name: atauth-gateway-backups namespace: atauthspec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi---# Job to run backup before deployment (triggered manually or by CI)apiVersion: batch/v1kind: Jobmetadata: name: atauth-pre-deploy-backup namespace: atauth annotations: # This job is meant to be created fresh each time helm.sh/hook: pre-upgrade helm.sh/hook-delete-policy: before-hook-creationspec: ttlSecondsAfterFinished: 600 template: spec: securityContext: runAsNonRoot: true runAsUser: 1001 fsGroup: 1001 containers: - name: backup image: alpine:3.19 command: - /bin/sh - -c - | set -e TIMESTAMP=$(date +%Y%m%d-%H%M%S) BACKUP_FILE="/backups/pre-deploy-${TIMESTAMP}.db"
echo "Creating pre-deployment backup" cp /data/gateway.db "${BACKUP_FILE}" sqlite3 "${BACKUP_FILE}" "PRAGMA integrity_check;"
echo "Pre-deploy backup complete: ${BACKUP_FILE}" volumeMounts: - name: data mountPath: /data readOnly: true - name: backups mountPath: /backups resources: requests: memory: "32Mi" cpu: "10m" limits: memory: "64Mi" cpu: "100m" restartPolicy: Never volumes: - name: data persistentVolumeClaim: claimName: atauth-gateway-data - name: backups persistentVolumeClaim: claimName: atauth-gateway-backups