Mengelola Rook-Ceph sebagai kode: menyimpan berkas Rook dan CRD di Git, workflow review dan approval, penerapan otomatis via Argo CD, deteksi drift antara Git dan cluster, serta contoh pipeline lengkap.

Maintenance sudah aman (episode 22). Episode 23 mengangkat Rook-Ceph ke praktik engineering modern: GitOps & CI/CD — letak konfigurasi storage tidak di kepala sesepuh, tapi di repo yang bisa direview, di-audit, dan diputar ulang.
Mengapa penting? Storage adalah bagian infra yang paling mahal untuk salah konfigurasi. Dengan GitOps, perubahan direview sebelum diterapkan; setiap perubahan terdokumentasi; drift dideteksi. Satu aliran yang sama untuk workload biasa dan storage.
Semua CRD Rook-Ceph disimpan sebagai yaml biasa:
infra/
rook-ceph/
crds/ # CephCluster, CephBlockPool, ...
storages.storage.k8s.io/ ...Cth. pool.yaml:
apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
name: replicated-pool
namespace: rook-ceph
spec:
failureDomain: host
replicated:
size: 3staging → strukturnya dokumen (rolling) → main.Buat aplikasi Argo menunjuk folder kumpulan:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: rook-ceph
namespace: argocd
spec:
project: infra
source:
repoURL: https://github.com/org/infra.git
path: infra/rook-ceph
targetRevision: main
destination:
server: https://kubernetes.default.svc
namespace: rook-ceph
syncPolicy:
automated:
prune: true
selfHeal: trueSyncPolicy hati-hati; pastikan Argo tidak mem-prune secret yang dibuat operator.Argo secara periodik membandingkan Git dengan live manifest. Status OutOfSync → konfigurasi menyimpang. Lihat:
argocd app get rook-cephLinien health (Progressing, OutOfSync) memberi sinyal dini.
Sebelum merge:
- name: validate-yaml
run: |
kubeconform -strict -summary infra/name: apply-storage
on:
push:
branches: [main]
paths: [infra/rook-ceph/**]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: stefanprodan/kube-tools@v1
- run: kubeconform -strict -summary infra/rook-ceph
sync:
needs: validate
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: argoproj/argo-cd-action@v1
with:
command: app sync rook-ceph
env:
ARGOCD_SERVER: ${{ secrets.ARGOCD_SERVER }}
ARGOCD_AUTH_TOKEN: ${{ secrets.ARGOCD_TOKEN }}Artinya: setiap merge ke main yang menyentuh infra → lint → sync → Argo menerapkan. Aman, terdokumentasi.
| Praktik | Alasan |
|---|---|
| Simpan semua CRD di Git | Audit & review |
| Nonaktifkan prune untuk Secret | Cegah keyring terbuang |
| Ignore status field di Argo | Gagal sync hanya karena status |
| Terapkan dari satu cluster host | Cegah multi-writer |
| DR-test runbook sebelum krisis | Jangan coba-coba waktu DC mati |
Tip
Gabungkan GitOps dengan alerting (episode 18): jika Argo OutOfSync karena drift manual, alert bukan hanya "storage berubah" tapi juga "proses tidak diikuti" — pelajaran penting untuk budaya infra.
Inti yang harus dibawa pulang:
rook-ceph dengan selfHeal & prune yang hati-hati.OutOfSync adalah alarm proses, bukan alarm teknis semata.Di episode 24 selanjutnya kita akan membahas backup & DR scope (Velero + Ceph) — menilai RPO/RTO yang realistis, menyusun strategi backup database dan media, memakai Velero dengan plugin Restic/Kopia untuk data aplikasi, serta verifikasi restore. Sampai jumpa di episode 24!