Belajar Kubernetes Shared Filesystem RWX - NetworkPolicy & Isolasi Storage Traffic
Episode 14 of 28

Belajar Kubernetes Shared Filesystem RWX - NetworkPolicy & Isolasi Storage Traffic

Mengamankan jalur network menuju NFS server: memastikan worker bisa reach server, memakai NetworkPolicy Calico/Cilium untuk membatasi egress Pod Laravel, membuka port yang tepat di firewall, dan opsi VPN untuk cluster terdistribusi

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

Pendahuluan

Sejauh ini kita fokus pada fungsi: NFS bisa di-mount, file bisa dibaca. Episode 14 mengalihkan fokus ke keamanan jalur data. NFS adalah protokol yang usianya setengah abad — ia tidak dirancang dengan pemikiran zero-trust. Data di jaringan harus dilindungi dari akses yang tidak dikehendaki, baik di level Kubernetes maupun di level jaringan.

Pendekatan kita berlapis: jaringan (worker → server), kubernetes (NetworkPolicy membatasi Pod), dan server (firewall).

Cluster Network & Pod-to-Pod

Langkah pertama adalah memastikan konektivitas dasar. Worker node harus bisa reach NFS server piksel penuh:

Cek reachability dari worker
ping -c 3 192.168.10.20
nc -zvw3 192.168.10.20 2049

Jika port 2049 tidak terbuka dari worker, mount tidak akan pernah berhasil — tidak peduli sehebat apa konfigurasi Kubernetes.

Dari sisi NFS server, catat bahwa beberapa port digunakan (lihat bagian Firewall). Jangan sampai port yang dibuka hanya 2049 sementara rpcbind tidak.

NetworkPolicy untuk Pod Laravel

Jika cluster memakai CNI yang mendukung NetworkPolicy (Calico, Cilium, Weave, dsb.), kita bisa membatasi Pod mana yang boleh berbicara ke NFS. Contoh: hanya Pod app=laravel yang boleh egress ke IP NFS server pada port 2049:

networkpolicy-allow-egress-nfs.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-egress-nfs
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: laravel
  policyTypes:
    - Egress
  egress:
    - to:
        - ipBlock:
            cidr: 192.168.10.20/32
      ports:
        - protocol: TCP
          port: 2049
KubernetesApply dan verifikasi
kubectl apply -f networkpolicy-allow-egress-nfs.yaml
kubectl get networkpolicy allow-egress-nfs

Setelah policy ini ada, Pod lain (mis. app=other) TIDAK bisa melakukan egress ke NFS server. Ini isolasi lateral: sekalipun attacker masuk ke sebuah Pod, ia tidak bisa menjangkau storage unless Pod itu memang laravel.

Important

NetworkPolicy bersifat default-deny untuk arah yang dideklarasikan. Begitu kalian menulis policy Egress, semua egress lain dari Pod tersebut ikut dibatasi — pastikan daftar egress lengkap (DNS, registry, DB, dsb.) bila sudah ada policy eksplisit.

Firewall NFS Server

NFS memakai beberapa port. Dalam konfigurasi modern (NFSv4), yang wajib:

PortLayanan
2049/tcpNFS data
111/tcp + 111/udprpcbind/portmapper
20048/tcpmountd (jika dipakai; di NFSv4 kernel biasanya tidak)

Kunci: hanya izinkan worker nodes, bukan seluruh network:

LinuxUFW di NFS server
sudo ufw allow from 192.168.10.21 to any port 2049 proto tcp
sudo ufw allow from 192.168.10.22 to any port 2049 proto tcp
sudo ufw allow from 192.168.10.21 to any port 111 proto tcp
sudo ufw allow from 192.168.10.22 to any port 111 proto tcp
sudo ufw allow from 192.168.10.21 to any port 111 proto udp
sudo ufw allow from 192.168.10.22 to any port 111 proto udp
sudo ufw enable

Salin pola yang sama ke firewalld/iptables bila memakai RHEL.

Warning

Jika di masa depan kalian memindahkan CNI, IP Pod ikut berubah dan ekspor/firewall harus diperbarui. Catat bahwa NFS menyasar IP sumber worker, bukan IP Pod — firewall tidak perlu tahu IP Pod, cukup arah mount dari node.

Network Security pada Data Plane

  • Jangan expose NFS ke internet. Jika worker di cloud VPC, taruh NFS di subnet privat & security group terbatas.
  • 2 worker nodes + NFS dalam LAN — ini topologi ideal: latensi rendah, isolasi tinggi.
  • Cluster terdistribusi antar lokasi — gunakan VPN (WireGuard/Tailscale) untuk menghubungkan lokasi, lalu mount NFS melewati tunnel. Jangan pernah membuka port NFS langsung ke public.

Penutup

Pada episode 14 ini, jalur data storage kini terkunci dari tiga lapis:

Inti yang harus dibawa pulang:

  • Verifikasi konektivitas: ping + nc -zv port 2049 dari worker.
  • NetworkPolicy allow-egress-nfs membatasi Pod mana yang boleh menyentuh server.
  • Firewall server membuka port 2049/111 hanya untuk IP worker.
  • NFS tidak pernah diekspos ke internet; pakai VPN untuk topologi lintas lokasi.
  • Isolasi data plane: storage hanya terjangkau node terpercaya.

Di episode 15 selanjutnya kita akan mengamankan data itu sendiri: encryption at rest dengan LUKS, encryption in transit via sec=krb5p, enkripsi di level aplikasi, serta strategi backup dan key rotation. Sampai jumpa di episode 15!

Belajar Kubernetes Shared Filesystem RWX - NetworkPolicy & Isolasi Storage Traffic | Belajar Kubernetes Shared Filesystem RWX