Episode ini membahas Ceph di ekosistem Kubernetes dan cloud native: Ceph CSI untuk RBD dan CephFS, integrasi Rook dan OpenStack Cinder, perbandingan deploy Ceph di Kubernetes vs Ceph eksternal, serta pola storage orchestration menggunakan operator.

Selamat datang di episode 16 series Belajar Ceph! Hingga episode 15 kita memperlakukan Ceph sebagai cluster standalone. Sekarang giliran pertanyaan yang sangat relevan di era modern: bagaimana Ceph hidup berdampingan dengan Kubernetes dan ekosistem cloud native? Episode ini menjawabnya secara menyeluruh.
Kubernetes adalah orkestrator de facto untuk workload container, dan storage adalah bagian paling penting dari sistemnya. Ceph menempati posisi unik karena menyediakan block dan file sekaligus via CSI, dan bahkan bisa dijalankan sendiri di dalam Kubernetes memakai operator seperti Rook.
Di akhir episode ini kalian akan paham cara memakai Ceph CSI untuk RBD dan CephFS, mengenal Rook sebagai storage operator, membandingkan deployment Ceph di dalam dan di luar Kubernetes, serta memahami pola orchestration storage di lingkungan cloud native. Mari kita mulai.
Container Storage Interface (CSI) adalah standar yang memungkinkan Kubernetes mem-provision storage dari vendor mana pun. Driver Ceph CSI tersedia dalam dua flavor: csi-rbd untuk block volume dan csi-cephfs untuk shared filesystem. Kedua driver berjalan sebagai daemonset dan sidecar di cluster Kubernetes.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ceph-rbd
provisioner: rbd.csi.ceph.com
parameters:
clusterID: 3a5f0d12-6b2e-4c8a-9f1e-2d3c4b5a6f70
pool: rbd-pool
imageFeatures: layering
csi.storage.k8s.io/fstype: ext4rbd.csi.ceph.com adalah provisioner untuk RBD. Parameter clusterID menunjuk ke FSID cluster Ceph, pool menentukan tempat image dibuat. StorageClass ini bisa langsung dipakai oleh PVC.
Setelah StorageClass siap, buat PVC dan volume akan diprovision otomatis:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data-app
spec:
storageClassName: ceph-rbd
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10GiReadWriteOnce berarti volume hanya bisa di-mount satu node pada satu waktu — cocok untuk RBD. Untuk workload yang butuh banyak reader sekaligus, gunakan StorageClass CephFS dengan ReadWriteMany.
Driver CephFS memakai pool metadata dan data dari filesystem Ceph yang sudah ada:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ceph-fs
provisioner: cephfs.csi.ceph.com
parameters:
clusterID: 3a5f0d12-6b2e-4c8a-9f1e-2d3c4b5a6f70
fsName: myfs
csi.storage.k8s.io/fstype: ext4cephfs.csi.ceph.com memprovision subvolume CephFS untuk setiap PVC. Volume ini bisa diakses banyak pod sekaligus, sehingga cocok untuk aplikasi yang berbagi filesystem.
Rook adalah operator Kubernetes yang mengotomatiskan deployment, konfigurasi, dan operasional Ceph di dalam cluster Kubernetes. Dengan Rook, konfigurasi cluster Ceph dinyatakan sebagai CustomResourceDefinition, dan operator menangani sisanya.
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: rook-ceph
namespace: rook-ceph
spec:
dataDirHostPath: /var/lib/rook
mon:
count: 3
storage:
useAllNodes: true
useAllDevices: trueCephCluster adalah resource utama Rook. mon.count: 3 membuat tiga MON, dan useAllDevices: true memakai semua disk kosong untuk OSD. Operator menerjemahkan spesifikasi ini menjadi daemon Ceph yang berjalan sebagai pod.
Ada dua pola yang sah:
Pilih berdasarkan kebutuhan: jika storage adalah produk utama, pisahkan; jika storage adalah pelengkap workload, Rook adalah jalan pintas yang sehat.
Ceph di Kubernetes memanfaatkan scheduling dan self-healing Kubernetes, tetapi menambah lapisan kompleksitas: upgrade harus disinkronkan, dan kegagalan node Kubernetes memengaruhi daemon Ceph. Ceph eksternal memberi kendali penuh dengan operasional yang lebih klasik dan terisolasi dari siklus release Kubernetes.
Menjalankan Ceph di dalam Kubernetes berarti daemon Ceph berbagi resource dengan workload lain. Karena OSD sensitif terhadap latency, node yang padat bisa menurunkan performa. Banyak deployment produksi memakai node dedicated untuk storage meskipun Ceph berjalan di Kubernetes, untuk menghindari noisy neighbors.
Operator seperti Rook adalah contoh pola storage orchestration: logika operasional storage — provision, resize, backup, recovery — ditulis sebagai kode dan dijalankan otomatis oleh controller. Ini mengurangi pekerjaan manual berulang dan membuat perilaku konsisten antar deployment.
Pola terbaik di cloud native adalah memisahkan control plane (operator, CSI controller) dari data plane (OSD). Daemon storage berjalan di node dengan label khusus, sementara kontrol berjalan di mana saja. Dengan cara ini, scaling dan maintenance bisa dilakukan per bagian tanpa saling mengganggu.
kubectl label node node-storage-1 role=storagekubectl label node memberi label pada node khusus storage. Operator dan scheduler lalu bisa memastikan OSD hanya berjalan di node yang dilabeli, menjaga kualitas performa storage tetap terkontrol.
Di episode ini kalian sudah memahami posisi Ceph di ekosistem Kubernetes dan cloud native: memakai Ceph CSI untuk RBD dan CephFS melalui StorageClass dan PVC, mengenal Rook sebagai operator storage, membandingkan deployment Ceph di dalam dan di luar Kubernetes, serta memahami pola storage orchestration dengan operator dan pemisahan control plane dari data plane.
Inti yang harus dibawa pulang:
Di episode 17 selanjutnya kita akan membahas object lifecycle & S3 features — bucket lifecycle dan versioning, kebijakan object dan multipart upload, fitur GDPR dan data retention, serta integrasi object storage dengan analytics. Saatnya menguasai fitur object storage paling canggih!