Episode ini membedah arsitektur Calico: peran Tigera Operator, calico-node, Felix sebagai dataplane program, BIRD untuk BGP, Typha yang menskalakan komunikasi, kube-controllers, serta alur paket pod-to-pod di balik layar.

Di episode 1 kalian tahu kenapa Calico ada. Sekarang saatnya membuka kap mesin: siapa melakukan apa, dan bagaimana paket berpindah dari satu pod ke pod lain. Episode 2 adalah fondasi paling penting di series ini karena semua episode berikutnya akan menyebut komponen yang kita bahas di sini.
Arsitektur Calico pada dasarnya sederhana: satu agen per node (calico-node) yang menjalankan beberapa proses, satu pemberi skala (Typha), satu set controller, dan satu operator untuk instalasi. Setelah episode ini, kalian akan bisa membaca kubectl get pods -n calico-system dan menjelaskan fungsi setiap pod.
calico-node adalah DaemonSet yang berjalan di setiap node. Di dalam pod ini hidup beberapa proses:
Lihat proses yang berjalan di dalam pod calico-node:
kubectl get pods -n calico-system -l app.kubernetes.io/name=calico-node
kubectl exec -n calico-system ds/calico-node -- ps aux | grep -E "felix|bird|calico"kubectl exec ... ps aux akan menampilkan felix, bird, dan proses calico-node dalam satu pod. Kalau kalian tidak melihat Felix berjalan, dataplane tidak akan bekerja sama sekali.
Typha adalah pemberi skala arsitektur Calico. Masalah yang dia selesaikan: di klaster besar, Felix di setiap node menonton resource policy dan endpoint di API server. Kalau seribu node mengawasi langsung, API server kewalahan. Typha berdiri di tengah — satu koneksi ke API server, lalu menyiarkan perubahan ke ratusan Felix.
Dengan Typha, beban API server relatif konstan meskipun jumlah node naik. Deployment Typha default berjalan dua replika:
kubectl get deploy -n calico-system typha
kubectl logs -n calico-system deploy/typha --tail=10 | grep -i "connected"BIRD bertanggung jawab penuh atas BGP: mem-build full-mesh antar node secara default, menerima konfigurasi peer dari BGPPeer, dan meng-advertise rute pod. kube-controllers menangani tugas reconciling — seperti membuat profile per namespace dan memperbarui endpoint status — sehingga policy dan networking selalu sinkron dengan objek Kubernetes.
calico-apiserver menyediakan API Kubernetes untuk resource Calico (NetworkPolicy, IPPool, dan lainnya), sehingga resource itu bisa diakses dengan kubectl biasa. calicoctl/calico adalah CLI yang membaca datastore yang sama. Model data ini penting: resource Calico adalah CRD, jadi semuanya bisa di-manage sebagai code — kita akan manfaatkan ini di episode 18.
Tigera Operator mengelola siklus hidup seluruh komponen di atas. Dia mengawasi resource Installation dan APIServer, lalu men-deploy calico-node, typha, kube-controllers, dan konfigurasi terkait. Keuntungannya: upgrade Calico cukup dengan mengganti versi operator atau image, tanpa edit manifest manual.
kubectl get installation default -o yaml
kubectl get tigerastatuskubectl get tigerastatus menampilkan status setiap komponen Calico (apiserver, calico-node, typha, dan lainnya) dalam satu tabel.
Saat pod A mengirim paket ke pod B di node yang sama, alurnya singkat: dari veth pod A masuk ke route, kernel menemukan bahwa destinasi ada di node ini, lalu meneruskan ke veth pod B. Felix hanya memasang rule iptables untuk allow traffic sesuai policy — jika tidak ada policy yang melarang, paket langsung diteruskan.
Untuk node berbeda, BIRD sudah meng-advertise rute pod B ke semua node. Maka di node A ada route 192.168.1.5/32 via <IP node B> dev eth0. Paket keluar dari veth pod A, di-routing langsung ke node B, lalu masuk ke veth pod B:
pod A -> veth A -> routing table -> NIC node A
-> jaringan (paket asli, tanpa tunnel) -> NIC node B
-> routing table -> veth B -> pod BInilah yang dimaksud wire-rate routing: tidak ada encapsulation di jalur ini. Mode IPIP atau VXLAN yang menambah tunnel akan kita bahas di episode 9.
Untuk melihat rute yang disebarkan BIRD:
calicoctl node status
kubectl exec -n calico-system ds/calico-node -- ip route | grep 192.168Setiap namespace Kubernetes otomatis mendapat profile Calico yang sama namanya. Profile inilah yang menyediakan policy default allow berbasis label dan menjadi tempat NetworkPolicy menempel. Jadi alur penyelarasan datanya adalah: kube-controllers menonton namespace → membuat profile → Felix memasang rule yang relevan di tiap node.
Ada tiga prinsip yang mengikat seluruh arsitektur ini dan akan sering kalian lihat lagi:
Selama kalian memegang tiga prinsip ini, episode 8 sampai episode 17 yang penuh komponen baru akan terasa seperti variasi dari arsitektur yang sama.
Episode 2 membuka arsitektur Calico dari komponen hingga alur paket: Felix memprogram dataplane, BIRD menyebarkan rute, Typha menskalakan, kube-controllers menyelaraskan, dan operator mengelola semuanya.
Inti yang harus dibawa pulang:
Di episode 3 selanjutnya kita akan melakukan setup dan installasi yang lebih dalam: perbandingan cara install Tigera Operator, mode dataplane iptables versus eBPF berikut prasyarat kernel-nya, dan langkah verifikasi pasca-instalasi yang menyeluruh. Siapkan cluster kalian, karena mulai episode ini semua perintah akan kita jalankan bersama.