github.com/cilium/cilium@v1.16.2/README.rst (about) 1 .. raw:: html 2 3 <picture> 4 <source media="(prefers-color-scheme: light)" srcset="https://cdn.jsdelivr.net/gh/cilium/cilium@main/Documentation/images/logo.png" width="350" alt="Cilium Logo"> 5 <img src="https://cdn.jsdelivr.net/gh/cilium/cilium@main/Documentation/images/logo-dark.png" width="350" alt="Cilium Logo"> 6 </picture> 7 8 |cii| |go-report| |clomonitor| |artifacthub| |slack| |go-doc| |rtd| |apache| |bsd| |gpl| |fossa| |gateway-api| |codespaces| 9 10 Cilium is a networking, observability, and security solution with an eBPF-based 11 dataplane. It provides a simple flat Layer 3 network with the ability to span 12 multiple clusters in either a native routing or overlay mode. It is L7-protocol 13 aware and can enforce network policies on L3-L7 using an identity based security 14 model that is decoupled from network addressing. 15 16 Cilium implements distributed load balancing for traffic between pods and to 17 external services, and is able to fully replace kube-proxy, using efficient 18 hash tables in eBPF allowing for almost unlimited scale. It also supports 19 advanced functionality like integrated ingress and egress gateway, bandwidth 20 management and service mesh, and provides deep network and security visibility and monitoring. 21 22 A new Linux kernel technology called eBPF_ is at the foundation of Cilium. It 23 supports dynamic insertion of eBPF bytecode into the Linux kernel at various 24 integration points such as: network IO, application sockets, and tracepoints to 25 implement security, networking and visibility logic. eBPF is highly efficient 26 and flexible. To learn more about eBPF, visit `eBPF.io`_. 27 28 .. image:: Documentation/images/cilium-overview.png 29 :alt: Overview of Cilium features for networking, observability, service mesh, and runtime security 30 31 Stable Releases 32 =============== 33 34 The Cilium community maintains minor stable releases for the last three minor 35 Cilium versions. Older Cilium stable versions from minor releases prior to that 36 are considered EOL. 37 38 For upgrades to new minor releases please consult the `Cilium Upgrade Guide`_. 39 40 Listed below are the actively maintained release branches along with their latest 41 patch release, corresponding image pull tags and their release notes: 42 43 +---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+ 44 | `v1.15 <https://github.com/cilium/cilium/tree/v1.15>`__ | 2024-06-10 | ``quay.io/cilium/cilium:v1.15.6`` | `Release Notes <https://github.com/cilium/cilium/releases/tag/v1.15.6>`__ | 45 +---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+ 46 | `v1.14 <https://github.com/cilium/cilium/tree/v1.14>`__ | 2024-06-10 | ``quay.io/cilium/cilium:v1.14.12`` | `Release Notes <https://github.com/cilium/cilium/releases/tag/v1.14.12>`__ | 47 +---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+ 48 | `v1.13 <https://github.com/cilium/cilium/tree/v1.13>`__ | 2024-06-10 | ``quay.io/cilium/cilium:v1.13.17`` | `Release Notes <https://github.com/cilium/cilium/releases/tag/v1.13.17>`__ | 49 +---------------------------------------------------------+------------+------------------------------------+----------------------------------------------------------------------------+ 50 51 Architectures 52 ------------- 53 54 Cilium images are distributed for AMD64 and AArch64 architectures. 55 56 Software Bill of Materials 57 -------------------------- 58 59 Starting with Cilium version 1.13.0, all images include a Software Bill of 60 Materials (SBOM). The SBOM is generated in `SPDX`_ format. More information 61 on this is available on `Cilium SBOM`_. 62 63 .. _`SPDX`: https://spdx.dev/ 64 .. _`Cilium SBOM`: https://docs.cilium.io/en/latest/configuration/sbom/ 65 66 Development 67 =========== 68 69 For development and testing purpose, the Cilium community publishes snapshots, 70 early release candidates (RC) and CI container images build from the `main 71 branch <https://github.com/cilium/cilium/commits/main>`_. These images are 72 not for use in production. 73 74 For testing upgrades to new development releases please consult the latest 75 development build of the `Cilium Upgrade Guide`_. 76 77 Listed below are branches for testing along with their snapshots or RC releases, 78 corresponding image pull tags and their release notes where applicable: 79 80 +--------------------------------------------------------------------------------------+------------+----------------------------------------------+-------------------------------------------------------------------------------------------+ 81 | `main <https://github.com/cilium/cilium/commits/main>`__ | daily | ``quay.io/cilium/cilium-ci:latest`` | N/A | 82 +--------------------------------------------------------------------------------------+------------+----------------------------------------------+-------------------------------------------------------------------------------------------+ 83 | `v1.16.0-rc.0 <https://github.com/cilium/cilium/commits/v1.16.0-rc.0>`__ | 2024-06-17 | ``quay.io/cilium/cilium:v1.16.0-rc.0`` | `Release Candidate Notes <https://github.com/cilium/cilium/releases/tag/v1.16.0-rc.0>`__ | 84 +--------------------------------------------------------------------------------------+------------+----------------------------------------------+-------------------------------------------------------------------------------------------+ 85 86 Functionality Overview 87 ====================== 88 89 .. begin-functionality-overview 90 91 Protect and secure APIs transparently 92 ------------------------------------- 93 94 Ability to secure modern application protocols such as REST/HTTP, gRPC and 95 Kafka. Traditional firewalls operate at Layer 3 and 4. A protocol running on a 96 particular port is either completely trusted or blocked entirely. Cilium 97 provides the ability to filter on individual application protocol requests such 98 as: 99 100 - Allow all HTTP requests with method ``GET`` and path ``/public/.*``. Deny all 101 other requests. 102 - Allow ``service1`` to produce on Kafka topic ``topic1`` and ``service2`` to 103 consume on ``topic1``. Reject all other Kafka messages. 104 - Require the HTTP header ``X-Token: [0-9]+`` to be present in all REST calls. 105 106 See the section `Layer 7 Policy`_ in our documentation for the latest list of 107 supported protocols and examples on how to use it. 108 109 Secure service to service communication based on identities 110 ----------------------------------------------------------- 111 112 Modern distributed applications rely on technologies such as application 113 containers to facilitate agility in deployment and scale out on demand. This 114 results in a large number of application containers being started in a short 115 period of time. Typical container firewalls secure workloads by filtering on 116 source IP addresses and destination ports. This concept requires the firewalls 117 on all servers to be manipulated whenever a container is started anywhere in 118 the cluster. 119 120 In order to avoid this situation which limits scale, Cilium assigns a security 121 identity to groups of application containers which share identical security 122 policies. The identity is then associated with all network packets emitted by 123 the application containers, allowing to validate the identity at the receiving 124 node. Security identity management is performed using a key-value store. 125 126 Secure access to and from external services 127 ------------------------------------------- 128 129 Label based security is the tool of choice for cluster internal access control. 130 In order to secure access to and from external services, traditional CIDR based 131 security policies for both ingress and egress are supported. This allows to 132 limit access to and from application containers to particular IP ranges. 133 134 Simple Networking 135 ----------------- 136 137 A simple flat Layer 3 network with the ability to span multiple clusters 138 connects all application containers. IP allocation is kept simple by using host 139 scope allocators. This means that each host can allocate IPs without any 140 coordination between hosts. 141 142 The following multi node networking models are supported: 143 144 * **Overlay:** Encapsulation-based virtual network spanning all hosts. 145 Currently, VXLAN and Geneve are baked in but all encapsulation formats 146 supported by Linux can be enabled. 147 148 When to use this mode: This mode has minimal infrastructure and integration 149 requirements. It works on almost any network infrastructure as the only 150 requirement is IP connectivity between hosts which is typically already 151 given. 152 153 * **Native Routing:** Use of the regular routing table of the Linux host. 154 The network is required to be capable to route the IP addresses of the 155 application containers. 156 157 When to use this mode: This mode is for advanced users and requires some 158 awareness of the underlying networking infrastructure. This mode works well 159 with: 160 161 - Native IPv6 networks 162 - In conjunction with cloud network routers 163 - If you are already running routing daemons 164 165 Load Balancing 166 -------------- 167 168 Cilium implements distributed load balancing for traffic between application 169 containers and to external services and is able to fully replace components 170 such as kube-proxy. The load balancing is implemented in eBPF using efficient 171 hashtables allowing for almost unlimited scale. 172 173 For north-south type load balancing, Cilium's eBPF implementation is optimized 174 for maximum performance, can be attached to XDP (eXpress Data Path), and supports 175 direct server return (DSR) as well as Maglev consistent hashing if the load 176 balancing operation is not performed on the source host. 177 178 For east-west type load balancing, Cilium performs efficient service-to-backend 179 translation right in the Linux kernel's socket layer (e.g. at TCP connect time) 180 such that per-packet NAT operations overhead can be avoided in lower layers. 181 182 Bandwidth Management 183 -------------------- 184 185 Cilium implements bandwidth management through efficient EDT-based (Earliest Departure 186 Time) rate-limiting with eBPF for container traffic that is egressing a node. This 187 allows to significantly reduce transmission tail latencies for applications and to 188 avoid locking under multi-queue NICs compared to traditional approaches such as HTB 189 (Hierarchy Token Bucket) or TBF (Token Bucket Filter) as used in the bandwidth CNI 190 plugin, for example. 191 192 Monitoring and Troubleshooting 193 ------------------------------ 194 195 The ability to gain visibility and troubleshoot issues is fundamental to the 196 operation of any distributed system. While we learned to love tools like 197 ``tcpdump`` and ``ping`` and while they will always find a special place in our 198 hearts, we strive to provide better tooling for troubleshooting. This includes 199 tooling to provide: 200 201 - Event monitoring with metadata: When a packet is dropped, the tool doesn't 202 just report the source and destination IP of the packet, the tool provides 203 the full label information of both the sender and receiver among a lot of 204 other information. 205 206 - Metrics export via Prometheus: Key metrics are exported via Prometheus for 207 integration with your existing dashboards. 208 209 - Hubble_: An observability platform specifically written for Cilium. It 210 provides service dependency maps, operational monitoring and alerting, 211 and application and security visibility based on flow logs. 212 213 .. _Hubble: https://github.com/cilium/hubble/ 214 .. _`Layer 7 Policy`: https://docs.cilium.io/en/stable/security/policy/language/#layer-7-examples 215 216 .. end-functionality-overview 217 218 Getting Started 219 =============== 220 221 * `Why Cilium?`_ 222 * `Getting Started`_ 223 * `Architecture and Concepts`_ 224 * `Installing Cilium`_ 225 * `Frequently Asked Questions`_ 226 * Contributing_ 227 228 What is eBPF and XDP? 229 ===================== 230 231 Berkeley Packet Filter (BPF) is a Linux kernel bytecode interpreter originally 232 introduced to filter network packets, e.g. for tcpdump and socket filters. The 233 BPF instruction set and surrounding architecture have recently been 234 significantly reworked with additional data structures such as hash tables and 235 arrays for keeping state as well as additional actions to support packet 236 mangling, forwarding, encapsulation, etc. Furthermore, a compiler back end for 237 LLVM allows for programs to be written in C and compiled into BPF instructions. 238 An in-kernel verifier ensures that BPF programs are safe to run and a JIT 239 compiler converts the BPF bytecode to CPU architecture-specific instructions 240 for native execution efficiency. BPF programs can be run at various hooking 241 points in the kernel such as for incoming packets, outgoing packets, system 242 calls, kprobes, uprobes, tracepoints, etc. 243 244 BPF continues to evolve and gain additional capabilities with each new Linux 245 release. Cilium leverages BPF to perform core data path filtering, mangling, 246 monitoring and redirection, and requires BPF capabilities that are in any Linux 247 kernel version 4.8.0 or newer (the latest current stable Linux kernel is 248 4.14.x). 249 250 Many Linux distributions including CoreOS, Debian, Docker's LinuxKit, Fedora, 251 openSUSE and Ubuntu already ship kernel versions >= 4.8.x. You can check your Linux 252 kernel version by running ``uname -a``. If you are not yet running a recent 253 enough kernel, check the Documentation of your Linux distribution on how to run 254 Linux kernel 4.9.x or later. 255 256 To read up on the necessary kernel versions to run the BPF runtime, see the 257 section Prerequisites_. 258 259 .. image:: https://cdn.jsdelivr.net/gh/cilium/cilium@main/Documentation/images/bpf-overview.png 260 :align: center 261 262 XDP is a further step in evolution and enables running a specific flavor of BPF 263 programs from the network driver with direct access to the packet's DMA buffer. 264 This is, by definition, the earliest possible point in the software stack, 265 where programs can be attached to in order to allow for a programmable, high 266 performance packet processor in the Linux kernel networking data path. 267 268 Further information about BPF and XDP targeted for developers can be found in 269 the `BPF and XDP Reference Guide`_. 270 271 To know more about Cilium, its extensions and use cases around Cilium and BPF 272 take a look at `Further Readings <FURTHER_READINGS.rst>`_ section. 273 274 Community 275 ========= 276 277 Slack 278 ----- 279 280 Join the Cilium `Slack channel <https://slack.cilium.io>`_ to chat with 281 Cilium developers and other Cilium users. This is a good place to learn about 282 Cilium, ask questions, and share your experiences. 283 284 Special Interest Groups (SIG) 285 ----------------------------- 286 287 See `Special Interest groups 288 <https://docs.cilium.io/en/stable/community/community/#special-interest-groups>`_ for a list of all SIGs and their meeting times. 289 290 Developer meetings 291 ------------------ 292 The Cilium developer community hangs out on Zoom to chat. Everybody is welcome. 293 294 * Weekly, Wednesday, 295 5:00 pm `Europe/Zurich time <https://time.is/Canton_of_Zurich>`__ (CET/CEST), 296 usually equivalent to 8:00 am PT, or 11:00 am ET. `Join Zoom`_ 297 * Third Wednesday of each month, 9:00 am `Japan time <https://time.is/Tokyo>`__ (JST). `Join Zoom`_ 298 299 eBPF & Cilium Office Hours livestream 300 ------------------------------------- 301 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. 302 303 Governance 304 ---------- 305 The Cilium project is governed by a group of `Maintainers and Committers <https://raw.githubusercontent.com/cilium/cilium/main/MAINTAINERS.md>`__. 306 How they are selected and govern is outlined in our `governance document <https://github.com/cilium/community/blob/main/GOVERNANCE.md>`__. 307 308 Adopters 309 -------- 310 A list of adopters of the Cilium project who are deploying it in production, and of their use cases, 311 can be found in file `USERS.md <https://github.com/cilium/cilium/blob/main/USERS.md>`__. 312 313 Roadmap 314 ------- 315 Cilium maintains a `public roadmap <https://docs.cilium.io/en/latest/community/roadmap/>`__. It gives a high-level view of the main priorities for the project, the maturity of different features and projects, and how to influence the project direction. 316 317 License 318 ======= 319 320 .. _apache-license: LICENSE 321 .. _bsd-license: bpf/LICENSE.BSD-2-Clause 322 .. _gpl-license: bpf/LICENSE.GPL-2.0 323 324 The Cilium user space components are licensed under the 325 `Apache License, Version 2.0 <apache-license_>`__. 326 The BPF code templates are dual-licensed under the 327 `General Public License, Version 2.0 (only) <gpl-license_>`__ 328 and the `2-Clause BSD License <bsd-license_>`__ 329 (you can use the terms of either license, at your option). 330 331 .. _`Cilium Upgrade Guide`: https://docs.cilium.io/en/stable/operations/upgrade/ 332 .. _`Why Cilium?`: https://docs.cilium.io/en/stable/overview/intro 333 .. _`Getting Started`: https://docs.cilium.io/en/stable/#getting-started 334 .. _`Architecture and Concepts`: https://docs.cilium.io/en/stable/overview/component-overview/ 335 .. _`Installing Cilium`: https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/ 336 .. _`Frequently Asked Questions`: https://github.com/cilium/cilium/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Akind%2Fquestion+ 337 .. _Contributing: https://docs.cilium.io/en/stable/contributing/development/ 338 .. _Prerequisites: https://docs.cilium.io/en/stable/operations/system_requirements/ 339 .. _`BPF and XDP Reference Guide`: https://docs.cilium.io/en/stable/bpf/ 340 .. _`eBPF`: https://ebpf.io 341 .. _`eBPF.io`: https://ebpf.io 342 .. _`Join Zoom`: https://zoom.us/j/596609673 343 344 .. |go-report| image:: https://goreportcard.com/badge/github.com/cilium/cilium 345 :alt: Go Report Card 346 :target: https://goreportcard.com/report/github.com/cilium/cilium 347 348 .. |go-doc| image:: https://godoc.org/github.com/cilium/cilium?status.svg 349 :alt: GoDoc 350 :target: https://godoc.org/github.com/cilium/cilium 351 352 .. |rtd| image:: https://readthedocs.org/projects/docs/badge/?version=latest 353 :alt: Read the Docs 354 :target: https://docs.cilium.io/ 355 356 .. |apache| image:: https://img.shields.io/badge/license-Apache-blue.svg 357 :alt: Apache licensed 358 :target: apache-license_ 359 360 .. |bsd| image:: https://img.shields.io/badge/license-BSD-blue.svg 361 :alt: BSD licensed 362 :target: bsd-license_ 363 364 .. |gpl| image:: https://img.shields.io/badge/license-GPL-blue.svg 365 :alt: GPL licensed 366 :target: gpl-license_ 367 368 .. |slack| image:: https://img.shields.io/badge/slack-cilium-brightgreen.svg?logo=slack 369 :alt: Join the Cilium slack channel 370 :target: https://slack.cilium.io 371 372 .. |cii| image:: https://bestpractices.coreinfrastructure.org/projects/1269/badge 373 :alt: CII Best Practices 374 :target: https://bestpractices.coreinfrastructure.org/projects/1269 375 376 .. |clomonitor| image:: https://img.shields.io/endpoint?url=https://clomonitor.io/api/projects/cncf/cilium/badge 377 :alt: CLOMonitor 378 :target: https://clomonitor.io/projects/cncf/cilium 379 380 .. |artifacthub| image:: https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/cilium 381 :alt: Artifact Hub 382 :target: https://artifacthub.io/packages/helm/cilium/cilium 383 384 .. |fossa| image:: https://app.fossa.com/api/projects/custom%2B162%2Fgit%40github.com%3Acilium%2Fcilium.git.svg?type=shield 385 :alt: FOSSA Status 386 :target: https://app.fossa.com/projects/custom%2B162%2Fgit%40github.com%3Acilium%2Fcilium.git?ref=badge_shield 387 388 .. |gateway-api| image:: https://img.shields.io/badge/Gateway%20API%20Conformance%20v1.0.0-Cilium-green 389 :alt: Gateway API Status 390 :target: https://github.com/kubernetes-sigs/gateway-api/blob/main/conformance/reports/v1.0.0/cilium.yaml 391 392 .. |codespaces| image:: https://img.shields.io/badge/Open_in_GitHub_Codespaces-gray?logo=github 393 :alt: Github Codespaces 394 :target: https://github.com/codespaces/new?hide_repo_select=true&ref=master&repo=48109239&machine=standardLinux32gb&location=WestEurope