Episode ini membedah eBPF dataplane Calico: prasyarat kernel, keunggulan seperti direct server return dan socket-level policy, perbandingan eBPF versus iptables dan nftables, serta kapan waktu yang tepat untuk mengaktifkannya.

Di episode 3 kita sempat menyinggung mode dataplane. Sekarang saatnya membedah eBPF secara menyeluruh: apa yang benar-benar berubah di kernel, keunggulan yang bisa kalian rasakan, biaya yang harus dibayar, dan kapan sebaiknya kalian mengaktifkannya.
eBPF adalah alasan utama sebagian orang memilih Cilium, tapi banyak yang tidak tahu bahwa Calico juga punya eBPF dataplane yang sangat matang. Dengan memahaminya, kalian bisa memilih dataplane berdasarkan kebutuhan, bukan gengsi.
eBPF menuntut kernel Linux modern dan konfigurasi yang sesuai:
Kernel 5.3+ untuk fitur dasar; 5.13+ untuk fitur terbaru
CONFIG_BPF -> y
CONFIG_BPF_SYSCALL -> y
CONFIG_BPF_JIT -> y
CONFIG_BPF_UNPRIV_DEFAULT_OFF -> y
CONFIG_DEBUG_INFO_BTF -> yBTF (BPF Type Format) wajib karena Calico memakai CO-RE. Cek prasyarat node dengan script resmi sebelum melanjutkan:
curl -LO https://raw.githubusercontent.com/projectcalico/calico/v3.32.1/scripts/check-kernel-config
chmod +x check-kernel-config
./check-kernel-config /boot/config-$(uname -r)Aktivasi dilakukan lewat Installation, dan otomatis menonaktifkan kube-proxy:
kubectl patch installation default --type merge \
-p '{"spec":{"dataplane":{"type":"BPF"}}}'
kubectl rollout restart ds/kube-proxy -n kube-system
kubectl get tigerastatus | grep -i bpfdataplane.type: BPF menggantikan iptables dengan program eBPF. Karena eBPF menangani load balancing Service, kube-proxy di-scale ke nol atau dihapus.
Pada mode iptables, traffic yang kembali dari backend pod melewati node yang sama dengan node kube-proxy (client node), sehingga ada perjalanan ekstra. Dengan DSR, response dikirim langsung dari node backend ke client — jalur kembali lebih pendek, latensi turun, dan beban node front lebih ringan.
iptables: client -> node A -> backend node B -> node A -> client
DSR: client -> node A -> backend node B ------------> clienteBPF memungkinkan policy dievaluasi pada saat socket dibuka, bukan saat paket lewat. Aplikasi bisa tahu hasil policy bahkan sebelum mengirim byte pertama, dan koneksi dari proses lokal bisa disaring lebih presisi.
Program eBPF melakukan load balancing Service di level kernel dengan dukungan untuk L4 dan beberapa L7, menggantikan chain iptables yang panjang.
Fitur iptables/nftables eBPF
Kompatibilitas kernel sangat luas butuh 5.3+ dan BTF
DSR tidak ada ada
Socket policy tidak ada ada
Ganti kube-proxy tidak ya
MTU normal sedikit lebih kecil
Migrasi mudah perlu pelatihanTidak semua fitur Calico tersedia di eBPF pada awalnya; seiring versi, hampir semua sudah didukung. Yang perlu diperiksa: fitur yang berinteraksi dengan kube-proxy, host endpoints, dan beberapa mode encapsulation. Selalu baca release notes (episode 20) sebelum mengaktifkan.
kubectl exec -n calico-system ds/calico-node -- calico-node --version
kubectl get ds -n kube-system kube-proxy
kubectl exec -n calico-system ds/calico-node -- sh -c "ls /sys/fs/bpf"Mount /sys/fs/bpf yang ada dan kube-proxy yang nonaktif adalah tanda eBPF berjalan. Untuk konfirmasi dataplane aktif, jalankan kubectl get tigerastatus dan lihat status komponen calico-node.
Pola penerapan yang aman: coba di klaster staging dengan beban sintetis, bandingkan metrik, lalu putuskan:
kubectl get pods -n calico-system -o wide
kubectl exec -n calico-system ds/calico-node -- sh -c \
"curl -s localhost:9091/metrics | grep calico_felix_"Metrik Felix (calico_felix_*) dari dua klaster yang identik bisa dibandingkan untuk mengukur overhead dataplane.
Episode 17 menutup topik eBPF: prasyarat kernel yang ketat, keunggulan DSR dan socket policy, perbandingan nyata dengan iptables/nftables, dan keputusan kapan mengaktifkannya berdasarkan kesiapan tim.
Inti yang harus dibawa pulang:
Di episode 18 selanjutnya kita membahas GitOps dan policy as code — mengelola Installation, IPPool, BGPPeer, dan policy sebagai code dengan Argo CD atau Flux, lengkap dengan versioning, review flow, dan penerapan bertahap.