Backup tanpa restore hanyalah penyimpanan data. Episode ini mengajarkan restore penuh dari backup, restore ke namespace berbeda lewat `--namespace-mappings`, serta restore selektif dengan `--include-resources`, `--include-namespaces`, dan `--selector`.

Di episode 4 kalian membuat backup pertama dan tahu persis isinya. Sekarang kita uji nilai sebenarnya: restore. Rule emas yang harus dipegang sejak sekarang: sebuah backup baru bisa dianggap sukses setelah di-restore dan diverifikasi. Jangan pernah menunda uji restore sampai bencana benar-benar terjadi — itu pelajaran yang diulang terus sepanjang seri ini.
Bayangkan backup adalah foto keluarga di cloud, dan restore adalah mencetak ulang foto itu. Foto boleh disimpan bagus-bagus, tapi kalau hasil cetaknya buram (atau gagal total), percuma. Episode ini memastikan kalian bisa mencetak ulang dengan kualitas penuh — bahkan dengan sedikit modifikasi.
Untuk simulasi pemulihan yang jujur, hancurkan dulu apa yang sudah ada:
kubectl delete ns app
kubectl get ns appNamespace hilang — seluruh resource berikut PVC dan datanya ikut terhapus. Sekarang restore:
velero restore create --from-backup my-backup
velero restore getSaat status restore Completed, verifikasi:
kubectl get deploy,pvc -n app
kubectl exec -n app deploy/nginx -- cat /usr/share/nginx/html/index.htmlindex.html berisi hello velero — artinya manifest DAN data volume pulih. Ini momen penting: jika hanya manifest yang kembali (data kosong), berarti lapisan volume backup-nya yang bermasalah.
Velero tidak menyalin resource mentah. Ia melakukan transformasi agar hasilnya valid: menghapus field yang hanya relevan saat runtime (seperti status), memperbarui referensi UID/owner, dan mengisi ulang clusterIP service. Ini sebabnya restore menghasilkan aplikasi yang berfungsi, bukan sekadar YAML yang sama persis.
Kasus paling umum: memulihkan data prod ke staging untuk pengujian, tanpa menyentuh prod. Gunakan namespace mapping:
velero restore create --from-backup my-backup \
--namespace-mappings app:app-stagingSemua resource yang semula di namespace app kini dibuat di app-staging, termasuk PVC — Velero membuat PVC baru dengan nama yang sama di namespace target dan memulihkan datanya.
kubectl get deploy,pvc -n app-stagingWarning
PVC itu bound ke satu namespace. Jika app-staging sudah punya PVC bernama app-data (misal dari restore sebelumnya), restore akan gagal dengan konflik nama. Hapus PVC lama dulu, atau gunakan --existing-resource-policy update dengan hati-hati. Detailnya di episode 10.
Tidak selalu perlu memulihkan semuanya. Misal hanya ConfigMap yang terlanjur terhapus:
velero restore create restore-cfg --from-backup my-backup \
--include-resources configmap,secretvelero restore create restore-partial --from-backup my-backup \
--include-namespaces appRestore hanya resource yang punya label tertentu:
velero restore create restore-frontend --from-backup my-backup \
--selector app=nginxKombinasi ketiganya bisa dipakai bersamaan, misalnya "restore Deployment dan ConfigMap yang berlabel app=nginx, hanya dari namespace app".
Restore yang berstatus Completed tidak menjamin semua resource sukses. Selalu periksa log:
velero restore describe restore-frontend --details
velero restore logs restore-frontendLog menampilkan resource apa yang direstore, diubah, atau dilewati — plus alasan (misal "already exists" atau "storage class not found").
Tip
Jadikan "restore drill" bagian dari alur kerja: backup → restore ke namespace staging → verifikasi data → hancurkan staging. Dengan siklus singkat ini, kalian melatih otot DR setiap hari, bukan hanya saat krisis.
Inti yang harus dibawa pulang:
velero restore create --from-backup <nama>; verifikasi manifest + data volume.--namespace-mappings prod:staging memulihkan ke namespace berbeda untuk testing/DR.--include-resources, --include-namespaces, dan --selector.velero restore describe --details dan velero restore logs setelah restore.Di episode 6 selanjutnya kita akan membuat backup otomatis dan terjadwal: velero schedule create dengan cron expression, pengaturan TTL untuk auto-expire, serta perbedaan mendasar schedule vs backup manual.