1
0
Fork 0
mirror of https://github.com/cilium/cilium.git synced 2025-12-13 01:56:41 +00:00
eBPF-based Networking, Security, and Observability
Find a file
Casey Callendrello db13764be4 policy: add precedence tests
This adds a  number of cases that the precedence-aware
policy engine must be able to handle.

Signed-off-by: Casey Callendrello <cdc@isovalent.com>
2025-12-12 20:44:19 +00:00
.devcontainer images: update cilium-{runtime,builder} 2025-12-10 13:02:40 +00:00
.github conformance-l7: optimize E2E testing by splitting L7 and L3/L4 tests 2025-12-12 16:00:11 +00:00
.nvim .nvim: Add debugging configurations for go test 2024-08-14 08:45:22 -07:00
.vscode .vscode: Add launch config for control plane tests 2024-08-14 08:45:22 -07:00
api/v1 ztunnel: add ztunnel as an encryption enum for cilium status 2025-12-12 15:11:13 +00:00
bpf bpf,clustermesh: move set_identity_mark 2025-12-12 14:05:24 +00:00
bugtool cilium-dbg: remove global from usage of cilium-dbg bpf ct list` 2025-12-08 10:21:54 +00:00
cilium-cli connectivity: add L3-L4-only policy for DNS traffic 2025-12-12 16:00:11 +00:00
cilium-dbg ztunnel: add ztunnel as an encryption enum for cilium status 2025-12-12 15:11:13 +00:00
cilium-health build: Add flag to control goexperiments 2025-07-17 07:54:44 +00:00
clustermesh-apiserver pks/k8s: add support for WatchList in testutils 2025-12-12 13:42:56 +00:00
contrib contrib: kind-fast: pre-load more images 2025-12-09 13:35:41 +00:00
daemon agenthealth: move config flags into hive config 2025-12-11 20:12:23 +00:00
Documentation agenthealth: move config flags into hive config 2025-12-11 20:12:23 +00:00
examples doc: remove kiam in lrp 2025-09-24 00:44:19 +00:00
hack api: drop year from copyright notice 2022-02-17 09:48:23 -08:00
hubble modernize: Enable stringsbuilder analyzer 2025-12-03 15:12:35 +00:00
hubble-relay build: Add flag to control goexperiments 2025-07-17 07:54:44 +00:00
images images: update cilium-{runtime,builder} 2025-12-10 13:02:40 +00:00
install/kubernetes clustermesh: fix helm etcd tls error by disabling gRPC gateway 2025-12-11 07:39:06 +00:00
operator pks/k8s: add support for WatchList in testutils 2025-12-12 13:42:56 +00:00
pkg policy: add precedence tests 2025-12-12 20:44:19 +00:00
plugins pkg/ztunnel: add ZDS protocol API 2025-12-03 16:39:47 +00:00
standalone-dns-proxy Revert "policy: Replace versioned with part.Map" 2025-12-11 18:28:11 +00:00
test pks/k8s: add support for WatchList in testutils 2025-12-12 13:42:56 +00:00
tools alignchecker: remove unnecessary aligncheck register for lb_service 2025-12-04 16:09:27 +00:00
vendor k8s: update libraries to v1.35.0-rc.1 2025-12-12 13:42:56 +00:00
.authors.aux docs: update authors 2018-09-17 11:28:52 +02:00
.clang-format .clang-format: Re-write and re-license .clang-format 2023-07-06 17:22:59 +02:00
.clomonitor.yml doc: update slack channel reference 2024-07-30 09:29:07 +00:00
.gitattributes .gitattributes: mark datapath config files as autogenerated 2025-11-27 09:12:46 +00:00
.gitignore Revert "chore: enable installation of crds through helm chart" 2025-11-17 15:23:39 -08:00
.golangci.yaml modernize: Enable stringsbuilder analyzer 2025-12-03 15:12:35 +00:00
.mailmap Update AUTHORS 2025-05-07 16:07:11 -07:00
AUTHORS update AUTHORS and Documentation 2025-12-01 11:39:35 +00:00
CODE_OF_CONDUCT.md fix link to CNCF CoC 2022-10-13 18:23:57 +01:00
CODEOWNERS ipcache/restore: restore as part of IPCache hive lifecycle hook 2025-12-03 15:00:05 +00:00
CONTRIBUTING.md docs: clarify support expectations in CONTRIBUTING.md 2025-03-07 10:34:36 -08:00
FURTHER_READINGS.rst docs: Add talks to reference further reading 2022-08-20 13:32:35 +02:00
go.mod k8s: update libraries to v1.35.0-rc.1 2025-12-12 13:42:56 +00:00
go.sum k8s: update libraries to v1.35.0-rc.1 2025-12-12 13:42:56 +00:00
LICENSE LICENSE: Update copyright column 2018-06-26 14:33:44 -07:00
MAINTAINERS.md MAINTAINERS: Correctly link Arthur's GitHub profile 2025-10-30 14:48:49 +00:00
Makefile pkg/ztunnel: add ZDS protocol API 2025-12-03 16:39:47 +00:00
Makefile.defs chore(deps): update golangci/golangci-lint docker tag to v2.7.1 2025-12-08 16:14:12 +00:00
Makefile.docker feat(sdp): Dockerfile for standalone dns proxy 2025-11-17 10:52:52 -08:00
Makefile.kind contrib: kind-fast: pre-load more images 2025-12-09 13:35:41 +00:00
Makefile.quiet Makefile: Print quiet lines for each package tested 2022-06-10 21:55:39 +02:00
netlify.toml doc: Enable Netlify Deploy Preview 2020-05-21 10:29:11 -07:00
README.rst README: Update releases 2025-12-01 15:39:15 +00:00
SECURITY-INSIGHTS.yml chore: provide OSSF security insight 2024-01-29 13:59:41 -08:00
SECURITY.md v1.18.0: drop support for 1.15 and add v1.18 2025-07-29 17:16:02 +02:00
stable.txt README: Update releases 2025-11-12 23:32:33 +00:00
USERS.md Remove Tetragon users from USERS.md 2025-11-27 14:57:35 +00:00
VERSION Revert "Prepare for release v1.19.0-pre.3" 2025-12-01 11:39:35 +00:00

.. raw:: html

   <picture>
      <source media="(prefers-color-scheme: light)" srcset="https://cdn.jsdelivr.net/gh/cilium/cilium@main/Documentation/images/logo.png" width="350" alt="Cilium Logo">
      <img src="https://cdn.jsdelivr.net/gh/cilium/cilium@main/Documentation/images/logo-dark.png" width="350" alt="Cilium Logo">
   </picture>

|cii| |go-report| |clomonitor| |artifacthub| |slack| |go-doc| |rtd| |apache| |bsd| |gpl| |fossa| |gateway-api| |codespaces|

Cilium is a networking, observability, and security solution with an eBPF-based
dataplane. It provides a simple flat Layer 3 network with the ability to span
multiple clusters in either a native routing or overlay mode. It is L7-protocol
aware and can enforce network policies on L3-L7 using an identity based security
model that is decoupled from network addressing.

Cilium implements distributed load balancing for traffic between pods and to
external services, and is able to fully replace kube-proxy, using efficient
hash tables in eBPF allowing for almost unlimited scale. It also supports
advanced functionality like integrated ingress and egress gateway, bandwidth
management and service mesh, and provides deep network and security visibility and monitoring.

A new Linux kernel technology called eBPF_ is at the foundation of Cilium. It
supports dynamic insertion of eBPF bytecode into the Linux kernel at various
integration points such as: network IO, application sockets, and tracepoints to
implement security, networking and visibility logic. eBPF is highly efficient
and flexible. To learn more about eBPF, visit `eBPF.io`_.

.. image:: Documentation/images/cilium-overview.png
   :alt: Overview of Cilium features for networking, observability, service mesh, and runtime security

.. raw:: html

   <a href="https://cncf.io/">
      <picture>
         <source media="(prefers-color-scheme: light)" srcset="https://github.com/cncf/artwork/blob/main/other/cncf-member/graduated/color/cncf-graduated-color.svg" />
         <img src="https://github.com/cncf/artwork/blob/main/other/cncf-member/graduated/white/cncf-graduated-white.svg" alt="CNCF Graduated Project" height="80" />
      </picture>
   </a>
   <a href="https://ebpf.io/">
      <picture>
         <source media="(prefers-color-scheme: light)" srcset=".github/assets/ebpf-horizontal.svg" />
         <img src=".github/assets/ebpf-horizontal-dark-back.svg" alt="eBPF Logo" height="80" align="right" />
      </picture>
   </a>

Stable Releases
===============

The Cilium community maintains minor stable releases for the last three minor
Cilium versions. Older Cilium stable versions from minor releases prior to that
are considered EOL.

For upgrades to new minor releases please consult the `Cilium Upgrade Guide`_.

Listed below are the actively maintained release branches along with their latest
patch release, corresponding image pull tags and their release notes:

+---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+
| `v1.18 <https://github.com/cilium/cilium/tree/v1.18>`__ | 2025-11-12 | ``quay.io/cilium/cilium:v1.18.4``  | `Release Notes <https://github.com/cilium/cilium/releases/tag/v1.18.4>`__  |
+---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+
| `v1.17 <https://github.com/cilium/cilium/tree/v1.17>`__ | 2025-11-12 | ``quay.io/cilium/cilium:v1.17.10`` | `Release Notes <https://github.com/cilium/cilium/releases/tag/v1.17.10>`__ |
+---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+
| `v1.16 <https://github.com/cilium/cilium/tree/v1.16>`__ | 2025-11-12 | ``quay.io/cilium/cilium:v1.16.17`` | `Release Notes <https://github.com/cilium/cilium/releases/tag/v1.16.17>`__ |
+---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+

