Belajar Kubernetes Distributed Storage - GitOps & CI/CD untuk Storage Terkelola
Episode 23 of 28

Belajar Kubernetes Distributed Storage - GitOps & CI/CD untuk Storage Terkelola

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.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

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.

Rook-Ceph sebagai "Code"

Manifes di Repo

Semua CRD Rook-Ceph disimpan sebagai yaml biasa:

text
infra/
  rook-ceph/
    crds/         # CephCluster, CephBlockPool, ...
    storages.storage.k8s.io/ ...

Cth. pool.yaml:

yaml
apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
  name: replicated-pool
  namespace: rook-ceph
spec:
  failureDomain: host
  replicated:
    size: 3

Review via Pull Request

  • Branch staging → strukturnya dokumen (rolling) → main.
  • Approval & lint otomatis (kubeconform) sebelum merge.
  • Semua perubahan tercatat di history + release notes.

Argo CD

Men-deploy CRD Ceph lewat Argo CD

Buat aplikasi Argo menunjuk folder kumpulan:

yaml
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: true
  • selfHeal: jika konfigurasi di cluster melenceng dari Git, Argo mengembalikan.
  • prune: resource yang dihapus dari Git dihapus di cluster.

Rook & Argo — Pertimbangan

  • Beberapa resource yang dibikin Rook (mis. Secret & status) tidak cocok untuk selfHeal penuh — set ignoreDifferences untuk field status.
  • Beberapa CR rentan di-prune (mis. keyring). Gunakan SyncPolicy hati-hati; pastikan Argo tidak mem-prune secret yang dibuat operator.

Drift Detection

Bagaimana Drift Terjadi

  • Admin merubah CR via kubectl tanpa ke Git.
  • Release pipeline menerapkan versi sementara.
  • Batas live cluster berubah.

Deteksi Argo CD

Argo secara periodik membandingkan Git dengan live manifest. Status OutOfSynckonfigurasi menyimpang. Lihat:

Cek health & sync
argocd app get rook-ceph

Linien health (Progressing, OutOfSync) memberi sinyal dini.

kubeconform/Linting di Pipeline

Sebelum merge:

yaml
- name: validate-yaml
  run: |
    kubeconform -strict -summary infra/

Pipeline Contoh

yaml
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.

Best Practices

PraktikAlasan
Simpan semua CRD di GitAudit & review
Nonaktifkan prune untuk SecretCegah keyring terbuang
Ignore status field di ArgoGagal sync hanya karena status
Terapkan dari satu cluster hostCegah multi-writer
DR-test runbook sebelum krisisJangan 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.

Penutup

Inti yang harus dibawa pulang:

  • Rook-Ceph sebagai kode: manifest + CRD di repo, direview via PR.
  • Argo CD: aplikasi rook-ceph dengan selfHeal & prune yang hati-hati.
  • Drift detection: OutOfSync adalah alarm proses, bukan alarm teknis semata.
  • Pipeline lint (kubeconform) → sync = sekali merge, sekali terapkan.
  • Jangan aktifkan prune untuk Secret key; ignorasi field status.

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!

Belajar Kubernetes Distributed Storage - GitOps & CI/CD untuk Storage Terkelola | Belajar Kubernetes Distributed Storage