Product1 publisher3 min readPublished
Cilium 1.20 asks Ingress NGINX users to hand north-south traffic to the CNI they already run
The release jumps two Gateway API minor versions to v1.6 and adds ExternalAuth, CORS filters, ListenerSets and non-HTTP route types. What is left of the case for a separate ingress tier is the annotations you cannot port.
The Product Desk · Product desk

What happened
- Cilium 1.20 has shipped as the project's second major open source release of 2026, following 1.19 earlier in the year.
- Gateway API support moves from v1.4 to v1.6 and gains ExternalAuth, CORS filters, ListenerSets, and TCPRoute and UDPRoute for non-HTTP traffic.
- ENI IPAM mode on AWS can hand out IPv6 as a beta feature, with the operator attaching an IPv6 /80 prefix to each node's ENI through Prefix Delegation so EKS pods boot dual-stack.
- A new bpf.datapathMode=auto setting lets each node select its datapath mode instead of leaving operators to configure netkit fleet by fleet.
- Datapath plugins contributed by Google let cloud providers add their own eBPF programs to a stable Cilium core without waiting for a Cilium release.
Compiled by The Product DeskSomething wrong?How this is made
Why it matters
- decision Teams running Cilium as the CNI and Ingress NGINX as a separate tier now have a consolidation call in front of them, and the price is whatever ingress config has no Gateway API equivalent.
- exposure Putting authorization in the gateway makes the platform team the on-call owner of the auth path for every service behind it, including the ones it did not write.
- capability A team that kept a second exposure path for TCP and UDP services can retire it, at the cost of moving that traffic under the same control plane as its HTTP routes.
- constraint Because the AWS IPv6 work is beta, EKS teams short of VPC IPv4 space get something to test this quarter and not something to put under production node groups.
The release post says plainly what it wants. "If you are still running Ingress NGINX, now is the time to let the CNI you already run take on that traffic management too," the post says [5]. The project is talking to its own installed base, and the feature list under the line is narrower than the pitch.
Two minor versions of Gateway API absorbed in one Cilium release is a real jump [15]. The addition that changes an operator's week is ExternalAuth, which the post describes as handling authentication and authorization before a request reaches the application [4]. For a team whose auth hop today is an ingress annotation pointing at an internal service, that is the same call from a different process, owned by a different rota.
The work in leaving an ingress controller is in the annotations, not the route objects. Take every Ingress object you actually serve traffic with and sort its annotations into three piles: ones that map to a first-class Gateway API v1.6 object or filter, ones you would have to rebuild as an ExternalAuth or CORS config, and ones nobody remembers switching on. The second pile is the migration estimate. The release post does not publish that mapping [18].
TCPRoute and UDPRoute are the parts I would move first. Non-HTTP traffic is traffic an HTTP ingress controller never carried, so nothing is taken away from a system that currently works.
Version 1.20 also supports the stable MCS API and Kubernetes ClusterNetworkPolicy next to Cilium's own CRDs [7]. A platform team can write portable manifests where portability matters and keep CiliumNetworkPolicy for everything else.
The AWS half of the release is aimed at a different reader: the one who has run out of VPC IPv4 space. Datadog built the ENI IPv6 support, four years after the feature request was first raised [10]. That dates the original ask to roughly 2022 [16]. It ships as beta, so most teams get a test-cluster answer this quarter.
On the datapath side, netkit needed kernel 6.8 or newer, so a fleet with mixed kernels either skipped it or split nodes into pools by kernel version and configured each pool separately [13]. netkit replaces the veth pair and its overhead to bring pod networking to host-level throughput [11]. Meta has rolled it out across millions of containers, and ByteDance reports a 10% performance improvement in its own tests [12].
Consolidating makes sense when Cilium is already the CNI and the rebuild pile fits inside one sprint. When it does not fit, moving the TCP and UDP routes first gets part of the benefit without putting a login path behind a new authorization filter in the same change window. ExternalAuth is the part with a bill attached: every route behind the gateway then depends on a config the platform team owns [4].
What to watch
- Whether ENI IPAM IPv6 graduates from beta in the next Cilium release, and whether EKS teams put it on production node groups.
- Whether anyone publishes an annotation-level mapping from Ingress NGINX config to Gateway API v1.6 objects and filters.
- Which cloud provider ships the first datapath plugin, and who answers the support ticket when it breaks.