Migrasi antar cluster adalah alasan paling umum orang memakai Velero. Episode ini memandu migrasi end-to-end: backup di cluster A, restore di cluster B memakai BSL yang sama, perbedaan cloud/storage class, praktik backup file-level saat storage berbeda, dan validasi staging sebelum cutover.

Hingga episode 10, backup dan restore kalian masih dalam "dunia yang sama" — cluster yang sama atau namespace yang sama. Episode 11 melepas batasan itu: memindahkan workload lengkap dengan datanya dari cluster A ke cluster B. Ini yang membuat Velero begitu digemari: migrasi lintas cluster tanpa menyalin YAML manual dan tanpa kehilangan data volume.
Anggap dua cluster seperti dua rumah. Backup di cluster A adalah "kontainer berisi seluruh isi rumah". Restore di cluster B adalah "menurunkan kontainer di rumah baru". Tantangannya bukan memindahkan — tapi memastikan kontainer muat: rak (storage class), ruangan (namespace), dan koneksi listrik (service/ingress) di rumah baru harus cocok.
Kunci migrasi: kedua cluster memakai BSL yang sama — bucket yang sama, region yang sama, credential yang sama. Backup dibuat di cluster A, dan cluster B (dengan Velero terinstall) akan melihat backup tersebut:
velero backup get
velero backup describe my-backup --detailsJika kedua cluster berada di cloud berbeda (AWS → GCP), pastikan plugin masing-masing terpasang dan BSL menunjuk ke bucket yang dapat diakses kedua cloud (misal bucket S3 yang dibaca GCP via interop, atau sebaliknya).
Buat daftar perbedaan sebelum restore agar tidak kaget:
gp2 (A) vs gp3 atau standard-rwo (B).--namespace-mappings).Sebelum migrasi, buat checkpoint akhir — backup fresh yang menangkap state terkini:
velero backup create pre-migration \
--include-namespaces app \
--ttl 720hJika storage class kedua cluster berbeda, pilih file-level backup (kopia) agar data volume portable:
velero backup create pre-migration \
--include-namespaces app \
--default-volumes-to-fs-backupvelero restore create migration-restore \
--from-backup pre-migration \
--storage-class-mappings gp2:gp3--storage-class-mappings gp2:gp3 memetakan PVC dari storage class cluster A ke storage class cluster B (fitur Velero 1.17+).
kubectl get deploy,pvc -n app
kubectl exec -n app deploy/nginx -- cat /usr/share/nginx/html/index.html
kubectl get svc -n appPoin verifikasi penting: pod Running, PVC Bound, dan data terbaca. Catat IP Service yang baru — DNS di cluster A tidak ikut bermigrasi.
Jangan langsung cutover. Restore dulu ke namespace staging di cluster B, verifikasi data, baru restore ke namespace produksi:
velero restore create staging-test \
--from-backup pre-migration \
--namespace-mappings app:app-staging \
--storage-class-mappings gp2:gp3Ini menjawab pertanyaan "bakal jalan nggak?" tanpa risiko. Setelah staging terbukti, lakukan restore final ke namespace aslinya.
Warning
Jangan membackup dan merestore dengan cloud snapshot bila storage class berbeda. Snapshot EBS tidak bisa jadi volume GCP PD — restore akan gagal. Untuk migrasi lintas cloud, wajib file-level (kopia/restic) karena datanya tersimpan sebagai file biasa di BSL.
Migrasi produksi biasanya mengikuti urutan:
velero backup create final-cutover --include-namespaces app --default-volumes-to-fs-backupBound — bukan PendingImagePullBackOff/CreateContainerConfigError)Tip
Simpan backup final setidaknya sampai masa observasi pasca-cutover selesai. Banyak tim mempertahankan TTL 30 hari untuk backup migrasi sebagai jaring pengaman "balik ke cluster A" jika ternyata masalah ditemukan di minggu pertama.
Inti yang harus dibawa pulang:
--storage-class-mappings gp2:gp3 menyesuaikan PVC di cluster tujuan.Di episode 12 selanjutnya kita merangkum semuanya ke level strategis: Disaster Recovery Plan — menentukan RPO/RTO, backup off-site ke region lain, menyusun runbook restore, dan melatih DR drill dengan menghapus cluster lalu merestore ke cluster baru.