Kubernetes CronJob ile Periyodik Yedekleme Otomatikleştirme

Kubernetes'te düzenli yedekleme işleri çalıştırmak için CronJob kullanırız. Veritabanı dump'ı, log temizliği veya dosya senkronizasyonu gibi görevler belirli saatlerde otomatik yapılabilir.

Burada PostgreSQL veritabanını her gün saat 02:00'de yedekleyen bir CronJob yapılandırması göreceğiz. Yedek dosyası PersistentVolume'e kaydedilecek.

1apiVersion: batch/v1
2kind: CronJob
3metadata:
4name: db-backup
5namespace: default
6spec:
7schedule: "0 2 * * *" # Her gün 02:00'de
8jobTemplate:
9spec:
10template:
11spec:
12serviceAccountName: backup-user
13containers:
14- name: backup
15image: postgres:15
16command:
17- /bin/sh
18- -c
19- |
20BACKUP_FILE="/backups/db_$(date +%Y%m%d_%H%M%S).sql"
21pg_dump -h postgres-service -U postgres -d mydb > $BACKUP_FILE
22echo "Yedek tamamlandı: $BACKUP_FILE"
23# Son 7 günü tut, eski dosyaları sil
24find /backups -name "db_*.sql" -mtime +7 -delete
25env:
26- name: PGPASSWORD
27valueFrom:
28secretKeyRef:
29name: postgres-secret
30key: password
31volumeMounts:
32- name: backup-storage
33mountPath: /backups
34resources:
35requests:
36memory: "256Mi"
37cpu: "100m"
38limits:
39memory: "512Mi"
40cpu: "500m"
41volumes:
42- name: backup-storage
43persistentVolumeClaim:
44claimName: backup-pvc
45restartPolicy: OnFailure
46backoffLimit: 3

Yedekleme işini çalıştırmak için gerekli Secret ve PVC'yi oluştur:

1# PostgreSQL şifresi için Secret
2kubectl create secret generic postgres-secret \
3--from-literal=password=your-secure-password
4
5# Yedekleme depolama alanı
6apiVersion: v1
7kind: PersistentVolumeClaim
8metadata:
9name: backup-pvc
10spec:
11accessModes:
12- ReadWriteOnce
13resources:
14requests:
15storage: 50Gi
16storageClassName: standard

CronJob'u dağıt ve durumunu kontrol et:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1kubectl apply -f cronjob.yaml
2kubectl get cronjob db-backup
3kubectl describe cronjob db-backup
4kubectl logs -l job-name=db-backup-xxxxx

Beklenen çıktı: Yedek dosyaları `/backups` dizininde `db_20250115_020000.sql` formatında oluşturulur. Eski dosyalar otomatik silinir.

Sık hata: `schedule` alanında cron formatı yanlışsa job hiç çalışmaz. Format `minute hour day month weekday` şeklindedir. Test için `schedule: "/5 *"` (5 dakikada bir) kullanabilirsin.

bknz: Veritabanı Backup Testi: Yedek Aldığınız Verileri Geri Yükleyebiliyor musunuz

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz