Open-source project
cilium/cilium avatar
cilium/cilium

Cilium: An eBPF Dataplane for Kubernetes Networking, Security, and Observability

eBPF-based Networking, Security, and Observability

25,831 stars4,234 forksGoApache-2.0

At a glance

What is it?
Cilium replaces kube-proxy and enforces identity-based L3-L7 policies with eBPF, offering overlay or native routing across clusters. This review covers its architecture, deployment, limitations, and alternatives for engineers evaluating adoption.
Who is it for?
Adopt Cilium if you run Kubernetes and need a single dataplane for networking, policy, and observability with eBPF efficiency, especially at scale where kube-proxy becomes a bottleneck. Skip it if your team lacks kernel or eBPF expertise, or if your infrastructure cannot meet kernel version requirements.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • cilium/cilium25,831 ★ · +1,026
Star history
Repository2026-07-282026-11-13
cilium/cilium24.8k25.8k

1,026 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What Cilium Solves and Who Needs It

Cilium addresses a specific pain: Kubernetes clusters that outgrow the default kube-proxy and iptables-based networking. The README states that Cilium implements distributed load balancing for pod-to-pod and pod-to-external traffic, and can fully replace kube-proxy using efficient hash tables in eBPF. This matters for operators running large clusters where iptables rules become slow and unwieldy. The target user is a platform engineer or SRE who manages Kubernetes at scale and needs a single dataplane that also enforces security policies. Cilium is not a simple plugin; it is a comprehensive networking, observability, and security solution. It is a CNCF graduated project, which signals governance maturity, though that alone should not drive a decision. The core value is the decoupling of security identity from IP addresses, which is rare in traditional CNIs.

The eBPF Mechanism and Data Flow

Cilium's foundation is eBPF, a Linux kernel technology that allows dynamic insertion of bytecode at integration points like network IO, application sockets, and tracepoints. The README explains that this bytecode implements security, networking, and visibility logic. In practice, Cilium attaches eBPF programs to network hooks, so packets are processed in the kernel without userspace round trips. This identity-based model is decoupled from network addressing, so policies survive IP changes. For load balancing, Cilium uses hash tables in eBPF to distribute traffic, which is why it can replace kube-proxy. The README mentions support for both native routing and overlay modes, which affects how packets traverse the network. This mechanism is not trivial to debug; engineers need to understand eBPF maps and kernel internals.

Deployment Modes: Overlay vs Native Routing

The README lists two primary deployment options. Overlay networking uses VXLAN or Geneve encapsulation to create a virtual network across hosts. The only requirement is IP connectivity between hosts, which most infrastructures already have. This mode is forgiving because it does not require changes to the underlying network. Native routing mode uses the regular Linux routing table, meaning the network must be capable of routing container IPs directly. This integrates with cloud routers, routing daemons, and IPv6-native infrastructure. The choice between these modes is a real trade-off. Native routing demands that your network fabric can route the IP addresses of the application containers. The README also mentions flexible routing options like L2 neighbor discovery for shared layer 2 domains and BGP for layer 3. For an engineer, this means you must decide early which mode fits your physical network. Do not assume one is faster without testing.

Security and Policy Model

Cilium's security model is identity-based, not address-based. The README states it can enforce network policies on L3-L7. This is a departure from traditional CNIs that filter by IP or CIDR. eBPF programs enforce policies based on that identity. This allows policies to survive pod rescheduling and IP changes, which is a practical advantage in dynamic clusters. The README describes Cilium as L7-protocol aware. This is useful for zero-trust segmentation, but it also means more eBPF complexity. The repository's examples/policies/ directory holds example policies. For teams coming from NetworkPolicy-only setups, Cilium's model is more expressive but requires learning new abstractions.

Installation and Configuration

The README points to the Cilium documentation and the Cilium Upgrade Guide. The stable releases are pulled from quay.io, with tags like quay.io/cilium/cilium:v1.20.4. The README lists actively maintained branches: v1.20, v1.19, and v1.18. For development, there are daily CI images from the main branch, but the README explicitly warns these are not for production. The upgrade guide is referenced for minor releases. The SBOM is included from version 1.13.0, so you can inspect dependencies in SPDX format. The images support AMD64 and AArch64, which is relevant for ARM-based clusters.

Limitations and Failure Modes

Cilium is not a fit for every environment. The most obvious limitation is kernel dependency. eBPF features vary by kernel version, and older kernels lack some of them. If you run Kubernetes on nodes with old or custom kernels, Cilium may not function. Another failure mode is the complexity of debugging. When eBPF programs misbehave, you need tools like bpftool and kernel logs, which are not familiar to all teams. The README also notes that the main branch images are for testing only, so using them in production is unsupported. The overlay mode adds encapsulation overhead, which can be a problem for latency-sensitive workloads. Finally, the project maintains only the last three minor releases; older versions are EOL. This means you must upgrade frequently to stay supported, which is an operational cost.

Alternatives and How They Differ

The main alternative is Calico, which also provides networking and policy for Kubernetes. Calico typically uses iptables or eBPF, but its default mode is not eBPF-based. Cilium's approach is to put everything in eBPF from the start, whereas Calico offers a more traditional routing and iptables model. This difference matters: Cilium's identity-based policy is not tied to IP addresses. Another alternative is Flannel, which is simpler and only provides overlay networking without security or observability. Flannel does not replace kube-proxy, so you would need a separate component. Cilium's integrated service mesh, which the README lists among its advanced functionality, is another differentiator. For teams that want minimal complexity, Flannel is easier, but it lacks Cilium's features. For teams that need advanced policy and scale, Cilium's eBPF approach is more direct, but it requires more expertise.

Maintenance, Upgrades, and Licensing

Cilium is licensed under Apache-2.0, which is permissive and allows commercial use without copyleft obligations. The README states that stable releases are maintained for the last three minor versions, and older ones are EOL. This means you must plan upgrades at least every few months to stay on a supported branch. The upgrade guide is referenced for new minor releases, which suggests that breaking changes are possible. The project publishes SBOMs in SPDX format starting with version 1.13.0, which helps with vulnerability scanning and supply chain audits. The release cadence shown in the recent releases includes patch updates across three branches, indicating active maintenance. For an engineer, this means budgeting time for regular upgrades and testing. The images are distributed on quay.io, so you need to trust that registry or mirror it. The development images are rebuilt daily, but they are not for production.

Editorial conclusion

Adopt Cilium if you run Kubernetes and need a single dataplane for networking, policy, and observability with eBPF efficiency, especially at scale where kube-proxy becomes a bottleneck. Skip it if your team lacks kernel or eBPF expertise, or if your infrastructure cannot meet kernel version requirements. Before adopting, verify your kernel supports required eBPF features, test the upgrade path from your current CNI, and confirm that your service mesh needs are covered by Cilium's mesh features or that you will integrate an external mesh. Also, check the SBOM for supply chain compliance and review the upgrade guide for breaking changes between minor versions.

Frequently asked questions

What is cilium used for?

It is a Kubernetes networking, observability and security solution built on an eBPF dataplane, usable as the cluster's container network interface. It provides a flat layer 3 network across clusters in overlay or native routing mode, enforces policy across layers 3 to 7 with an identity-based model decoupled from network addressing, distributes load balancing in eBPF hash tables so it can fully replace kube-proxy, and adds ingress and egress gateways, bandwidth management, service mesh and flow-level visibility.

how to install cilium

The README is documentation, not a quick start: it points at the Cilium Upgrade Guide and SBOM documentation, and lists quay.io image pull tags for each maintained release. The three maintained minor lines each have a specific image tag, and the root of the repository carries a file naming the stable release, so the version to install is discoverable without guessing.

how to use cilium hubble

Hubble is the observability half of the project, and the Makefile builds it into the main Cilium container, while its relay component is built as a separate container. The repository has top-level directories for both, a dedicated example, and a note in the readme that the eBPF insertion points at application sockets and tracepoints are what make flow-level visibility possible.

how to install cilium cli

The command-line tool is the top-level cilium-cli/ source directory, built by the project's make file as part of the default target alongside the agent, the health checker, the debugging tool and the operator.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/cilium-cilium.svg)](https://hysenlabs.com/projects/cilium-cilium)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/cilium-cilium.svg)](https://hysenlabs.com/projects/cilium-cilium)

Was this useful?