Velero Backup
5 min read
Kubernetes Cluster : Velero Backups #
Velero adalah alat open-source untuk pencadangan (backup) dan pemulihan (restoration) cluster Kubernetes yang berfungsi sebagai solusi disaster recovery. Velero juga mendukung migrasi cluster resource serta backup untuk persistent volumes. Backup secara manual maupun terjadwal ke penyimpanan eksternal memastikan keamanan dan perlindungan data Kamu.
Dengan Velero, Kamu bisa melakukan hal-hal berikut :
- Mencadangkan seluruh cluster Kubernetes atau resource / persistent volumes tertentu, lalu memulihkannya jika terjadi kehilangan data.
- Mereplikasi seluruh cluster Kubernetes (misalnya membuat instansi pengembangan atau pengujian berdasarkan cluster produksi), atau memigrasikan resource tertentu ke cluster lain.
Kamu bisa mengintegrasikan pencadangan Velero dengan cluster Kubernetes di platform ini dengan sangat mudah. Cukup ikuti langkah-langkah berikut :
1. Siapkan penyimpanan yang kompatibel dengan S3, yang akan digunakan Velero untuk menyimpan backup. Misalnya, Kamu bisa menggunakan : AWS S3, VHI S3, dan/atau MinIO Cluster.
Dalam panduan ini, kita akan menggunakan MinIO Cluster, agar seluruh pengaturan tetap berada dalam platform yang sama. Kamu bisa memasang MinIO Cluster hanya dalam beberapa klik melalui menu Marketplace.

Setelah instalasi selesai, Kamu akan melihat detail kredensial MinIO milikmu (yang juga dikirimkan melalui email). Data ini akan diperlukan di langkah berikutnya, jadi pastikan untuk mencatat atau menyimpannya dengan baik.

Lalu tunggu server pertama untuk memformat disk.
2. Setelah itu, buka panel admin dari cluster MinIO Kamu dan buat bucket baru (misalnya dengan nama velero) di dalam storage cluster tersebut. Bucket ini akan digunakan Velero untuk menyimpan data backup.

3. Cari rilis terbaru dari vmware-tanzu/velero (dalam contoh ini versi v1.8.1), lalu klik tautan di bagian Download dan salin URL untuk arsip linux amd64. URL ini akan digunakan untuk mengunduh binary Velero ke server Anda.

đź’ˇ TIP
Dalam contoh ini, kita akan mengunggah file binary Velero langsung ke server Kubernetes Cluster. Namun, Kamu juga bisa menyimpannya di tempat lain (misalnya di komputer lokal) asalkan memiliki akses API ke cluster tersebut.
4. Hubungkan ke control plane Kubernetes Cluster Kamu melalui SSH (misalnya menggunakan Web SSH). Download arsip menggunakan tautan dari langkah sebelumnya, lalu ekstrak file binary velero ke direktori /usr/local/sbin
wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz tar -zxvf velero-v1.8.1-linux-amd64.tar.gz -C /usr/local/sbin --strip-components=1 velero-v1.8.1-linux-amd64/velero
📝 NOTE
Jika kamu mengunggah file Velero menggunakan file manager (bukan lewat perintah wget), kamu harus mengatur izin file tersebut agar bisa dijalankan. Berikut langkah-langkahnya :
chmod 755 /usr/local/sbin/velero
5. Buat file /root/credentials-velero dan masukkan kredensial S3 storage kamu (lihat langkah pertama).
[default] aws_access_key_id = {accessKey} aws_secret_access_key = {secretKey}

