Mendesain jaringan untuk Ceph: memisahkan public network (client) dan cluster network (internal OSD) untuk menjaga performa, memilih network provider di Rook, menyusun network policy untuk port MON OSD MGR dan RGW, serta akses yang aman ke dashboard dan object store.

Storage Ceph hidup di jaringan — dan bagaimana jaringannya dirancang menentukan seberapa baik ia bertahan saat backfill, recovery, atau beban client penuh. Episode 11 membahas sisi network Ceph: public vs cluster network, network provider di Rook, dan network policy.
Mengapa penting? Ceph adalah sistem jaringan yang intensif. Trafik client (database, aplikasi) dan trafik internal (replikasi, heartbeat, recovery) kadang berbagi link yang sama — dan jika satu link penuh, keduanya saling merebut. Memisahkan keduanya adalah keputusan arsitektur yang menyelamatkan performa.
Ceph membedakan dua jaringan:
spec:
network:
provider: host
selectors:
public: public
cluster: int-10gAtau di CephCluster:
spec:
network:
provider: hostNetwork| Provider | Keterangan |
|---|---|
| default | Pod network (CNI). Simple, tapi trafik public + cluster satu jalur |
| hostNetwork | Pod memakai network host node — performa tinggi, cocok high-throughput |
| multiNetwork | Gunakan macvlan/NAD (NetworkAttachmentDefinition) untuk memisahkan public & cluster secara fisik |
Untuk performa terbaik : hostNetwork: true atau multiNetwork dengan IP untuk tiap network.
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
name: cluster-net
namespace: rook-ceph
spec:
config: '{"cniVersion":"0.3.1","type":"macvlan","master":"eth1","mode":"bridge"}'Bila memakai multiNetwork, beri selector pada spec:
spec:
network:
provider: multiNetwork
selectors:
cluster: cluster-netCeph daemon terhubung ke berbagai port. Membatasi akses berdasarkan NetworkPolicy mencegah workload tak sah mengakses storage.
| Service | Port |
|---|---|
| MON | 6789 (v1), 3300 (v2) |
| OSD | 6800-7300 |
| MGR (admin/dashboard) | 8443, 9283 (metrics) |
| RGW | 8080 |
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-rgw
namespace: rook-ceph
spec:
podSelector:
matchLabels:
app: rook-ceph-rgw
policyTypes: [Ingress]
ingress:
- from:
- podSelector:
matchLabels:
app: laravel
ports:
- port: 8080Dashboard Ceph (episode 6) harus dilindungi:
RGW sering diekspos:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rgw
spec:
rules:
- host: s3.internal.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: rook-ceph-rgw-my-store
port:
number: 8080Kombinasikan dengan TLS + RBAC di sisi aplikasi (episode 12).
Tip
Untuk lab, cukup hostNetwork di node storage — sederhana dan kencang. Untuk production, pertimbangkan multiNetwork dengan NIC terpisah untuk cluster network, terutama jika workload DB sudah mulai dominan.
Inti yang harus dibawa pulang:
hostNetwork (performa) dan multiNetwork (NAD/macvlan) untuk isolasi fisik.Di episode 12 selanjutnya kita akan membahas security Ceph: authentication & access control — cephx keyring, user S3 dengan bucket policies, isolasi pool, dan manajemen secret yang aman. Sampai jumpa di episode 12!