Episode ini membedah arsitektur Velero: velero server sebagai deployment di cluster, velero CLI sebagai client, serta peran CRD BackupStorageLocation (BSL) dan VolumeSnapshotLocation (VSL). Kalian juga mengenal seluruh komponen inti mulai dari namespace velero, CRD Backup/Restore/Schedule, hingga plugin object store dan node-agent.

Setelah memahami sejarah dan alasan Velero ada di episode 1, sekarang kita membuka kap mesinnya: bagaimana Velero bekerja. Episodes selanjutnya (3-22) akan terus merujuk ke arsitektur ini, jadi pahami baik-baik sebelum mengetik perintah velero install.
Konsep terpenting yang harus kalian internalisasi: Velero bukan satu binary besar yang melakukan semuanya, melainkan sistem terpisah — server di dalam cluster, CLI di luar cluster, CRD sebagai "kontrak" penyimpanan state, dan plugin sebagai jembatan ke penyedia eksternal. Analoginya seperti perusahaan logistik: ada gudang (object storage), ada petugas gudang (server), ada surat perintah (CRD), dan ada armada truk (plugin).
Velero server adalah deployment bernama velero di namespace velero yang menjalankan binary velero server. Server ini adalah controller: ia terus memantau CRD (Backup, Restore, Schedule, dan lain-lain), lalu mengeksekusinya. Ketika kalian membuat objek Backup, server-lah yang mengambil manifest resource dari API server dan mengunggahnya ke object storage.
kubectl get deploy velero -n velero
kubectl get pods -n velerovelero CLI adalah binary yang berjalan di laptop/CI kalian. Ia tidak mengerjakan backup sendiri — ia hanya menerjemahkan perintah kalian menjadi objek CRD di cluster, lalu server yang bekerja. Ini pola client-server yang sama dengan kubectl dan API server Kubernetes.
velero client config set namespace=velero
velero versionVelero mendefinisikan sejumlah Custom Resource Definition (CRD) yang menjadi "database" operasionalnya. Yang paling sering kalian temui:
backups.velero.io): satu operasi backup.restores.velero.io): satu operasi restore.schedules.velero.io): backup terjadwal.backupstoragelocations.velero.io): lokasi object storage.volumesnapshotlocations.velero.io): lokasi snapshot cloud.Karena semuanya objek Kubernetes biasa, kalian bisa melihatnya dengan kubectl:
kubectl get crd | grep velero.io
kubectl get backup -n velero
kubectl get backupstoragelocations -n veleroBSL menentukan ke mana manifest backup dan file data disimpan: bucket, prefix, region, dan endpoint. Satu cluster bisa punya beberapa BSL (misalnya untuk environment berbeda atau aturan compliance). Inilah yang membuat backup Velero "portable" — BSL hanya menunjuk ke bucket, bukan ke cluster tertentu.
VSL menentukan di mana snapshot volume cloud dibuat: region dan parameter spesifik provider (misal KMS key untuk EBS). VSL hanya relevan untuk backup volume via cloud snapshot; backup file-level (restic/kopia) tidak memakai VSL karena data langsung ditulis ke BSL. Kita bandingkan keduanya di episode 8.
Velero memakai sistem plugin agar tidak menulis kode spesifik vendor ke dalam inti. Jenisnya:
Plugin ditambahkan saat install atau belakangan dengan velero plugin add (kita bahas lengkap di episode 18).
Untuk memperjelas siapa melakukan apa, ikuti alur velero backup create my-backup:
Backup di API server.--snapshot-volumes) atau node-agent melakukan file-level backup (jika restic/kopia).Completed — kalian melihatnya lewat velero backup get.Note
Semua status tinggal di CRD di cluster, bukan di object storage. Itu sebabnya jika cluster hilang total, langkah pertama DR adalah menginstall ulang Velero (server + BSL yang sama) — lalu restore dari bucket. Detail runbook ini kita susun di episode 12.
Seluruh komponen server tinggal di namespace velero: deployment velero, DaemonSet node-agent (untuk restic/kopia), Secret credential, dan semua CRD instance. Kebijakan keamanan untuk membatasi siapa yang bisa mengakses namespace ini kita bahas di episode 13.
kubectl get all -n velero
kubectl get ds node-agent -n veleroInti yang harus dibawa pulang:
velero backup create hanya membuat CRD Backup.Di episode 3 selanjutnya kita akan menginstall Velero — lewat velero install maupun Helm chart — dan mengonfigurasi BackupStorageLocation pertama ke MinIO/AWS S3, termasuk VSL dan opsi insecure skip TLS untuk endpoint lokal. Di sinilah seri ini mulai praktik nyata.