6. Sesuaikan perintah di bawah ini dengan nilai yang benar, lalu jalankan untuk melakukan deployment Velero:
velero install --provider aws --plugins velero/velero-plugin-for-aws:v1.4.1 --bucket velero --secret-file ./credentials-velero --use-volume-snapshots=true --backup-location-config region=default,s3ForcePathStyle="true",s3Url=http://minio.vip.jelastic.cloud --image velero/velero:v1.16.1 --snapshot-location-config region="default"
Placeholder berikut harus kamu ganti:
- {bucket} → nama bucket yang sudah kamu buat (misalnya: velero)
- {s3Url} → link HTTP ke storage S3 kamu (misalnya: http://minio.vip.jelastic.cloud)
- {image} → image container Velero (misalnya: velero/velero:v1.8.1)
Kami menggunakan emulasi AWS untuk bekerja dengan S3 dan add-on restic karena kami menggunakan penyimpanan NFS yang tidak memiliki fungsi snapshot bawaan.
7. Sekarang mari kita deploy sebuah aplikasi uji coba yang menggunakan storage dan mount untuk menguji bagaimana Velero dapat melakukan backup. Kami akan menggunakan aplikasi contoh berikut:
wget https://www.virtuozzo.com/application-platform-docs/kubernetes-velero-backups/test-instance.yaml kubecte.yamll apply -f test-instanc

Kamu bisa memeriksa aplikasi yang baru saja dideploy dengan perintah berikut:
kubectl get pods,pvc,pv -n test-nginx

Jalankan perintah-perintah di bawah ini untuk menghasilkan data acak yang akan mensimulasikan penggunaan aplikasi :
kubectl -n test-nginx exec -it nginx-test -- /bin/bash dd if=/dev/urandom of=/usr/share/nginx/html/test-file3.txt count=512000 bs=1024 ls -laSh /usr/share/nginx/html/ exit

8. Kamu perlu memberi anotasi pada pod aplikasi Kamu untuk memastikan data penyimpanan NFS disertakan dalam backup. Kamu bisa mendapatkan nama storage yang dibutuhkan dari aplikasi yang sudah dideploy (dalam contoh ini, namanya mystorage).
đź’ˇ TIP
Tanpa anotasi tersebut, definisi PV dan PVC akan disalin, tetapi datanya tidak akan ikut terbackup.
![]()
9. Sekarang, mari kita buat backup dari aplikasi uji coba Kamu.
velero backup create test-nginx-b4 --include-namespaces test-nginx --wait

- Periksa penyimpanan MinIO kamu. Data dari Velero dan restic seharusnya sudah tersimpan di sana.

Selain itu, periksa juga bahwa backup yang telah dibuat memang ada dan dalam kondisi baik.
velero get backups

11. Mari kita hapus sepenuhnya aplikasi contoh tersebut untuk menguji proses pemulihannya dengan benar.
kubectl delete ns test-nginx

Bersihkan juga data di Shared Storage (dalam direktori /data).

12. Setelah siap, pulihkan aplikasi Kamu dari backup dengan perintah berikut :
velero restore create --from-backup test-nginx-b4

Selesai! Kamu bisa memverifikasi bahwa semua hal—termasuk data yang tersimpan—sudah berhasil dipulihkan.
Backup Scheduling #
Velero mendukung proses backup otomatis melalui penjadwalan. Kamu bisa membuat template jadwal yang dibutuhkan menggunakan notasi cron (menggunakan zona waktu UTC). Sintaks umum yang digunakan adalah :
velero schedule create {scheduleName} --schedule="{schedule}"
1. Gunakan tabel di bawah ini sebagai referensi untuk mengatur jadwal backup menggunakan ekspresi cron standar:

Sebagai contoh, untuk membuat backup setiap enam jam, Kamu bisa gunakan perintah berikut:
velero schedule create myschedule --schedule="0 */6 * * *"Â
2. Schedule juga dapat diekspresikan menggunakan sintaks @every {durasi}. Durasi dapat ditentukan menggunakan kombinasi detik (s), menit (m), dan jam (h).
Sebagai contoh, untuk membuat backup setiap enam jam menggunakan sintaks @every, kamu bisa gunakan perintah berikut :
 velero schedule create myschedule --schedule="@every 6h"Â
3. Kamu bisa menambahkan opsi tambahan saat membuat jadwal backup, seperti membackup namespace tertentu, mengatur masa berlaku backup, dan lainnya. Gunakan perintah berikut untuk melihat daftar lengkap parameter yang tersedia :
 velero schedule create --help
Selamat! Sekarang Kamu sudah tahu cara membuat backup otomatis untuk proyek Kubernetes menggunakan Velero.
Powered by BetterDocs
