Calico

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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.

Voir aussi