Architectures
-------------

Cilium images are distributed for AMD64 and AArch64 architectures.

Software Bill of Materials
--------------------------

Starting with Cilium version 1.13.0, all images include a Software Bill of
Materials (SBOM). The SBOM is generated in `SPDX`_ format. More information
on this is available on `Cilium SBOM`_.

.. _`SPDX`: https://spdx.dev/
.. _`Cilium SBOM`: https://docs.cilium.io/en/latest/configuration/sbom/

Development
===========

For development and testing purpose, the Cilium community publishes snapshots,
early release candidates (RC) and CI container images build from the `main
branch <https://github.com/cilium/cilium/commits/main>`_. These images are
not for use in production.

For testing upgrades to new development releases please consult the latest
development build of the `Cilium Upgrade Guide`_.

Listed below are branches for testing along with their snapshots or RC releases,
corresponding image pull tags and their release notes where applicable:

+----------------------------------------------------------------------------+------------+-----------------------------------------+---------------------------------------------------------------------------------+
| `main <https://github.com/cilium/cilium/commits/main>`__                   | daily      | ``quay.io/cilium/cilium-ci:latest``     | N/A                                                                             |
+----------------------------------------------------------------------------+------------+-----------------------------------------+---------------------------------------------------------------------------------+
| `v1.19.0-pre.3 <https://github.com/cilium/cilium/commits/v1.19.0-pre.3>`__ | 2025-12-01 | ``quay.io/cilium/cilium:v1.19.0-pre.3`` | `Release Notes <https://github.com/cilium/cilium/releases/tag/v1.19.0-pre.3>`__ |
+----------------------------------------------------------------------------+------------+-----------------------------------------+---------------------------------------------------------------------------------+

