Cilium vs Istio: CNI or Service Mesh?

Cilium and Istio overlap on some features - mTLS, observability, L7 routing - but they solve different problems. One is a CNI with mesh features; the other is a mesh that runs on any CNI. Here is how to choose.

Get started - freeLive cloud workspace in your browser · nothing to install
#kubernetes#cilium#istio#service-mesh

TL;DR

Cilium and Istio are often compared as if they were interchangeable, but they sit at different layers. Cilium is a CNI - it provides the actual pod networking, network policy, and kernel-level observability for your cluster, and it has grown sidecarless service-mesh features on top. Istio is a service mesh - it does not replace your CNI; it layers L7 traffic management, identity, and policy over whatever networking you already run.

Many teams run both: Cilium as the CNI, Istio as the mesh.

Cilium vs Istio at a glance

Cilium Istio
Primary role CNI (networking, policy, observability) Service mesh
Data plane eBPF in kernel + per-node Envoy for L7 Sidecar Envoy, or ambient ztunnel + waypoints
Sidecars None (sidecarless by design) Yes (classic) or none (ambient mode)
Replaces your CNI Yes No - runs on any CNI
L7 traffic management Good (Envoy, Gateway API) Most complete
Encryption Transparent WireGuard / IPsec mTLS between proxies
Observability Hubble (flow-level, eBPF) Telemetry via proxies + add-ons
CNCF status Graduated Graduated

Architecture

Cilium plugs into Kubernetes as the CNI and does most of its work in the Linux kernel using eBPF. Routing, load balancing, network policy enforcement, and L3/L4 observability all happen in-kernel without per-pod proxies, which keeps the data path short and fast. For L7 concerns - HTTP routing and L7 policy - Cilium runs a per-node Envoy proxy rather than injecting one into every pod. Encryption is handled separately in the kernel with WireGuard or IPsec. The result is a sidecarless mesh where the networking substrate and the mesh share one control plane.

Istio takes the opposite approach: it assumes a CNI is already present and adds a mesh on top. In its classic model, Istio injects an Envoy sidecar into each pod; all traffic flows through that proxy, which gives Istio total control over L7 behavior at the cost of per-pod resource overhead and lifecycle complexity. Istio's newer ambient mode removes sidecars, splitting the data plane into a per-node ztunnel for L4 (identity, mTLS, basic routing) and optional waypoint proxies for L7 features only where you need them. Ambient narrows the historical overhead gap with Cilium considerably.

Performance and overhead

Because Cilium does L3/L4 in the kernel and only invokes Envoy for L7, its baseline overhead is low - there is no sidecar cost on every pod, and eBPF avoids extra userspace hops for the common case. This is Cilium's headline advantage and the reason many platform teams adopt it as the CNI regardless of their mesh plans.

Istio's classic sidecar model adds a proxy hop and memory cost per pod, which matters at scale. Ambient mode meaningfully reduces this by moving L4 to a shared per-node ztunnel and making L7 proxying opt-in per workload. If you are evaluating Istio in 2026, evaluate ambient, not the legacy sidecar model - the performance story is very different. Even so, for pure networking and policy, Cilium's eBPF path is typically the leaner foundation.

Features and observability

This is where the tools diverge by intent. Istio has the deepest L7 traffic-management surface: weighted routing, retries, timeouts, circuit breaking, fault injection, traffic mirroring, and progressive delivery through VirtualService and DestinationRule. Its ecosystem - integrations, dashboards, and documentation - is large and well proven for complex multi-service routing and canary workflows.

Cilium leads on network-level observability through Hubble, which exposes flow-level visibility - what is talking to what, at which layer, allowed or dropped - straight from eBPF with minimal overhead. Cilium also brings strong network policy (including identity-aware and DNS-aware rules), transparent WireGuard or IPsec encryption for all pod traffic, and increasingly capable L7 and Gateway API support. Cilium also offers mutual authentication between workloads, but it works differently from Istio's mTLS and is less mature - check its current status in the Cilium docs before you depend on it. For L7 routing it is enough for many teams; it does not match Istio's range of traffic-shaping features.

Both projects are CNCF graduated, both are actively developed, and both have healthy communities - so maturity is not a differentiator. The real question is which layer you are solving for.

Which should you choose?

If you are starting fresh and unsure, run Cilium as your CNI and add Istio only if your L7 traffic-management needs outgrow what Cilium provides. That layered approach is common and easy to extend later. The fastest way to decide is to run each on a real cluster and see where the boundary falls for your workloads.

Frequently asked questions

What is the main difference between Cilium and Istio?

Cilium is a Kubernetes CNI built on eBPF that provides networking, network policy, and observability at the kernel level, with optional sidecarless service-mesh features. Istio is a dedicated service mesh that runs on top of any CNI and focuses on L7 traffic management, mTLS, and policy. Cilium owns the networking layer; Istio adds a mesh layer above it.

Can you run Cilium and Istio together?

Yes, and it is a common combination. Cilium handles the CNI, network policy, and L3/L4 observability while Istio provides the service mesh. Istio's ambient mode and Cilium coexist well, though you should test CNI chaining and avoid duplicating encryption or L7 proxying.

Does Cilium need sidecars like Istio?

No. Cilium is sidecarless by design - it enforces policy and encryption (WireGuard or IPsec) in the kernel via eBPF and uses a per-node Envoy proxy only for L7 features. Istio historically required a per-pod Envoy sidecar, but its ambient mode removes sidecars in favor of a per-node ztunnel plus optional waypoint proxies.

Which has better L7 traffic management, Cilium or Istio?

Istio. It offers the deepest L7 feature set - fine-grained routing, retries, fault injection, traffic mirroring, and canary releases through VirtualService and DestinationRule. Cilium handles L7 too via Envoy and Gateway API, but Istio's traffic-management surface is more mature and complete.

Do real production work, free. Live cloud workspaces in your browser - every project you complete lands on your portfolio.

Get started - free
Get started - free