Dalam orkestrasi kluster Kubernetes modern dengan ratusan hingga ribuan microservices yang saling berinteraksi secara dinamis, model jari...
Dalam orkestrasi kluster Kubernetes modern dengan ratusan hingga ribuan microservices yang saling berinteraksi secara dinamis, model jaringan tradisional berbasis iptables atau IPVS kerap menemui hambatan skalabilitas. Setiap Service baru atau Pod yang dibuat menghasilkan puluhan aturan (rules) iptables yang dievaluasi secara linier di tingkat kernel Linux, memicu penurunan performa throughput jaringan dan latensi CPU yang signifikan.
Cilium hadir sebagai Container Network Interface (CNI) generasi modern yang mengeliminasi keterbatasan tersebut dengan memanfaatkan teknologi extended Berkeley Packet Filter (eBPF). eBPF memungkinkan bytecode program dieksekusi secara aman dan efisien langsung di dalam kernel Linux tanpa mengubah kode sumber kernel atau memuat modul kernel eksternal. Dengan menggantikan iptables dan kube-proxy, Cilium menghadirkan routing paket berbasis O(1) hash table lookup, enkripsi WireGuard transparan, serta observabilitas mendalam Layer 7 melalui Hubble.
1. Keunggulan Arsitektur Cilium Berbasis eBPF
Dibandingkan CNI tradisional (seperti Flannel atau Calico standar), integrasi Cilium di tingkat kernel menghadirkan revolusi arsitektural:
- Kube-Proxy Replacement: Meneruskan lalu lintas Service (ClusterIP, NodePort, LoadBalancer) langsung melalui soket kernel eBPF tanpa overhead translasi alamat jaringan (NAT) iptables yang repetitif.
- Observabilitas Jaringan Layer 7 (Hubble): Menginspeksi payload protokol aplikasi seperti HTTP/HTTPS, gRPC, DNS, dan Kafka secara real-time tanpa memerlukan sidecar proxy seperti Envoy di setiap Pod.
- Zero-Trust Identity-Aware Security: Penegakan Network Policy berbasis identitas kriptografis (label Pod) alih-alih mengandalkan alamat IP yang fana (ephemeral) di lingkungan container.
- Transparan Pod-to-Pod Encryption: Enkripsi otomatis lalu lintas antar-node menggunakan protokol WireGuard atau IPsec bawaan kernel Linux.
2. Persiapan Sistem dan Kernel Host Linux
Sebelum menginstal Cilium, pastikan node worker dan control plane Kubernetes menjalankan kernel Linux 5.4 atau lebih baru dengan modul eBPF serta BPF filesystem terpasang:
# Verifikasi versi kernel Linux pada semua node Kubernetes
uname -r
# Rekomendasi: Linux Kernel >= 5.15 LTS
# Mount BPF filesystem jika belum otomatis ter-mount
sudo mount | grep /sys/fs/bpf
# Jika kosong, tambahkan ke /etc/fstab:
# bpffs /sys/fs/bpf bpf defaults 0 0
sudo mount bpffs -t bpf /sys/fs/bpf
3. Instalasi Cilium CLI & Deployment Helm
Unduh tool resmi Cilium CLI untuk mempermudah orkestrasi dan verifikasi status kluster:
# Unduh dan pasang Cilium CLI di workstation admin
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
CLI_ARCH=amd64
curl -L --fail --remote-name-all "https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz"
sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
rm cilium-linux-${CLI_ARCH}.tar.gz
# Verifikasi instalasi CLI
cilium version
Pasang Cilium ke kluster Kubernetes menggunakan Helm dengan mode Kube-Proxy Replacement aktif secara penuh:
# Tambahkan repositori Helm resmi Cilium
helm repo add cilium https://helm.cilium.io/
helm repo update
# Install Cilium dengan opsi kube-proxy replacement dan Hubble aktif
helm install cilium cilium/cilium --version 1.16.0 --namespace kube-system --set kubeProxyReplacement=true --set k8sServiceHost="10.10.10.10" --set k8sServicePort="6443" --set hubble.enabled=true --set hubble.relay.enabled=true --set hubble.ui.enabled=true --set tunnelProtocol=geneve --set encryption.enabled=true --set encryption.type=wireguard
4. Verifikasi dan Pengujian Kesehatan CNI
Jalankan uji konektivitas end-to-end otomatis menggunakan Cilium CLI untuk memastikan seluruh program eBPF termuat dengan sempurna di kernel:
# Periksa status daemon Cilium di seluruh node
cilium status --wait
# Jalankan suite pengujian konektivitas internal (Pod-to-Pod, Service, DNS, Egress)
cilium connectivity test
kubeProxyReplacement=true, pastikan DaemonSet kube-proxy bawaan Kubernetes di-stop atau dihapus agar tidak terjadi konflik tabel routing kernel. Jalankan kubectl -n kube-system delete daemonset kube-proxy dan hapus aturan iptables lama menggunakan iptables-save | grep -v KUBE | iptables-restore.
5. Menerapkan Layer 7 Network Policy & Observabilitas Hubble
Cilium memungkinkan pembuatan kebijakan firewall cerdas yang memahami konteks aplikasi (HTTP method dan path), bukan sekadar port TCP/UDP:
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "secure-api-l7-policy"
namespace: "production"
spec:
endpointSelector:
matchLabels:
app: backend-service
ingress:
- fromEndpoints:
- matchLabels:
app: frontend-web
toPorts:
- ports:
- port: "8080"
protocol: TCP
rules:
http:
- method: "GET"
path: "/api/v1/public/.*"
- method: "POST"
path: "/api/v1/order"
Untuk melihat visualisasi aliran data, audit permintaan DNS yang diblokir, dan trace latensi paket secara grafis, buka Hubble Web UI melalui port forward:
# Buka akses browser ke Hubble UI dashboard
cilium hubble ui
Dengan menerapkan Cilium CNI, kluster Kubernetes Anda memperoleh lompatan performa jaringan drastis sekaligus visibilitas Layer 7 yang komprehensif bagi operasi DevOps dan arsitektur Zero Trust.
COMMENTS