Calico
| Fiche express | |
|---|---|
| Type | Implémentation concrète de CNI (réseau + NetworkPolicies) |
| Datapath | iptables (historique) ou eBPF (mode alternatif) |
| Transport | Overlay (VXLAN/IPIP) ou routage natif BGP |
| Alternative à | Cilium · Flannel |
| Voir aussi | CNI — Panorama et choix · Cilium et eBPF · NetworkPolicies |
Calico est une implémentation concrète de CNI, portée par Tigera, historique et très largement déployée. Elle se concentre sur le réseau des Pods et l'application de NetworkPolicies riches, avec un routage BGP mûr hérité du monde réseau traditionnel. Pour le comparatif face à Cilium et Flannel, voir CNI — Panorama et choix — cette page-ci détaille l'implémentation.
Architecture
| Composant | Rôle |
|---|---|
| Felix | Agent par nœud ; programme le datapath (routes, règles de filtrage, interfaces) |
| BIRD | Démon de routage BGP ; diffuse les routes des Pods entre nœuds |
| Typha | Cache/proxy devant l'API Kubernetes ou etcd ; réduit la charge à grande échelle |
| confd | Génère la configuration BIRD à partir du datastore |
| Plugin CNI Calico | Appelé par kubelet à la création d'un Pod (attribution IP, interfaces, routes) |
<mermaid> flowchart TD
K[kubelet] -->|appel CNI| CNI[Plugin CNI Calico] CNI --> FELIX[Felix
par nœud] FELIX -->|programme| DP[Datapath
iptables ou eBPF] FELIX <-->|routes| BIRD[BIRD
BGP] BIRD <-->|peering BGP| BIRD2[BIRD
autre nœud]
</mermaid>
Modes de datapath
| Mode | Description |
|---|---|
| iptables | Mode historique par défaut ; règles de filtrage au niveau noyau via iptables |
| eBPF | Mode alternatif (depuis Calico 3.13, à vérifier) ; datapath eBPF, peut remplacer kube-proxy, meilleure montée en charge et latence réduite |
Le choix du mode se fait à l'installation ; passer de l'un à l'autre en cluster de production est intrusif, comme pour tout changement de CNI (voir CNI — Panorama et choix).
Modes de transport
- Overlay — encapsulation VXLAN ou IPIP ; fonctionne sur tout réseau IP sous-jacent, sans prérequis particulier sur le fabric.
- Routage natif (BGP) — pas d'encapsulation ; Calico établit du peering BGP entre les nœuds (et éventuellement avec les routeurs physiques du datacenter), pour un routage direct des IP de Pods. Meilleure performance, mais nécessite un fabric réseau qui parle BGP.
NetworkPolicies
Calico applique les NetworkPolicies standard de Kubernetes, et les étend via ses propres CRD pour des besoins plus riches :
- GlobalNetworkPolicy — policy non limitée à un namespace, appliquée cluster-wide.
- NetworkSet — regroupe des CIDR externes pour les référencer dans une policy (utile pour l'égress vers des IP tierces).
- Tiers (niveaux) — organise les policies par ordre de priorité explicite (utile pour séparer policies de sécurité globales et policies applicatives).
Exemple de policy étendue Calico autorisant l'égress vers un bloc CIDR externe précis :
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: allow-egress-partenaire
spec:
selector: app == 'connecteur-partenaire'
types:
- Egress
egress:
- action: Allow
destination:
nets:
- 203.0.113.0/24
ports:
- 443
Calico vs Cilium vs Flannel
| Critère | Calico | Cilium | Flannel |
|---|---|---|---|
| Datapath par défaut | iptables (eBPF en option) | eBPF natif | iptables (via kube-proxy) |
| NetworkPolicies | L3/L4 riches (CRD, tiers) | L3/L4 + L7 (identité) | Aucune (nécessite Canal = Flannel + Calico) |
| Routage natif BGP | Oui (BIRD), mûr | Oui (moins historique sur ce point) | Non |
| Observabilité intégrée | Limitée | Hubble | Aucune |
| Cas d'usage typique | Fabric BGP existant, policies riches sans besoin L7 | Policies L7, kube-proxy replacement, observabilité fine | Simplicité maximale, réseau plat sans besoin de policies |
Cas d'usage typiques
- Fabric réseau existant qui parle BGP — intégration native sans encapsulation, avec des routeurs physiques du datacenter.
- Besoin de policies riches (tiers, GlobalNetworkPolicy, NetworkSet) sans nécessairement vouloir du filtrage L7 ou d'eBPF de bout en bout.
- Clusters mixtes Linux/Windows — Calico prend en charge des nœuds Windows (via HNS), ce qui reste rare chez les CNI concurrents.