Belajar Kubernetes Shared Filesystem RWX - Backup & Restore dengan Velero
Episode 21 of 28

Belajar Kubernetes Shared Filesystem RWX - Backup & Restore dengan Velero

Membangun lini pertahanan data terakhir dengan Velero: menginstall Velero dengan penyimpanan object bucket, membackup namespace beserta volume PVC, merestore resources dan data ke cluster baru, serta menyusun strategi RPO/RTO yang realistis

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

Semua langkah perlindungan data yang kita buat sejauh ini — snapshot (episode 17), rsync offsite (episode 15) — masih tersebar. Bagaimana kalau seluruh cluster hilang: kode Deployment, Service, Ingress, ConfigMap, DAN data PVC? Di episode 21 kita memakai Velero: alat backup yang menyatukan resources Kubernetes dan volume storage dalam satu alur.

Mengapa ini penting? Karena disaster recovery tidak cukup hanya menyimpan data — kalian butuh cara membangun kembali application stack yang lengkap dan teruji.

Instalasi Velero

Velero menyimpan backup ke object storage (S3, GCS, Azure, MinIO). Contoh untuk AWS S3:

Install client dan server Velero
# client
curl -Lo velero.tar.gz https://github.com/vmware-tanzu/velero/releases/latest/download/velero-linux-amd64.tar.gz
tar -xzf velero.tar.gz && sudo mv velero /usr/local/bin/
 
# server (dengan credentials S3)
velero install \
  --provider aws \
  --plugins velero/velero-plugin-for-aws:v1.10.0 \
  --bucket devvnull-backups \
  --backup-location-config region=ap-southeast-1 \
  --snapshot-location-config region=ap-southeast-1 \
  --secret-file ./credentials-velero

File credentials-velero berisi [default] aws_access_key_id=... aws_secret_access_key=.... Untuk MinIO lokal gunakan --backup-location-config s3Url=http://minio:9000.

KubernetesVerifikasi instalasi
kubectl -n velero get pods
velero get backup-locations

Backup Cluster (namespace)

Backup seluruh namespace aplikasi beserta volume-nya:

Backup namespace default
velero backup create laravel-app --include-namespaces default
velero backup describe laravel-app
velero backup logs laravel-app | tail -20

Yang terjadi di balik layar:

  • Velero menyalin manifest resources (Deployment, Service, PVC, Ingress, ConfigMap, Secret).
  • Untuk data volume, Velero memakai CSI snapshot bila tersedia (episode 17) atau file-level upload (Kopia/Restic) — yang terakhir merekam file dari NFS volume kita.

Tip

Dua mode data velero: --snapshot-volumes (blok/snapshot) dan --default-volumes-to-restic / --default-volumes-to-fs-backup (file-level). Untuk NFS RWX, mode file-level lebih portabel — hasil backup bisa direstore ke storage yang berbeda sama sekali.

Restore

Simulasi dramatis: hapus namespace default, lalu pulihkan semuanya:

Simulasi bencana dan restore
kubectl delete ns default
velero restore create --from-backup laravel-app
velero restore describe laravel-app
kubectl get deploy,svc,ingress,pvc -n default

Setelah restore, namespace yang hilang terlahir kembali: Deployment, Service, Ingress, dan PVC dengan data yang sama. Tunggu sampai Pod Ready:

KubernetesVerifikasi aplikasi pulih
kubectl rollout status deployment/laravel -n default --timeout=180s
curl -I https://laravel.example.com/storage/uploads/foto.jpg

Warning

Restore pertama di lingkungan kalian hampir pasti menemukan ketidakcocokan kecil (mis. Ingress host beda, PVC tidak langsung Bound). Jangan anggap restore bisa berhasil sebelum kalian mempraktikkannya. Uji restore berkala adalah bagian dari SLA.

Strategi RPO/RTO

Buat jadwal dan target yang realistis:

  • Backup harian otomatis (Schedule) — RPO 24 jam.
  • Cadangan offsite — bucket berada di storage berbeda dari cluster (jangan satu region saja untuk data kritis).
  • Uji restore per kuartal — kuarteran, catat RTO aktual, perbaiki runbook.

Jadwal otomatis:

Jadwal backup harian
velero schedule create nightly --schedule="0 2 * * *" \
  --include-namespaces default

Kombinasi yang lengkap untuk data kita:

  • Resources + data → Velero (atasan ini).
  • File-level offsite → rsync/restic (episode 15) untuk media yang tumbuh cepat.
  • Titik-waktu cepat → VolumeSnapshot (episode 17).

Note

Baurkan ketiganya: snapshot untuk pemulihan cepat tanpa keluar cluster, rsync/restic untuk file offsite, Velero untuk resources + konsistensi penuh. Tidak ada satu pukulan yang menyelesaikan semua skenario — desain berlapis inilah yang menyelamatkan di hari-H.

Penutup

Pada episode 21 ini, arsitektur data kalian kini punya lini pertahanan terakhir:

Inti yang harus dibawa pulang:

  • velero install dengan bucket object storage (S3/MinIO) membuat backup server.
  • velero backup create --include-namespaces default menyatukan resources + volume.
  • velero restore create --from-backup memulihkan stack setelah bencana.
  • Strategi: backup harian (RPO 24 jam), offsite, uji restore kuartalan (RTO terukur).
  • Velero + snapshot + rsync/restic = tiga lapis yang saling menutupi.

Di episode 22 selanjutnya kita akan mengotomasi build & deploy: pipeline CI/CD GitHub Actions untuk membangun image, kubectl set image rolling update, pola GitOps Argo CD/Flux, dan zero-downtime dengan readiness probe serta maxSurge/maxUnavailable. Sampai jumpa di episode 22!

Belajar Kubernetes Shared Filesystem RWX - Backup & Restore dengan Velero | Belajar Kubernetes Shared Filesystem RWX