1. Hubble en bref #
La couche d'observabilité de Cilium.
Architecture #
Cilium est un CNI Kubernetes fondé sur eBPF. Puisqu'il voit chaque paquet, il peut aussi produire des flux : qui parle à qui, sur quel port, avec quel verdict (transmis, rejeté), et pour HTTP, DNS ou Kafka, le détail de la requête. Hubble expose ces flux.
2. Installer et observer #
CLI cilium et hubble.
Activation #
cilium install
cilium status --wait
cilium hubble enable --ui
cilium hubble port-forward & # Relay sur localhost:4245
hubble status# ou avec Helm
helm upgrade cilium cilium/cilium -n kube-system --reuse-values \
--set hubble.relay.enabled=true --set hubble.ui.enabled=true \
--set hubble.metrics.enabled="{dns,drop,tcp,flow,port-distribution,httpV2}" hubble observe #
hubble observe --namespace boutique --follow
hubble observe --verdict DROPPED # paquets rejetés (network policies)
hubble observe --protocol dns --namespace boutique # requêtes DNS
hubble observe --to-pod boutique/checkout --protocol http
hubble observe --from-label app=front -o json | jq '.flow.destination'Bonne Pratique : hubble observe --verdict DROPPED est le premier réflexe quand « le service A ne joint plus le service B » après l'ajout d'une NetworkPolicy.3. Interface et métriques #
Visualiser et alerter.
Hubble UI #
cilium hubble ui ouvre une carte des services d'un namespace, construite à partir des flux réels, avec la liste des flux et leurs verdicts. Idéal pour découvrir les dépendances d'une application inconnue.
Métriques Prometheus #
| Métrique | Usage |
|---|---|
hubble_drop_total | Paquets rejetés par raison (policy, erreur...) |
hubble_dns_queries_total, hubble_dns_responses_total | Volume et erreurs DNS (NXDOMAIN) |
hubble_http_requests_total | Requêtes HTTP par code (si visibilité L7 activée) |
hubble_tcp_flags_total | SYN, RST : connexions refusées |
- alert: PolicyDrops
expr: sum by (reason) (rate(hubble_drop_total{reason="POLICY_DENIED"}[5m])) > 1
for: 10m
labels: { severity: warning }