Belajar Kubernetes Simple Shared Storage - Network & Ports
Episode 11 of 28

Belajar Kubernetes Simple Shared Storage - Network & Ports

Memetakan jalur komunikasi storage: port dan socket yang dipakai CSI, port NFS Server Pod 2049 dan 111, NetworkPolicy yang membatasi akses NFS ke namespace aplikasi, Ingress ke Service Laravel, serta pemasangan TLS untuk HTTPS

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

Pendahuluan

Volume storage telah dibangun, tetapi mereka hidup di jaringan — dan jaringan perlu dipahami serta dibatasi. Episode 11 memetakan siapa bicara dengan siapa lewat port apa, lalu menutup pintu yang tidak perlu.

Untuk setup simple, kalian tidak butuh aturan network yang rumit. Yang dibutuhkan adalah kejelasan: kapan mount NFS terjadi, port mana yang terlibat, dan bagaimana mencegah akses liar.

Port yang Digunakan

CSI Driver

Plugin CSI berkomunikasi lewat Unix socket lokal:

text
/var/lib/kubelet/plugins/<driver>/csi.sock

Ini komunikasi antar proses dalam satu node — tidak lewat jaringan. Tidak ada port TCP yang harus dibuka khusus untuk ini.

NFS Server Pod

Ini jalur lintas-node yang penting. Setiap worker yang me-mount NFS Server Pod memakai:

PortPeran
2049/tcpData NFS
`111/tcpudp`

Karena NFS Server Pod berjalan di dalam cluster, mount dilakukan ke Service cluster IP — jaringan pod-network, bukan jaringan eksternal. Ini berarti NFS tidak terlihat dari luar cluster (kecuali cluster-nya sendiri ter-expose).

KubernetesCek Service dan endpoint NFS
kubectl -n openebs-nfs get svc
kubectl -n openebs-nfs get endpoints

Node ke Node (storage internal)

Traffic NFS mengalir node → node dalam cluster (pod-network). Pastikan CNI cluster tetap sehat — NFS latency sangat sensitif terhadap masalah pod-network.

NetworkPolicy

Prinsip minimum: izinkan worker mount ke NFS Server Pod di namespace storage, batasi yang lain. NetworkPolicy mengontrol lalu lintas masuk (ingress) ke namespace openebs-nfs:

networkpolicy-nfs-svc.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-nfs-from-app-ns
  namespace: openebs-nfs
spec:
  podSelector:
    matchLabels:
      app.kubernetes.io/name: nfs-provisioner
  policyTypes:
    - Ingress
  ingress:
    - from:
        - namespaceSelector:
            matchLabels:
              app: laravel
      ports:
        - protocol: TCP
          port: 2049

Hanya namespace dengan label app: laravel yang boleh mengakses service NFS port 2049. Pod lain — dan namespace lain — ditolak.

Note

NetworkPolicy memerlukan CNI yang mendukungnya (Calico/Cilium). Di setup tanpa CNI tersebut, policy tidak bisa ditegakkan — catat keterbatasan ini saat mengamankan cluster kalian.

Ingress

Lalu lintas aplikasi masuk lewat Ingress. Instal NGINX Ingress (bila belum) dan buat rule:

ingress-laravel.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: laravel
spec:
  ingressClassName: nginx
  rules:
    - host: laravel.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: laravel
                port:
                  number: 80
KubernetesApply dan cek
kubectl apply -f ingress-laravel.yaml
kubectl get ingress

Media publik diakses via URL biasa (/storage/uploads/...), disajikan nginx Pod dari volume RWX.

TLS

Aktifkan HTTPS dengan cert — cara termudah: cert-manager + Let's Encrypt. Install cert-manager, buat Issuer, dan tambahkan anotasi TLS pada Ingress:

ingress-laravel-tls.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: laravel
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - laravel.example.com
      secretName: laravel-tls
  rules:
    - host: laravel.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: laravel
                port:
                  number: 80
KubernetesTerapkan TLS
kubectl apply -f ingress-laravel-tls.yaml
kubectl get cert

Setelah cert berstatus Ready, lalu lintas aplikasi berjalan di HTTPS — termasuk akses ke media.

Tip

Untuk lingkungan internal, cukup gunakan CA internal (mis. cert-manager self-signed + trust anchor). Tidak perlu cert publik bila hostname tidak accessible dari internet.

Penutup

Pada episode 11 ini, jalur network telah dipetakan dan dibatasi:

Inti yang harus dibawa pulang:

  • CSI berkomunikasi via Unix socket lokal — tanpa port TCP khusus.
  • NFS Server Pod memakai port 2049 (+ 111 portmapper) dalam pod-network.
  • NetworkPolicy membatasi akses NFS hanya dari namespace aplikasi.
  • Ingress NGINX menghubungkan host → Service laravel.
  • TLS via cert-manager: anotasi + Issuer + secret.

Di episode 12 selanjutnya kita akan mengunci access control: membatasi StorageClass per namespace, memahami RBAC internal CSI, mengamankan export NFS agar tidak publik, serta memisahkan PVC dan Secret antar aplikasi. Sampai jumpa di episode 12!

Belajar Kubernetes Simple Shared Storage - Network & Ports | Belajar Kubernetes Simple Shared Storage