Functionality Overview
======================

.. begin-functionality-overview

CNI (Container Network Interface)
---------------------------------

`Cilium as a CNI plugin <https://cilium.io/use-cases/cni/>`_ provides a
fast, scalable, and secure networking layer for Kubernetes clusters. Built
on eBPF, it offers several deployment options:

* **Overlay networking:** encapsulation-based virtual network spanning all
  hosts with support for VXLAN and Geneve. It works on almost any network
  infrastructure as the only requirement is IP connectivity between hosts
  which is typically already given.

* **Native routing mode:** Use of the regular routing table of the Linux
  host. The network is required to be capable of routing the IP addresses
  of the application containers. It integrates with cloud routers, routing
  daemons, and IPv6-native infrastructure.

* **Flexible routing options:** Cilium can automate route learning and
  advertisement in common topologies such as using L2 neighbor discovery
  when nodes share a layer 2 domain, or BGP when routing across layer 3
  boundaries.

Each mode is designed for maximum interoperability with existing
infrastructure while minimizing operational burden.

Load Balancing
--------------

Cilium implements distributed load balancing for traffic between application
containers and to/from external services. The load balancing is implemented
in eBPF using efficient hashtables enabling high service density and low
latency at scale.

* **East-west load balancing** rewrites service connections at the socket
  level (``connect()``), avoiding the overhead of per-packet NAT and fully
  `replacing kube-proxy <https://cilium.io/use-cases/kube-proxy/>`_.

* **North-south load balancing** supports XDP for high-throughput scenarios
  and `layer 4 load balancing <https://cilium.io/use-cases/load-balancer/>`_
  including Direct Server Return (DSR), and Maglev consistent hashing.

Cluster Mesh
------------

Cilium `Cluster Mesh <https://cilium.io/use-cases/cluster-mesh/>`_ enables
secure, seamless connectivity across multiple Kubernetes clusters. For
operators running hybrid or multi-cloud environments, Cluster Mesh ensures
a consistent security and connectivity experience.

* **Global service discovery**: Workloads across clusters can discover and
  connect to services as if they were local. This enables fault tolerance,
  like automatically failing over to backends in another cluster, and
  exposes shared services like logging, auth, or databases across
  environments.

