mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dev Toolsevaluationupdated 26 Aug 2026

cilium review

Cilium is a networking, security, and traffic-observability layer built mainly for Kubernetes on Linux. It uses eBPF programs in the kernel to connect workloads, enforce identity-aware policies, balance services, and show operators why traffic was allowed or dropped.

+24stars / 7d
Verdict

Our Cilium build took 438 seconds and 209 of 210 tests passed, so skilled Kubernetes teams have a credible codebase here, with one unresolved failure in our sandbox. Put Cilium on the shortlist when policy, service networking, and Hubble visibility solve problems your team already has. Choose a smaller CNI when basic pod connectivity is the whole requirement, because Cilium's kernel reach makes every configuration and upgrade consequential.

We ran it

Lab card: what happened when we ran ciliumScreenshot of cilium (cilium.io)
Install✓ · 111s0 packages
Build✓ · 438s
Tests✗ · 625s209 passed · 1 failed of 210 (go test)
Repo8199 files~1,015,249 lines of source · 76.9 MB · 101 CI workflows · tests dir

Answers from our run

Does cilium build from source?

Dependencies installed in 111 seconds (0 packages), and the build succeeded in 438 seconds. We cloned commit 6fd7b3f into a clean Debian container with 3 CPUs and no project-specific setup.

Do cilium's tests pass?

Not all of them: 209 of 210 passed and 1 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use cilium?

Clusters on unsupported hosts: the current requirements name AMD64 or AArch64 and Linux kernel 5.10 or an approved distribution equivalent.

What are the alternatives to cilium?

Calico, Antrea, Flannel. Our Cilium build took 438 seconds and 209 of 210 tests passed, so skilled Kubernetes teams have a credible codebase here, with one unresolved failure in our sandbox.

Setup2/5Build passed, but one test failed and deployment needs kernel access
Docs5/5Detailed requirements, install, feature, upgrade, and limits guides
Community5/525,012 stars with same-day issue and pull request activity
Maturity5/5Three maintained minor lines and active stable patch releases

Discussed on

  1. hnCilium 1.0: Bringing the BPF Revolution to Kubernetes Networking and Security151 points
  2. hnPacket, where are you? – eBPF-based Linux kernel networking debugger143 points
  3. hnCilium 1.4 released71 points
  4. hnGKE’s new dataplane uses the eBPF-based Cilium project50 points
  5. hnTetragon: eBPF-Based Security Observability and Runtime Enforcement50 points

Who it’s for

Kubernetes platform teams that need one CNI for networking, policy, and flow visibility.
Operators considering kube-proxy replacement, native routing, or an eBPF service datapath.
Multi-cluster teams that need shared service discovery and workload identities across clusters.
Organizations with Linux and network engineers who can stage kernel and datapath changes.

Who it’s NOT for

Clusters on unsupported hosts: the current requirements name AMD64 or AArch64 and Linux kernel 5.10 or an approved distribution equivalent.
Teams wanting a narrow CNI for basic pod connectivity: the README spans routing, policy, load balancing, gateways, service mesh, Cluster Mesh, encryption, and Hubble.
Operators unable to test networking patches promptly: v1.20.1 fixed a silent CIDR policy bypass after agent restart, delayed policy updates, connection faults, and an operator shutdown deadlock.
Anyone expecting a useful trial in an unprivileged application container: Cilium installs privileged agents, writes eBPF programs into the host kernel, and needs the host network namespace.

Setup reality

Our sandbox install succeeded in 111 seconds with 0 packages installed, and the build succeeded in 438 seconds. Tests failed after 625 seconds: 209 passed and 1 failed out of 210. The log tail shows several tool packages passing or reporting no test files, then only the final FAIL; it does not identify the failed test or its cause.

A real deployment needs a Kubernetes cluster, compatible Linux nodes, kubectl access, and either the Cilium CLI or Helm. Operators must choose routing and IP address management, check firewall rules, and decide whether features such as Hubble, encryption, Gateway API, or kube-proxy replacement belong in the first rollout.

Current requirements recommend Linux 5.10 or a listed equivalent and support AMD64 and AArch64 images. Advanced features can need newer kernels or extra kernel options. Cilium runs privileged, touches the host network namespace, and sits in every workload traffic path, so production setup needs staged connectivity checks and a tested rollback.

Cilium v1.20.1 combines networking, policy, and visibility

Cilium v1.20.1 is much more than a component that assigns pod addresses. Its eBPF datapath connects workloads, applies identity-aware policy, translates Kubernetes Services, and records flow decisions near the Linux kernel. Hubble turns those records into service maps, DNS and protocol views, drop reasons, metrics, and searchable events. For a platform team, that can reduce the handoffs between the CNI, firewall rules, service proxy, and packet-capture tools when a request disappears.

The README describes policy from Layer 3 through Layer 7, including labels, ports, DNS names, HTTP methods, URL paths, headers, and gRPC calls. Cilium can also replace kube-proxy, provide ingress and egress gateways, encrypt traffic with WireGuard or IPsec, and connect multiple clusters. That range is the main buying argument and the main warning. A team that uses only basic pod networking will own far more machinery than it needs.

