Cilium è un software di rete per Kubernetes che collega i container, applica le policy di sicurezza e osserva il traffico, tutto appoggiandosi a eBPF, una tecnologia del kernel Linux. Il progetto è nato nella società Isovalent, con Thomas Graf tra i suoi ideatori, e la versione 1.0 è stata annunciata il 24 aprile 2018. Oggi appartiene alla Cloud Native Computing Foundation, che lo ha accolto in incubazione nell’ottobre 2021 e dichiarato graduato l’11 ottobre 2023. Il codice dello spazio utente è pubblicato con licenza Apache 2.0, e Cisco, che ha completato l’acquisizione di Isovalent nell’aprile 2024, si è impegnata a continuare a sostenere la comunità.
A cosa serve Cilium
In un cluster Kubernetes ogni pod ha bisogno di un indirizzo, deve raggiungere gli altri pod e chiamare i servizi. Questo compito spetta a un plugin CNI, e Cilium è uno di essi. Ciò che lo distingue è il metodo: invece di accumulare regole iptables o di passare per uno switch virtuale, carica programmi eBPF direttamente nel kernel, nei punti in cui transitano pacchetti, connessioni e chiamate di sistema. È quindi il kernel stesso a eseguire la logica di instradamento, filtraggio e bilanciamento, senza copiare il traffico verso un processo esterno.
Secondo il README del progetto, Cilium sostituisce per intero kube-proxy riscrivendo le connessioni al momento della chiamata connect, tramite tabelle hash eBPF, ed evita così la traduzione degli indirizzi pacchetto per pacchetto. Le policy di rete non dipendono più dagli indirizzi IP, che in un cluster cambiano di continuo, ma da un’identità assegnata a ogni gruppo di pod con le stesse etichette. Queste policy arrivano fino al livello applicativo: una regola può consentire solo richieste HTTP GET verso un certo percorso, o limitare il traffico in uscita a un elenco di nomi di dominio.
Il confronto con Open vSwitch, presente nella stessa sezione della nostra raccolta, aiuta a collocare lo strumento. Open vSwitch è uno switch virtuale programmabile pensato per gli hypervisor e per le reti definite dal software, e ragiona in flussi OpenFlow. Cilium non vuole essere uno switch: ragiona in servizi, identità e policy Kubernetes, e si rivolge a un cluster di container piuttosto che a un parco di macchine virtuali.
Attorno al nucleo di rete il progetto riunisce diversi componenti. Hubble osserva i flussi dal livello 3 al livello 7 e li presenta come metriche, log e mappa dei servizi. Cluster Mesh collega più cluster, in modo che un servizio di uno sia individuabile e raggiungibile da un altro. Il traffico tra i nodi può essere cifrato con IPsec o WireGuard, e un’implementazione della Gateway API di Kubernetes gestisce il traffico in ingresso.
Per chi è?
Cilium è pensato per i team che gestiscono cluster Kubernetes in produzione: ingegneri di piattaforma, SRE e responsabili della sicurezza che vogliono policy precise e visibilità su ciò che circola tra i servizi. Secondo gli annunci della CNCF, Google Cloud, AWS, Microsoft Azure, Alibaba e DigitalOcean lo offrono nei loro servizi Kubernetes gestiti. Chi sta imparando Kubernetes può provarlo su un cluster locale con kind o minikube, come suggerisce la documentazione.
I requisiti sono concreti. La documentazione chiede un kernel Linux almeno 5.10, compilato con le opzioni eBPF e con le informazioni di tipo BTF, e funzioni come BIG TCP o la modalità netkit vogliono kernel ancora più recenti. Cilium non ha scopo fuori da un ambiente a container: per collegare macchine virtuali o host fisici restano adatti Open vSwitch o un router software come FRRouting. Infine, capire perché un programma eBPF ha scartato un pacchetto richiede studio, anche se Hubble semplifica la diagnosi.
Scaricare Cilium in sicurezza
Cilium si distribuisce come immagini di container, pubblicate dal progetto su quay.io, e non come un installatore tradizionale. La documentazione ufficiale, su docs.cilium.io, descrive i passaggi: scaricare il binario della CLI cilium dalle release GitHub del repository cilium/cilium-cli, verificarne il checksum, poi lanciare il comando di installazione che scarica le immagini della versione stabile, la 1.20.2 al momento in cui scriviamo. Per le installazioni avanzate esiste un chart Helm.
Il progetto è gratuito e non richiede licenze. Isovalent, ora parte di Cisco, vende un’edizione enterprise con supporto e funzioni aggiuntive, ma la versione della comunità è completa per l’uso corrente. L’attenzione va posta sulle immagini: usate solo quelle del repository quay.io/cilium indicato dalla documentazione, perché un’immagine di rete manomessa girerebbe con i privilegi del kernel su ogni nodo del cluster.
Domande frequenti
Cilium è gratuito?
Sì. Il codice dello spazio utente è pubblicato con licenza Apache 2.0 e i modelli di codice BPF con doppia licenza GPL v2 e BSD a due clausole, secondo il README. Esiste un’edizione commerciale di Isovalent, controllata da Cisco, ma non è necessaria per usare il progetto.
Cilium funziona senza Kubernetes?
Il suo ruolo principale è quello di plugin CNI per Kubernetes. La documentazione tratta anche il collegamento di carichi esterni a un cluster e una modalità di bilanciatore autonomo, ma sono casi marginali rispetto all’installazione in un cluster.
Quale versione del kernel Linux serve?
La documentazione richiede il kernel 5.10 o successivo, con un’eccezione per il kernel 4.18 di RHEL 8.10. Le distribuzioni più diffuse sono elencate con la versione minima, per esempio Ubuntu 20.04, Debian 10 o RHEL 8.6. Funzioni recenti come netkit richiedono il kernel 6.8.