Backup manual tidak cukup untuk produksi. Episode ini membahas `velero schedule create` dengan cron expression, pengaturan `--ttl` untuk auto-expire, perbedaan mendasar schedule vs backup manual, serta strategi retention yang sesuai kebutuhan RPO.

Backup manual di episode 4 berguna untuk latihan, tetapi untuk produksi kalian butuh backup yang berjalan sendiri — setiap hari, setiap jam, tanpa diingatkan. Di episode 6 kita membangun kebiasaan profesional itu: jadwal otomatis dengan TTL untuk membersihkan backup lama.
Analoginya seperti kebiasaan menyimpan arsip: manual berarti "menyimpan kapan ingat" (tidak bisa diandalkan), sedangkan terjadwal berarti "arsip masuk setiap pukul 02.00, otomatis dibuang setelah 30 hari". Mana yang lebih bisa dipercaya untuk bisnis kalian?
velero schedule create daily \
--schedule="0 2 * * *" \
--include-namespaces prod \
--ttl 720h \
--storage-location defaultAnatomi perintahnya:
daily — nama schedule (objek Schedule di CRD).--schedule="0 2 * * *" — cron expression standar: menit, jam, hari-bulan, bulan, hari-minggu. 0 2 * * * berarti setiap hari pukul 02:00.--include-namespaces prod — scope sama seperti backup manual.--ttl 720h — setiap backup yang lahir dari schedule ini otomatis kedaluwarsa setelah 720 jam (30 hari).--storage-location — BSL tujuan (opsional; default jika hanya satu).Beberapa contoh yang sering dipakai:
| Kebutuhan | Cron | Arti |
|---|---|---|
| Setiap hari 02:00 | 0 2 * * * | harian |
| Setiap jam | 0 * * * * | per jam, RPO 1 jam |
| Tiap Senin 03:30 | 30 3 * * 1 | mingguan |
| Tiap tanggal 1 04:00 | 0 4 1 * * | bulanan |
velero schedule create hourly \
--schedule="0 * * * *" \
--include-namespaces prod \
--ttl 48hvelero schedule get
velero schedule describe daily
velero schedule delete daily --confirmSetiap schedule membuat CRD Schedule; server yang menjalankan "pemicu" — saat waktunya tiba, ia membuat objek Backup baru dengan parameter yang sama.
Flag --ttl menentukan berapa lama sebuah backup dipertahankan. Setelah lewat, Velero otomatis menghapus backup dari object storage dan mengupdate status CRD menjadi Expired. Nilai ditulis sebagai durasi (misal 48h, 720h, 1680h).
velero backup create manual-checkpoint --include-namespaces app --ttl 168h
velero backup getTTL bukan sekadar pembersih — ini kontrol biaya dan compliance. Object storage tidak gratis: backup tanpa TTL menumpuk dan membengkakkan tagihan serta memperlambat listing backup.
Strategi umum di produksi adalah kombinasi beberapa schedule dengan TTL berbeda:
velero schedule create hourly --schedule="0 * * * *" --include-namespaces prod --ttl 24h
velero schedule create daily --schedule="0 2 * * *" --include-namespaces prod --ttl 720h
velero schedule create weekly --schedule="30 2 * * 0" --include-namespaces prod --ttl 8760hNote
TTL adalah retention, bukan immutability. Backup yang sudah TTL bisa dihapus lebih awal secara manual (velero backup delete). Untuk backup yang benar-benar tidak boleh hilang (wajib disimpan karena compliance), gunakan object lock di level bucket — kita bahas di episode 15.
Pahami perbedaan mendasarnya:
Backup langsung dibuat. Dipakai untuk momen spesifik (sebelum upgrade cluster, migrasi, eksperimen berisiko).Backup baru setiap cron menembak, dengan parameter dan TTL yang sama.Bukan "yang satu lebih baik" — keduanya saling melengkapi: schedule untuk rutinitas, manual untuk titik waktu tertentu (checkpoint sebelum migrasi di episode 11).
Inti yang harus dibawa pulang:
velero schedule create + cron expression membuat backup otomatis; --ttl mengatur auto-expire.48h, 720h (30 hari), 8760h (1 tahun).Di episode 7 selanjutnya kita akan memperhalus kontrol backup: label, selector, dan annotations — memilih resource berdasarkan label, menandai include/exclude lewat annotation velero.io, serta mengatur --snapshot-volumes dan hooks pre/post.