contribution/compass
cilium/cilium

Cilium

166 signals · 203 observation events

Open repository ↗

eBPF-based Networking, Security, and Observability

24.9K stars4.0K forksGoApache-2.0bpfcncfcnicontainersebpfk8skernelkuberneteskeyword: Cilium
PROJECT NEWS

Release, roadmap, and discussion

All news →
cilium/cilium

Cilium

Platform / Networking / Runtime Infrastructure
Latest stable

1.20.0

v1.20.0
  • ⛩️ Gateway API
  • 🚀 Gateway API v1.6.1: Cilium moves from Gateway API v1.4 to v1.6.1, bringing support for capabilities that graduated across both upstream releases. (cilium/cilium#45251, @youngnick; cilium/cilium#46827, cilium/cilium#47274, @arybolovlev)
  • 👥 Delegate Gateway Listeners: ListenerSets let application teams attach and manage their own listeners while the platform team retains ownership of the shared Gateway. (cilium/cilium#46303, cilium/cilium#46785, @asauber)
  • 🔏 Encrypt Traffic to Backends: Gateway API BackendTLSPolicy support lets operators configure TLS and backend certificate validation for traffic between the gateway and application services. (cilium/cilium#43045, @youngnick)
  • 🔀 TCPRoute and UDPRoute: Databases, DNS servers, game servers and other non-HTTP services can now be managed through the same Gateway API model as HTTP and gRPC traffic. (cilium/cilium#46184, cilium/cilium#46970, @eminaktas; cilium/cilium#4
Original release notes ↗

Publicly indicated next

Prereleases and milestones indicate public plans; they are not delivery commitments.

Observation trail

  1. changedupdatedAt
  2. changedupdatedAt
  3. changedupdatedAt
  4. changedupdatedAt, metrics
  5. changedmetrics
  6. changedupdatedAt
  7. changedupdatedAt, metrics
  8. changedupdatedAt
  9. changedupdatedAt, metrics
  10. changedupdatedAt, metrics
  11. changedupdatedAt
  12. changedtext, updatedAt
  13. changedupdatedAt, metrics, labels
  14. changedupdatedAt, labels
  15. changedupdatedAt
  16. changedupdatedAt
  17. changedupdatedAt
  18. discoveredinitial snapshot
  19. discoveredinitial snapshot
  20. changedupdatedAt
  21. changedupdatedAt, labels, state
  22. changedupdatedAt, metrics, labels, state
  23. changedupdatedAt, state
  24. changedupdatedAt, labels
  25. discoveredinitial snapshot
  26. changedtext, updatedAt
  27. discoveredinitial snapshot
  28. changedupdatedAt, metrics
  29. discoveredinitial snapshot
  30. changedupdatedAt, labels, state
16 shown
pull request

bpf: nodeport: remove Ingress HostFW Policy between RevSNAT and RevDNAT

``` This HostFW hook lives in bpf_host's `from-netdev` program. It operates on packets that have been successfully RevSNATed (otherwise we would have bailed out earlier). And ipv*_host_policy_ingress() only takes action for packets where the RevSNATed destination IP is mapped as HOST_ID - otherwise it returns immediately. The next step in the program chain i

importance 2@julianwiedmannopenarea/datapathstalerelease-note/miscarea/host-firewallarea/loadbalancingOriginal evidence ↗
pull request

bpf: pass LWT encap back to kernel

For "various reasons", I am running a custom LWT based Geneve overlay that needs to intersect with our Cilium deployment. I noticed that traffic was not routing into the overlay, and through the pure magic that is `cilium monitor --type drop -v` I was able to get this message: ``` xx drop (FIB lookup failed, 6) flow 0x0 to endpoint 0, ifindex 1344, file bpf_

importance 2@alxnopenstaledont-merge/needs-release-note-labelOriginal evidence ↗
pull request

gateway-api: report all route validation errors in status

`ValidateHeaderModifier` write an `Accepted=False` condition. But `ValidateMatchRegexps` writes the same condition type, and `helpers.MergeConditions` matches by type and replaces in place. In `setHTTPRouteStatuses` in gateway_reconcile.go both run in one loop, so the regex message overwrites the header modifier message. `setGRPCRouteStatuses` has the same l

importance 2@weizhoubluecloseddont-merge/needs-release-note-labelkind/community-contributionfeature/k8s-gateway-apiOriginal evidence ↗
pull request

health/client: replace deprecated http.Transport.Dial with DialContext

`http.Transport.Dial` has been deprecated since Go 1.7 (`SA1019`) in favor of `DialContext`, which allows the transport to cancel dials as soon as they are no longer needed. Per the Go docs, if both fields are set `DialContext` takes priority — so the current code is effectively opting out of context-aware dialing on every request the Cilium health checker's

importance 2@uuditmisraopenrelease-note/misckind/community-contributionOriginal evidence ↗
pull request

chore(deps): update docker.io/library/golang:1.25.12 docker digest to 2c7ebca (v1.18)

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [docker.io/library/golang](https://hub.docker.com/_/golang) ([source](https://redirect.github.com/docker-library/golang)) | stage | digest | `9006890` → `2c7ebca` | | [docker.io/library/golang](https://hub.docker.com/_/golang) ([source](https://redirect.github.co

importance 2@cilium-renovate[bot]closedkind/enhancementready-to-mergekind/backportsrelease-note/misckind/community-contributionOriginal evidence ↗
pull request

fix: stale CEC owner UID lets GC delete the in-use Envoy config

The name of a CiliumEnvoyConfig is derived from the Gateway name ·cilium-gateway-<name>·, so a recreated Gateway with the same name necessarily maps to the same CiliumEnvoyConfig object. Since Gateway has no finalizer, deleting a Gateway relies entirely on Kubernetes garbage collection for cleanup, which is asynchronous and may take seconds or longer. When a

importance 2@weizhoubluecloseddont-merge/needs-release-note-labelkind/community-contributionfeature/k8s-gateway-apiOriginal evidence ↗
pull request

pkg/idpool: lazy allocate idCache maps

When `NewIDPool` creates an ID pool, it used to fill a map with every single ID right away. For a pool of 1,000,000 IDs, this took ~37.8 MB of memory and ~141 ms of setup time upfront before any IDs were even used. This change switches to allocating IDs on demand using a `nextID` counter. It only adds IDs to maps when they are released or inserted, saving me

importance 2@DARSHANR007opendont-merge/needs-release-note-labelkind/community-contributionOriginal evidence ↗
pull request

fix(gateway): fail closed on invalid ExternalAuth

## Description of change Make HTTPRoute ExternalAuth fail closed when the backend reference is invalid or cannot be resolved. Previously, an invalid ExternalAuth backend reference could cause the filter to be omitted while the route remained active, effectively allowing requests to bypass external authentication. This change: - Fails closed with HTTP 500 whe

importance 2@shreyasrajiv327openkind/bugrelease-note/bugarea/servicemeshkind/community-contributionfeature/k8s-gateway-apiOriginal evidence ↗
pull request

gateway-api: compare static Gateway addresses as parsed IPs

`setStaticAddressStatus` compared addresses from `Gateway.spec.addresses` with the generated Service status as strings. Equivalent IPv6 addresses can use different textual representations, causing an allocated and working static address to be reported as unusable. Parse both sides with `netip.ParseAddr` and compare the resulting addresses. Hostname-only Serv

importance 2@taaahaaaopendont-merge/needs-release-note-labelkind/community-contributionfeature/k8s-gateway-apiOriginal evidence ↗
pull request

hubble: add optional protocol and port labels to policy metrics

Add opt-in protocol and destination port labels to hubble_policy_verdicts_total. Both labels are disabled by default to preserve the existing metric label set. The destination port label may increase metric cardinality depending on the traffic pattern. Please ensure your pull request adheres to the following guidelines: - [x] For first time contributors, rea

importance 2@stiasopendont-merge/needs-release-note-labelkind/community-contributionOriginal evidence ↗
pull request

install: detect containerd from GKE kubelet config

Newer GKE node images configure `containerRuntimeEndpoint` in `/home/kubernetes/kubelet-config.yaml` instead of `/etc/default/kubelet`. This causes the existing GKE containerd detection in node-init to miss the GKE-specific path and fall through to the generic kubelet handling. This change: * preserves the existing legacy GKE/containerd detection; * recogniz

importance 2@dlanovopendont-merge/needs-release-note-labelkind/community-contributionOriginal evidence ↗
pull request

bandwidth: support DSCP marking for Pod egress traffic

This PR adds support for setting DSCP marks on Pod egress traffic through the Bandwidth Manager. Pods can configure the DSCP value with the `bandwidth.cilium.io/egress-dscp` annotation. The annotation accepts values in the `0-63` range. The BPF datapath preserves the existing ECN bits while rewriting the IPv4 TOS or IPv6 Traffic Class field. The feature is h

importance 1@jronakopenstaledont-merge/needs-release-note-labelkind/community-contributionOriginal evidence ↗
pull request

.github: Support other versions in bug report template

Sometimes users report issues against the latest pre-release. Sometimes they are also reporting a bug on a different version but the template is too restrictive so they file the bug with the wrong version then add the version later on in the bug report. We already make it clear to the reporter that they should upgrade if the version is not listed, but I woul

importance 1@joestringeropenstalerelease-note/miscOriginal evidence ↗
pull request

v1.18 Backports 2026-08-10

* [x] #47780 (@giorio94) :warning: resolved conflicts * [ ] #47208 (@iwanhae) :warning: resolved conflicts * [x] #47801 (@aanm) :warning: resolved conflicts Once this PR is merged, a GitHub action will update the labels of these PRs: ```upstream-prs 47780 47208 47801 ```

importance 1@pippolo84closedkind/backportsbackport/1.18Original evidence ↗