* **Unified identity model:** Security policies are enforced based on
  identity, not IP address, across all clusters.

Network Policy
--------------

Cilium `Network Policy <https://cilium.io/use-cases/network-policy/>`_
provides identity-aware enforcement across L3-L7. Typical container
firewalls secure workloads by filtering on source IP addresses and
destination ports. This concept requires the firewalls on all servers to be
manipulated whenever a container is started anywhere in the cluster.

In order to avoid this situation which limits scale, Cilium assigns a
security identity to groups of application containers which share identical
security policies. The identity is then associated with all network packets
emitted by the application containers, allowing to validate the identity at
the receiving node.

* **Identity-based security** removes reliance on brittle IP addresses.

* **L3/L4 policies** restrict traffic based on labels, protocols, and ports.

* **DNS-based policies:** Allow or deny traffic to FQDNs or wildcard domains
   (e.g., ``api.example.com``, ``*.trusted.com``). This is especially useful
   for securing egress traffic to third-party services.

* **L7-aware policies** allow filtering by HTTP method, URL path, gRPC call,
  and more:

  * Example: Allow only GET requests to ``/public/.*``.

  * Enforce the presence of headers like ``X-Token: [0-9]+``.

CIDR-based egress and ingress policies are also supported for controlling
access to external IPs, ideal for integrating with legacy systems or
regulatory boundaries.

Service Mesh
------------

With Cilium `Service Mesh <https://cilium.io/use-cases/service-mesh/>`_,
operators gain the benefits of fine-grained traffic control, encryption, observability,
access control, without the cost and complexity of traditional proxy-based
designs. Key features include:

* **Mutual authentication** with automatic identity-based encryption between
  workloads using IPSec or WireGuard.

* **L7-aware policy enforcement** for security and compliance.

* **Deep integration with the Kubernetes Gateway API :** Acts as a
  `Gateway API <https://cilium.io/use-cases/gateway-api/>`_ compliant data
  plane, allowing you to declaratively manage ingress, traffic splitting, and
  routing behavior using Kubernetes-native CRDs.

Observability and Troubleshooting
---------------------------------

Observability is built into Cilium from the ground up, providing rich
visibility that helps operators diagnose and understand system behavior
including:

* **Hubble**: A fully integrated observability platform that offers
  real-time service maps, flow visibility with identity and label metadata,
  and DNS-aware filtering and protocol-specific insights

* **Metrics and alerting**: Integration with Prometheus, Grafana, and other
  monitoring systems.

* **Drop reasons and audit trails**: Get actionable insights into why traffic
  was dropped, including policy or port violations and issues like failed
  DNS lookups.

.. end-functionality-overview

Getting Started
===============

* `Why Cilium?`_
* `Getting Started`_
* `Architecture and Concepts`_
* `Installing Cilium`_
* `Frequently Asked Questions`_
* Contributing_

Community
=========

Slack
-----

Join the Cilium `Slack channel <https://slack.cilium.io>`_ to chat with
Cilium developers and other Cilium users. This is a good place to learn about
Cilium, ask questions, and share your experiences.

Special Interest Groups (SIG)
-----------------------------

See `Special Interest groups
<https://github.com/cilium/community/blob/main/sigs.yaml>`_ for a list of all SIGs and their meeting times.

Developer meetings
------------------
The Cilium developer community hangs out on Zoom to chat. Everybody is welcome.

* Weekly, Wednesday,
  5:00 pm `Europe/Zurich time <https://time.is/Canton_of_Zurich>`__ (CET/CEST),
  usually equivalent to 8:00 am PT, or 11:00 am ET. `Meeting Notes and Zoom Info`_
* Third Wednesday of each month, 9:00 am `Japan time <https://time.is/Tokyo>`__ (JST). `APAC Meeting Notes and Zoom Info`_

eBPF & Cilium Office Hours livestream
-------------------------------------
We host a weekly community `YouTube livestream called eCHO <https://www.youtube.com/channel/UCJFUxkVQTBJh3LD1wYBWvuQ>`_ which (very loosely!) stands for eBPF & Cilium Office Hours. Join us live, catch up with past episodes, or head over to the `eCHO repo <https://github.com/isovalent/eCHO>`_ and let us know your ideas for topics we should cover.

Governance
----------
The Cilium project is governed by a group of `Maintainers and Committers <https://raw.githubusercontent.com/cilium/cilium/main/MAINTAINERS.md>`__.
How they are selected and govern is outlined in our `governance document <https://github.com/cilium/community/blob/main/GOVERNANCE.md>`__.