Two routing modes force an early network decision

Cilium documents 2 broad routing models. Overlay mode carries pod traffic through VXLAN or Geneve and mainly asks the underlying network for host-to-host IP connectivity. Native routing uses ordinary host routes, so the surrounding network must know how to reach pod addresses. Neither choice is cosmetic. It affects packet paths, MTU planning, troubleshooting, and how much the physical or cloud network must understand.

Service handling adds another decision. Cilium can keep kube-proxy or replace it with eBPF load balancing, including socket-level translation, Direct Server Return, and Maglev hashing. Replacing kube-proxy removes one moving part, while making Cilium responsible for more of the service path. Test ClusterIP, NodePort, external traffic, host networking, and storage flows before migration. The v1.20.1 release fixed several datapath and Gateway API faults, which is a reminder to test the exact feature set you enable.

What happened when we ran it

Our run installed the checked-out code in 111 seconds, with 0 packages installed by that step. The build then succeeded in 438 seconds. We cloned commit 6fd7b3f into an unprivileged Debian container with 3 CPUs and 8 GB of RAM. The checkout held 8,199 files, about 1,015,249 lines of source, and occupied 76.9 MB, so even a clean source build is a substantial job.

Tests ended with exit code 1 after 625 seconds. Go reported 209 passing packages and 1 failing package out of 210. The supplied log tail shows metricslint and statedblint passing, followed by several tool packages with no test files, and then the final FAIL. It does not name the failed package or expose an error message. We therefore cannot attribute the failure to permissions, missing services, a flaky test, or Cilium itself from this evidence.

Linux 5.10 is the baseline, and production needs host privileges

Cilium's requirements recommend Linux kernel 5.10 or later, with named distribution equivalents such as RHEL 8.10's 4.18 kernel. Published images support AMD64 and AArch64. The agent loads eBPF programs, uses the host networking namespace, and normally runs through a privileged Kubernetes DaemonSet. An unprivileged container like our sandbox can inspect and compile the repository, but it cannot reproduce the real datapath or prove cluster connectivity.

The quick install assumes an existing Kubernetes cluster and a working kubectl context. The Cilium CLI can choose defaults for a supported distribution, while Helm exposes the settings platform teams will eventually need to own. Routing, IP allocation, firewall openings, encryption, Hubble, BGP, Gateway API, and Cluster Mesh all change the runtime shape. Add them in controlled stages. A failed packet is much easier to locate when only 1 layer changed.

Three maintained minor lines make upgrades an ongoing job

The README says the community maintains the latest 3 minor release lines and treats older minors as end of life. The upgrade guide calls for version-specific steps, preflight checks, and the appropriate compatibility value during minor upgrades. It also warns against Helm's --reuse-values option because old values can render a new chart incorrectly. For a component that carries every pod's traffic, that maintenance policy belongs in the adoption decision.

Release v1.20.1 shipped on August 18, 2026. Its fixes include a silent CIDR policy bypass and traffic drops after an agent restart, a NetworkPolicy update delayed by as much as 2 minutes, an operator shutdown deadlock, and several Gateway API errors. Quick backports are evidence of an active release process. The seriousness of those bugs also means operators need a prompt patch-review habit rather than treating the network layer as set-and-forget infrastructure.

25,012 stars come with active issue and pull request work

GitHub showed 25,012 stars and a push on August 26, 2026. The repository had 811 open issues and 306 open pull requests when fetched, and both issue and pull request activity continued that day. Those counts describe a large project with a large support surface, not 1,117 known bugs. Current commits, active discussions, and an August stable release together make a stronger health signal than the release tag alone.

Cilium deserves a serious trial when Hubble's flow evidence, identity-based policy, or kube-proxy replacement will remove known operational pain. Our 438-second build passed, while the 625-second test run left 1 of 210 packages failing without a visible cause. That result is good enough to continue evaluation and too incomplete to waive cluster testing. Smaller clusters with no advanced policy or visibility needs should start with Flannel or kube-router and add complexity only when a measured problem demands it.

Alternatives

ProjectWhat it isPick it when
CalicoA mature Kubernetes networking and policy platform with several dataplane choices.pick this instead when your team already operates Calico or needs its particular policy and platform support.
AntreaA Kubernetes CNI based on Open vSwitch with policy and traffic visibility.pick this instead when Open vSwitch fits your operating model or Windows nodes are part of the cluster.
FlannelA focused Kubernetes network fabric with a much smaller feature surface.pick this instead when basic pod connectivity is enough and separate tools will handle policy and observability.
kube-routerA compact Kubernetes stack for routing, service proxying, and network policy.pick this instead when BGP routing and a smaller operating surface matter more than Cilium's wider feature set.

What people are saying

  1. [github-trending] cilium/cilium

Sources

  1. Cilium README
  2. Cilium system requirements
  3. Installing Cilium on Kubernetes
  4. Cilium upgrade guide
  5. Cilium v1.20.1 release

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →