🎉 Welcome to the v2.5.0-beta.5 release of the kgateway project!
Release Notes
Changes since v2.5.0-beta.4
Breaking Changes
-
Removed the deprecated support for running kgateway as an Istio ambient waypoint:
- the
kgateway-waypointGatewayClass - Istio AuthorizationPolicy translation
- the
KGW_WAYPOINT_LOCAL_BINDINGsetting
To move existing kgateway waypoints to Istio waypoints, see the migration guide.
Sending ingress traffic through an Istio waypoint with the
istio.io/ingress-use-waypointlabel is still supported:- With Helm, it is still enabled by the value
waypoint.enabled. - Without Helm, set
KGW_INGRESS_USE_WAYPOINTS=true. Its default changed fromtruetofalse. KGW_ENABLE_WAYPOINTis deprecated. It still enables this feature whenKGW_INGRESS_USE_WAYPOINTSis unset, and will be removed in a future release.
RBAC: the controller ClusterRole still grants get/list/watch on
authorizationpolicies.security.istio.ioin this release so that upgrades are safe, but kgateway no longer uses it. It will be removed in the next minor release. If you maintain a custom ClusterRole, or rely on this rule for anything else, plan for its removal.
(#14831) - the
-
Bump Gateway API to v1.7.0-rc.3.
- Route
sessionPersistencenow usescookie.name,cookieandheader.name;sessionNameandcookieConfigare removed. Migrate them before upgrading the CRDs. - With
cookie.lifetimeTypeunset, the cookie is now a Session cookie andabsoluteTimeouthas no effect. SetlifetimeType: Permanentto keep the Max-Age. - HTTPRoute
retryapplies even with experimental Gateway API features disabled. - Backends with a BackendTLSPolicy and no appProtocol now negotiate HTTP/2 or HTTP/1.1 via ALPN. Set
appProtocol: httpto keep HTTP/1.1. - Terminate and Passthrough TLS listeners can share a port with experimental Gateway API features disabled.
- Waypoint AuthorizationPolicy HTTP method matches are now case-insensitive.
- The minimum supported Kubernetes version is now 1.33.
(#14882)
- Route
New Features
-
Add experimental IPv6 and dual-stack support.
GatewayParameters.spec.kube.serviceacceptsipFamiliesandipFamilyPolicy, andBackendConfigPolicy.spec.dns.lookupFamilyoverrides the cluster-wide DNS lookup family for a single backend. These fields are experimental and may change in future releases. The proxy's readiness and stats listeners now follow the configured bind family rather than being pinned to IPv4.This listener change is not experimental and applies to every install: because KGW_LISTENER_BIND_IPV6 defaults to true, the readiness and stats listeners now bind [::] with IPv4 compatibility, so IPv4 clients are unaffected. On a node whose kernel has IPv6 disabled entirely (ipv6.disable=1), the proxy now fails to start instead of reporting Ready with no working listeners; set KGW_LISTENER_BIND_IPV6=false to keep an IPv4-only bootstrap, which the data-plane listeners already required on such nodes.
(#14651) -
Add
pathWithEscapedSlashesActionto ListenerPolicyhttpSettingsto configure how Envoy handles escaped slashes in request paths (KeepUnchanged,RejectRequest,UnescapeAndRedirect,UnescapeAndForward). (#14803) -
Add
KGW_LEADER_ELECTION_LEASE_DURATION,KGW_LEADER_ELECTION_RENEW_DEADLINE, andKGW_LEADER_ELECTION_RETRY_PERIODsettings andcontroller.leaderElection.*Helm values to configure the controller leader election timings. (#14828) -
ListenerPolicy now supports
tcpSettings.accessLogfor per-connection access logging on TCP and TLS (Terminate and Passthrough) listeners. gRPC sinks use Envoy's TCP gRPC access logger. (#14859) -
Support the Gateway API GatewayRouteHostnameIntersectionPrecedence feature: routes whose hostnames intersect with a listener hostname to the same hostname are ordered by the specificity of their own hostnames. (#14887)
Bug Fixes
- OIDC provider configuration discovery now validates the issuer using the CA certificates of the BackendTLSPolicy attached to the OAuth2 backendRef, so an issuer served under a private or self-signed CA no longer fails discovery and no longer causes the referencing TrafficPolicy and HTTPRoute to be rejected. (#14650)
- Fixed BackendConfigPolicy
tls.filesclient certificates, which were always rejected, and strict validation rejecting TLS files that exist only on the proxy. (#14905)
Contributors
Thanks to all the contributors who made this release possible:
Installation
The kgateway project is available as a Helm chart and docker images.
Helm Charts
The Helm charts are available at:
- oci://cr.kgateway.dev/kgateway-dev/charts/kgateway
- oci://cr.kgateway.dev/kgateway-dev/charts/kgateway-crds
Docker Images
The docker images are available at:
- cr.kgateway.dev/kgateway-dev/kgateway:v2.5.0-beta.5
- cr.kgateway.dev/kgateway-dev/sds:v2.5.0-beta.5
- cr.kgateway.dev/kgateway-dev/envoy-wrapper:v2.5.0-beta.5
Quickstart
Try installing this release:
helm install kgateway-crds oci://cr.kgateway.dev/kgateway-dev/charts/kgateway-crds --version v2.5.0-beta.5 --namespace kgateway-system --create-namespace
helm install kgateway oci://cr.kgateway.dev/kgateway-dev/charts/kgateway --version v2.5.0-beta.5 --namespace kgateway-system --create-namespace
For detailed installation instructions and next steps, please visit our quickstart guide.




