Tidak semua volume adalah EBS atau GCP PD. Episode ini membahas backup volume berbasis CSI melalui VolumeSnapshotClass, dukungan CSI yang stabil sejak Velero 1.14, serta strategi cross-provider: memindahkan volume antar cloud dengan file-level backup atau konversi snapshot.

Di episode 8, cloud snapshot kita bahas sebatas snapshot "native" EBS/PD yang diurus plugin provider. Tapi dunia storage modern tidak berhenti di situ: CSI (Container Storage Interface) memungkinkan volume dari puluhan penyedia — dari Rook Ceph, Portworx, sampai NFS driver — dipakai sebagai persistent volume di Kubernetes. Velero harus bisa membackup semuanya. Episode 19 membahas caranya: CSI snapshot.
Bayangkan membackup isi rak arsip di gedung yang berbeda-beda (EBS, PD, Azure Disk, Ceph). Plugin provider lama hanya tahu gedung tertentu. CSI snapshot adalah "kontainer standar" yang bisa mengeluarkan isi rak di gedung mana pun — selama gedung itu punya pintu standar (VolumeSnapshotClass).
Sejak Velero 1.14, dukungan CSI stabil. Alurnya: Velero membuat objek VolumeSnapshot (CRD Kubernetes dari external-snapshotter), lalu CSI driver — bukan Velero — yang membuat snapshot sebenarnya. Ini memindahkan kerja snapshot dari plugin Velero ke ekosistem CSI yang sudah mapan.
Prasyarat di cluster:
volumesnapshotclasses, volumesnapshots, volumecontentsnapshots) terinstall.Buat/cek VolumeSnapshotClass untuk storage yang dipakai PVC:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-snapclass
driver: rbd.csi.ceph.com
deletionPolicy: RetaindeletionPolicy: Retain penting: snapshot tetap ada walau objek VolumeSnapshot dihapus — melindungi dari penghapusan tidak sengaja.
velero plugin add velero/velero-plugin-for-csi:v0.10.0velero backup create csi-backup \
--include-namespaces app \
--snapshot-volumes=trueVelero memproses setiap PVC dengan VolumeSnapshotClass yang tersedia, membuat VolumeSnapshot, dan mencatatnya di backup. Saat restore, Velero membuat PVC baru dan me-restore snapshot via CSI driver.
Note
Perbedaan kunci: cloud snapshot biasa butuh VSL (region, credential provider); CSI snapshot tidak — ia memakai infrastruktur CSI yang sudah ada di cluster. Inilah yang membuat CSI snapshot bekerja untuk storage non-cloud seperti Ceph.
Tidak semua CSI driver menyediakan VolumeSnapshotClass yang kompatibel. Jika tidak ada, jalur aman adalah file-level backup (kopia) — tidak bergantung pada fitur snapshot driver sama sekali:
velero backup create csi-fs-backup \
--include-namespaces app \
--default-volumes-to-fs-backupFile-level backup menyalin isi file volume ke BSL. Lebih lambat, tapi bekerja untuk semua tipe volume.
Snapshot bersifat cloud-specific: snapshot EBS tidak bisa menjadi PD GCP. Lintas cloud, kalian harus menggunakan jalur yang bisa dibaca di kedua belah pihak — dan satu-satunya yang portable adalah file-level backup di BSL bersama.
# Di cluster AWS: backup file-level
velero backup create cross-migrate --include-namespaces app --default-volumes-to-fs-backup
# Di cluster GCP: restore dengan BSL yang sama (bucket S3 dibaca via interop)
velero restore create cross-restore --from-backup cross-migrate \
--storage-class-mappings gp2:standard-rwoData volume berpindah sebagai file biasa. --storage-class-mappings menyesuaikan storage class tujuan (episode 10-11).
Untuk kasus tertentu (data sangat besar, waktu terbatas), bisa dikombinasikan: snapshot di cloud sumber → buat volume → file-level backup → restore di cloud tujuan. Ini praktisnya "snapshot sebagai perantara" untuk mempercepat pembacaan, bukan membawa snapshotnya langsung.
Warning
Aturan besi migrasi lintas cloud: backup file-level, bukan snapshot. Mengandalkan snapshot EBS saat pindah ke GCP adalah resep restore gagal di menit-menit terakhir. Uji satu volume dulu sebelum seluruh workload.
Inti yang harus dibawa pulang:
--snapshot-volumes=true.--storage-class-mappings saat storage class berbeda.Di episode 20 selanjutnya kita mengukur dan mengoptimalkan: Performance & Data Management — tuning paralelisme, resource limits pod Velero dan scaling node-agent, serta analisis dan ekspor ukuran backup.