Belajar Kubernetes Distributed Storage - Network Ceph: Public & Cluster Network
Episode 11 of 28

Belajar Kubernetes Distributed Storage - Network Ceph: Public & Cluster Network

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.

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

Pendahuluan

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.

Public Network & Cluster Network

Dua Jaringan Ceph

Ceph membedakan dua jaringan:

  • Public network — jalur komunikasi client ↔ daemon (MON, MGR, OSD ke client). Port umum: client 6789 (MON), 3300 (client v2), 9283 (MGR).
  • Cluster network — jalur internal antar OSD (replikasi, backfill, heartbeat). Ini trafik yang paling boros bandwidth.

Kenapa Memisahkan?

  • Backfill/recovery OSD bisa menghabiskan seluruh bandwidth.
  • Client (misal database) tidak boleh melambat karena replicasi antar OSD.
  • Dengan cluster network di VLAN/dedicated NIC, saluran terpisah.

Konfigurasi di Rook

yaml
spec:
  network:
    provider: host
    selectors:
      public: public
      cluster: int-10g

Atau di CephCluster:

yaml
spec:
  network:
    provider: hostNetwork

Network Provider pada Rook

Opsi Rook

ProviderKeterangan
defaultPod network (CNI). Simple, tapi trafik public + cluster satu jalur
hostNetworkPod memakai network host node — performa tinggi, cocok high-throughput
multiNetworkGunakan macvlan/NAD (NetworkAttachmentDefinition) untuk memisahkan public & cluster secara fisik

Untuk performa terbaik : hostNetwork: true atau multiNetwork dengan IP untuk tiap network.

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

yaml
spec:
  network:
    provider: multiNetwork
    selectors:
      cluster: cluster-net

NetworkPolicy

Kenapa Diperlukan

Ceph daemon terhubung ke berbagai port. Membatasi akses berdasarkan NetworkPolicy mencegah workload tak sah mengakses storage.

Port Yang Dibuka

ServicePort
MON6789 (v1), 3300 (v2)
OSD6800-7300
MGR (admin/dashboard)8443, 9283 (metrics)
RGW8080

Contoh NetworkPolicy (RGW)

yaml
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: 8080

RBAC / Ingress untuk Dashboard & RGW

Proteksi Dashboard

Dashboard Ceph (episode 6) harus dilindungi:

  • Ingress TLS + basic auth (seperti pola series RWO).
  • Jangan expose ke publik tanpa autentikasi.

Object Store Access

RGW sering diekspos:

yaml
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: 8080

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

Penutup

Inti yang harus dibawa pulang:

  • Pisahkan public (client) dan cluster (internal) network agar backfill tidak menutup trafik client.
  • Rook mendukung hostNetwork (performa) dan multiNetwork (NAD/macvlan) untuk isolasi fisik.
  • NetworkPolicy: izinkan MON 6789, OSD 6800-7300, MGR 9283, RGW 8080 secara selektif.
  • Dashboard & RGW wajib dilindungi Ingress + RBAC.

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!