Adopters
--------
A list of adopters of the Cilium project who are deploying it in production, and of their use cases,
can be found in file `USERS.md <https://github.com/cilium/cilium/blob/main/USERS.md>`__.

License
=======

.. _apache-license: LICENSE
.. _bsd-license: bpf/LICENSE.BSD-2-Clause
.. _gpl-license: bpf/LICENSE.GPL-2.0

The Cilium user space components are licensed under the
`Apache License, Version 2.0 <apache-license_>`__.
The BPF code templates are dual-licensed under the
`General Public License, Version 2.0 (only) <gpl-license_>`__
and the `2-Clause BSD License <bsd-license_>`__
(you can use the terms of either license, at your option).

.. _`Cilium Upgrade Guide`: https://docs.cilium.io/en/stable/operations/upgrade/
.. _`Why Cilium?`: https://docs.cilium.io/en/stable/overview/intro
.. _`Getting Started`: https://docs.cilium.io/en/stable/#getting-started
.. _`Architecture and Concepts`: https://docs.cilium.io/en/stable/overview/component-overview/
.. _`Installing Cilium`: https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/
.. _`Frequently Asked Questions`: https://github.com/cilium/cilium/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Akind%2Fquestion+
.. _Contributing: https://docs.cilium.io/en/stable/contributing/development/
.. _Prerequisites: https://docs.cilium.io/en/stable/operations/system_requirements/
.. _`eBPF`: https://ebpf.io
.. _`eBPF.io`: https://ebpf.io
.. _`Meeting Notes and Zoom Info`: https://docs.google.com/document/d/1Y_4chDk4rznD6UgXPlPvn3Dc7l-ZutGajUv1eF0VDwQ/edit#
.. _`APAC Meeting Notes and Zoom Info`: https://docs.google.com/document/d/1egv4qLydr0geP-GjQexYKm4tz3_tHy-LCBjVQcXcT5M/edit#

.. |go-report| image:: https://goreportcard.com/badge/github.com/cilium/cilium
    :alt: Go Report Card
    :target: https://goreportcard.com/report/github.com/cilium/cilium

.. |go-doc| image:: https://godoc.org/github.com/cilium/cilium?status.svg
    :alt: GoDoc
    :target: https://godoc.org/github.com/cilium/cilium

.. |rtd| image:: https://readthedocs.org/projects/docs/badge/?version=latest
    :alt: Read the Docs
    :target: https://docs.cilium.io/

.. |apache| image:: https://img.shields.io/badge/license-Apache-blue.svg
    :alt: Apache licensed
    :target: apache-license_

.. |bsd| image:: https://img.shields.io/badge/license-BSD-blue.svg
    :alt: BSD licensed
    :target: bsd-license_

.. |gpl| image:: https://img.shields.io/badge/license-GPL-blue.svg
    :alt: GPL licensed
    :target: gpl-license_

.. |slack| image:: https://img.shields.io/badge/slack-cilium-brightgreen.svg?logo=slack
    :alt: Join the Cilium slack channel
    :target: https://slack.cilium.io

.. |cii| image:: https://bestpractices.coreinfrastructure.org/projects/1269/badge
    :alt: CII Best Practices
    :target: https://bestpractices.coreinfrastructure.org/projects/1269

.. |clomonitor| image:: https://img.shields.io/endpoint?url=https://clomonitor.io/api/projects/cncf/cilium/badge
    :alt: CLOMonitor
    :target: https://clomonitor.io/projects/cncf/cilium

.. |artifacthub| image:: https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/cilium
    :alt: Artifact Hub
    :target: https://artifacthub.io/packages/helm/cilium/cilium

.. |fossa| image:: https://app.fossa.com/api/projects/custom%2B162%2Fgit%40github.com%3Acilium%2Fcilium.git.svg?type=shield
    :alt: FOSSA Status
    :target: https://app.fossa.com/projects/custom%2B162%2Fgit%40github.com%3Acilium%2Fcilium.git?ref=badge_shield

.. |gateway-api| image:: https://img.shields.io/badge/Gateway%20API%20Conformance%20v1.2.0-Cilium-green
    :alt: Gateway API Status
    :target: https://github.com/kubernetes-sigs/gateway-api/tree/main/conformance/reports/v1.2.0/cilium-cilium

.. |codespaces| image:: https://img.shields.io/badge/Open_in_GitHub_Codespaces-gray?logo=github
    :alt: Github Codespaces
    :target: https://github.com/codespaces/new?hide_repo_select=true&ref=master&repo=48109239&machine=standardLinux32gb&location=WestEurope