Belajar Velero - Backup Pertama
Episode 4 of 23

Belajar Velero - Backup Pertama

Episode ini memandu backup pertama dengan `velero backup create`, membaca detail backup lewat `velero backup describe`, dan memahami isi sebuah backup: manifest resource plus data volume. Kalian juga belajar mengontrol scope backup dengan `--include-resources` dan `--exclude-resources`.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Velero sudah terinstall dan BSL berstatus Available di episode 3. Sekarang momen yang ditunggu: backup pertama. Jangan langsung backup seluruh cluster — mulai dari satu namespace yang berisi workload sederhana, misalnya aplikasi nginx dengan satu PVC.

Di episode ini kalian akan mengerti apa sebenarnya yang dihasilkan sebuah backup: bukan sekadar "salinan file", melainkan dua lapis data — manifest resource dan isi volume — yang dikemas dan diunggah ke object storage.

Menyiapkan Workload Uji

Buat namespace app dengan Deployment nginx dan PVC yang menulis file:

Kubernetesworkload.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: app-data
  namespace: app
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:alpine
          volumeMounts:
            - mountPath: /usr/share/nginx/html
              name: data
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: app-data
Terapkan dan tulis data uji
kubectl apply -f workload.yaml
kubectl exec -n app deploy/nginx -- sh -c 'echo "hello velero" > /usr/share/nginx/html/index.html'

Backup Pertama

Membuat Backup

Backup namespace app
velero backup create my-backup --include-namespaces app

Perintah ini membuat objek Backup di cluster; server Velero langsung bekerja mengambil seluruh resource di namespace app, termasuk PVC — dan (karena kita install dengan --default-volumes-to-fs-backup) meng-backup isi volume lewat node-agent.

Pantau status
velero backup get

Status akan berubah NewInProgressCompleted. Completed berarti sukses; status lain (PartiallyFailed, Failed) kita bedah di episode 16.

Membaca Detail Backup

Detail isi backup
velero backup describe my-backup --details

Perhatikan bagian-bagian penting outputnya: scope (namespace apa saja), jumlah resource yang disimpan, dan daftar volume yang di-backup dengan status sukses. --details menampilkan juga daftar lengkap resource per jenis — berguna untuk memverifikasi bahwa yang kalian kira masuk ternyata benar-benar masuk.

Isi Sebuah Backup

Manifest Resource

Velero mengambil setiap resource dalam scope backup dan menyimpannya sebagai JSON di object storage — persis seperti kubectl get <resource> -o json untuk semua resource yang dipilih. Ini mencakup Deployment, PVC, ConfigMap, Secret, Service, dan lain-lain. Untuk resource yang dibuat aplikasi sendiri (misal CRD dari operator), CRD-nya ikut disertakan secara otomatis selama ada di scope.

Data Volume

Lapisan kedua adalah isi persistent volume. Di instalasi episode 3, ini ditangani node-agent + kopia: data di-copy file-per-file ke BSL. Di cluster cloud dengan VSL, Velero membuat snapshot block-level (EBS/PD/Disk) yang jauh lebih cepat. Detail perbandingan keduanya ada di episode 8; yang penting di sini — keduanya tersimpan lewat BSL yang sama, sehingga backup tetap portable.

Lihat objek di bucket (MinIO)
mc ls local/velero/backups/my-backup/

Struktur folder: velero-backup.json (metadata), resources/ (manifest), dan kopia/ (repositori data volume).

Mengontrol Scope Backup

include-resources dan exclude-resources

Tidak semua resource perlu dibackup. Resource yang bersifat ephemeral dan dibuat ulang otomatis (misal Pod, ReplicaSet) justru memboroskan ruang dan memperlambat restore.

Backup dengan resource tertentu
velero backup create web-backup \
  --include-namespaces app \
  --include-resources deployment,statefulset,configmap,secret,pvc,service

Kebalikannya, kecualikan resource yang tidak perlu:

Backup dengan pengecualian
velero backup create no-events-backup \
  --include-namespaces app \
  --exclude-resources events,events.events.k8s.io

Resource yang dikecualikan saat restore akan dibuat ulang dari dependensinya — misalnya Pod yang tidak dibackup tetap ter-create karena Deployment-nya dibackup.

Tip

Prinsip scope: backup apa yang "mendefinisikan" aplikasi, bukan apa yang "menjalankan" aplikasi. Manifest sumber (Deployment, ConfigMap, Secret, PVC) wajib; artefak runtime (Pod, ReplicaSet, Event) biasanya tidak. Ini membuat backup kecil, cepat, dan restore-nya bersih.

Menargetkan BSL Tertentu

Jika cluster punya banyak BSL, pilih lokasi penyimpanan:

Backup ke BSL spesifik
velero backup create archived-backup \
  --include-namespaces app \
  --storage-location backups-archive

Penutup

Inti yang harus dibawa pulang:

  • Backup pertama: velero backup create my-backup --include-namespaces app; sukses bila status Completed.
  • velero backup describe --details memperlihatkan scope dan volume yang dibackup.
  • Isi backup dua lapis: manifest resource (JSON) + data volume (snapshot cloud atau kopia/restic).
  • --include-resources/--exclude-resources mengontrol jenis resource; hindari membackup artefak runtime.
  • Backup disimpan di BSL dan tetap portable antar cluster.

Di episode 5 selanjutnya kita membahas arah sebaliknya: restore — memulihkan aplikasi dari backup, termasuk restore selektif per resource dan namespace, serta --namespace-mappings untuk mengembalikan data ke namespace berbeda.

Belajar Velero - Backup Pertama | Belajar Velero