Moved Directus deployment configuration from k8s cluster to Git repository: - Main Directus deployment updated to v12.1.1 - PostgreSQL deployment (postgres:16-alpine) - Services for both Directus and PostgreSQL - Ingress with TLS/cert-manager - Backup CronJob (daily at 2 AM) - PVCs for database and uploads This enables GitOps management via Argo CD. Co-Authored-By: Paperclip <noreply@paperclip.ing>
87 lines
2.6 KiB
YAML
87 lines
2.6 KiB
YAML
apiVersion: batch/v1
|
|
kind: CronJob
|
|
metadata:
|
|
name: directus-backup
|
|
namespace: directus
|
|
labels:
|
|
app: directus
|
|
component: backup
|
|
spec:
|
|
schedule: "0 2 * * *"
|
|
successfulJobsHistoryLimit: 3
|
|
failedJobsHistoryLimit: 3
|
|
jobTemplate:
|
|
spec:
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: directus
|
|
component: backup
|
|
spec:
|
|
restartPolicy: OnFailure
|
|
containers:
|
|
- name: backup
|
|
image: postgres:16-alpine
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- |
|
|
set -e
|
|
BACKUP_DIR="/backups/directus"
|
|
BACKUP_FILE="${BACKUP_DIR}/directus-backup-$(date +%Y%m%d-%H%M%S).sql.gz"
|
|
echo "Starting Directus database backup to $BACKUP_FILE"
|
|
|
|
# Create backup directory if it doesn't exist
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# Perform PostgreSQL dump and compress
|
|
PGPASSWORD="$POSTGRES_PASSWORD" pg_dump \
|
|
-h directus-postgres \
|
|
-U directus \
|
|
-d directus \
|
|
--clean \
|
|
--if-exists \
|
|
--no-owner \
|
|
--no-privileges \
|
|
| gzip > "$BACKUP_FILE"
|
|
|
|
# Verify backup was created
|
|
if [ -f "$BACKUP_FILE" ]; then
|
|
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
|
|
echo "Backup completed successfully: $BACKUP_FILE ($SIZE)"
|
|
ls -lh "$BACKUP_FILE"
|
|
else
|
|
echo "ERROR: Backup file was not created"
|
|
exit 1
|
|
fi
|
|
|
|
# Clean up backups older than 30 days
|
|
echo "Cleaning up backups older than 30 days..."
|
|
find "$BACKUP_DIR" -name "directus-backup-*.sql.gz" -type f -mtime +30 -delete
|
|
|
|
# Show remaining backups
|
|
echo "Current backups:"
|
|
ls -lh "$BACKUP_DIR" | grep "directus-backup-" || echo "No backups found"
|
|
|
|
echo "Backup job completed"
|
|
env:
|
|
- name: POSTGRES_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: directus-db-credentials
|
|
key: postgres-password
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|
|
volumeMounts:
|
|
- name: backup-storage
|
|
mountPath: /backups
|
|
volumes:
|
|
- name: backup-storage
|
|
hostPath:
|
|
path: /var/backups
|
|
type: DirectoryOrCreate
|