Cilium est un logiciel réseau pour Kubernetes qui assure la connectivité entre conteneurs, l’application des politiques de sécurité et l’observabilité du trafic, le tout en s’appuyant sur eBPF, une technologie du noyau Linux. Le projet a été créé par la société Isovalent, cofondé par Thomas Graf, et sa version 1.0 a été annoncée le 24 avril 2018. Il appartient aujourd’hui à la Cloud Native Computing Foundation, qui l’a accueilli en incubation en octobre 2021 puis déclaré gradué le 11 octobre 2023. Le code de l’espace utilisateur est publié sous licence Apache 2.0, et Cisco, qui a racheté Isovalent en avril 2024, s’est engagé à continuer de soutenir la communauté.
À quoi sert Cilium
Dans un cluster Kubernetes, chaque pod doit recevoir une adresse, joindre les autres pods et accéder aux services. Ce travail revient à un greffon CNI, et Cilium en est un. Sa particularité tient à la façon dont il s’y prend : au lieu d’empiler des règles iptables ou de passer par un commutateur virtuel, il charge des programmes eBPF directement dans le noyau, aux points où transitent les paquets, les connexions et les appels système. Le noyau exécute ainsi lui-même le routage, le filtrage et l’équilibrage de charge.
D’après le README du projet, Cilium remplace entièrement kube-proxy en réécrivant les connexions au niveau de l’appel connect, grâce à des tables de hachage eBPF, ce qui évite la traduction d’adresses paquet par paquet. Les politiques réseau ne reposent plus sur des adresses IP, par nature changeantes dans un cluster, mais sur une identité attribuée à chaque groupe de pods partageant les mêmes étiquettes. Ces politiques descendent jusqu’à la couche applicative : on peut n’autoriser que les requêtes HTTP GET vers un chemin donné, ou limiter les sorties vers certains noms de domaine.
La comparaison avec Open vSwitch, présent dans la même catégorie de notre logithèque, aide à situer l’outil. Open vSwitch est un commutateur virtuel programmable, pensé pour les hyperviseurs, qui raisonne en flux OpenFlow. Cilium ne cherche pas à reproduire un commutateur : il raisonne en services, en identités et en politiques Kubernetes, et il s’adresse à un cluster de conteneurs plutôt qu’à un parc de machines virtuelles.
Autour du cœur réseau, le projet regroupe plusieurs composants. Hubble observe les flux de la couche 3 à la couche 7 et les présente sous forme de métriques, de journaux et d’une carte des services. Cluster Mesh relie plusieurs clusters pour qu’un service d’un cluster soit découvert et joignable depuis un autre. Le trafic entre nœuds peut être chiffré par IPsec ou WireGuard, et l’API Gateway de Kubernetes est prise en charge.
Pour qui ?
Cilium vise les équipes qui exploitent des clusters Kubernetes en production : ingénieurs plateforme, SRE, responsables sécurité qui veulent des politiques précises et une visibilité sur ce qui circule entre les services. Selon les annonces de la CNCF, Google Cloud, AWS, Microsoft Azure, Alibaba et DigitalOcean le proposent dans leurs offres Kubernetes managées. Un lecteur qui apprend Kubernetes peut le tester sur un cluster local avec kind ou minikube.
Les exigences sont réelles. La documentation demande un noyau Linux 5.10 au minimum, compilé avec les options eBPF et les informations de type BTF, et certaines fonctions comme BIG TCP ou le mode netkit réclament des noyaux encore plus récents. Cilium ne sert à rien hors d’un environnement conteneurisé : pour relier des machines virtuelles ou des hôtes physiques, Open vSwitch ou un routeur logiciel comme FRRouting restent les bons outils. Enfin, comprendre pourquoi un programme eBPF rejette un paquet demande de l’apprentissage, même si Hubble facilite le diagnostic.
Télécharger Cilium sans risque
Cilium se déploie sous forme d’images de conteneurs, publiées sur quay.io par le projet, et non comme un installateur classique. La documentation officielle, sur docs.cilium.io, explique la marche à suivre : télécharger le binaire du CLI cilium depuis les releases GitHub du dépôt cilium/cilium-cli, vérifier sa somme de contrôle, puis lancer la commande d’installation qui tire les images de la version stable, 1.20.2 au moment de la rédaction. Un chart Helm couvre les déploiements avancés.
Le projet est gratuit et ne demande aucune licence. Isovalent, désormais chez Cisco, commercialise une édition entreprise avec support et fonctions supplémentaires, mais la version communautaire reste complète pour un usage courant. La vigilance porte ici sur les images : n’utilisez que celles du dépôt quay.io/cilium référencé par la documentation, car une image réseau modifiée tournerait avec les privilèges du noyau sur chaque nœud du cluster.
Questions fréquentes
Cilium est-il gratuit ?
Oui. L’espace utilisateur est publié sous licence Apache 2.0 et les gabarits de code BPF sous double licence GPL v2 et BSD à deux clauses, d’après le README. Une édition commerciale existe chez Isovalent, filiale de Cisco, mais elle n’est pas nécessaire pour exploiter le projet.
Cilium fonctionne-t-il sans Kubernetes ?
Son usage principal est le rôle de greffon CNI pour Kubernetes. La documentation mentionne aussi le rattachement de charges externes à un cluster et un mode d’équilibrage de charge autonome, mais ces cas restent marginaux par rapport au déploiement dans un cluster.
Quelle version de noyau Linux faut-il ?
La documentation exige un noyau 5.10 ou plus récent, avec une exception pour le noyau 4.18 de RHEL 8.10. Les distributions courantes sont listées avec leur version minimale, par exemple Ubuntu 20.04, Debian 10 ou RHEL 8.6. Des fonctions récentes comme netkit demandent un noyau 6.8.