v1.4.0
Breaking changes
- Use a dedicated listener port(19003) for envoy proxy readiness
- Uses the envoy JSON formatter for the default access log instead of text formatter.
- Envoy Gateway will skip xDS snapshot updates in case of errors during xDS translation.
- When Extension Manager is configured to Fail Open, translation errors are logged and suppressed.
- When Extension Manager is configured to not Fail Open, Envoy Gateway will no longer replace affected resources. Instead, xDS snapshot update would be skipped.
New Features
- Added support for the extension server in standalone mode.
- Added support for the
DynamicResolver
backend type, which can route traffic to any backend service based on the request’s hostname. - Added support for installing CRDs through the
gateway-crds-helm
chart. - Added support for the offline Kubernetes controller and enabled its use with the file provider.
- Added support for configuring
maxUnavailable
in KubernetesPodDisruptionBudgetSpec
. - Added support for percentage-based request mirroring.
- Allowed
matchExpressions
in TargetSelector
. - Added a defaulter for Gateway API resources loaded from file to set default values.
- Added support for defining Lua
EnvoyExtensionPolicies
. - Added
RequestID
field in ClientTrafficPolicy.HeaderSettings
to configure Envoy X-Request-ID
behavior. - Added support for
HorizontalPodAutoscaler
for Envoy Gateway in the Helm chart. - Added support for distinct header and distinct source CIDR-based local rate limiting.
- Added support for forwarding the authenticated username to the backend via a configurable header in
BasicAuth
. - Added support for HTTP method and header-based authorization in
SecurityPolicy
. - Added support for Zone Aware Routing.
- Added support for
BackendTLSPolicy
targeting ServiceImport
. - Added support for the
kubernetes.io/h2c
application protocol in ServiceImport
. - Added support for per-host circuit breaker thresholds.
- Added support for injecting a credential from a Kubernetes
Secret
into a request header using the HTTPRouteFilter
filter. - Added support for
egctl
WebSocket in addition to SPDY. - Added a configuration option in the Helm chart to set the
TrafficDistribution
field in the Envoy Gateway
Service. - Added support for setting the log level to
trace
for the Envoy proxy. - Added support for global
imageRegistry
and imagePullSecrets
in the Helm chart. - Added support for using a local JWKS in an inline string or in a
ConfigMap
to validate JWT tokens in SecurityPolicy
. - Added support for logging the status of resources in standalone mode.
- Added support for per-route tracing in
BackendTrafficPolicy
. - Added support for configuring retry settings for Extension Service hooks in the Envoy Gateway config.
- Added support for request buffering using the Envoy Buffer filter.
- Added support for merge type in
BackendTrafficPolicy
. - Added support for the
OverlappingTLSConfig
condition in Gateway status. This condition is set if there are overlapping hostnames or certificates between listeners. The ALPN protocol is set to HTTP/1.1 for overlapping listeners to avoid HTTP/2 connection coalescing. - Added support for running Envoy infrastructure proxies in the Gateway namespace. Please note that this is currently an experimental feature and not recommended for production use.
- Added support for Shared Global RateLimiting buckets.
- Added support for fuzz testing the codebase.
- Added Backend API Support for Telemetry backends in Envoy Proxy
- Added support for FullDuplexedStreamed mode in Ext Proc
Bug Fixes
- Fixed traffic splitting when filters are attached to the
backendRef
. - Added support for
Secret
and ConfigMap
parsing in standalone mode. - Bypassed overload manager for stats and ready listeners.
- Fixed translation of
backendSettings
for external authorization. - Fixed an issue where the stats compressor was not working.
- Added support for
BackendTLSPolicy
and EnvoyExtensionPolicy
parsing in standalone mode. - Re-triggered reconciliation when a
backendRef
of type ServiceImport
is updated or when EndpointSlice
resources for a ServiceImport
are updated. - Fixed missing error logs and returns in the Kubernetes Reconcile method when a
GatewayClass
is not accepted. - Allowed empty text field for OpenTelemetry sink when using JSON format.
- Fixed the
SamplingFraction
implementation within the Tracing API. - Fixed Kubernetes resources not being deleted when a custom name was used.
- Prevented essential resources like
Namespace
from being treated as missing when loading from file. - Avoided setting retriable status codes to 503 when
RetryOn
is configured in BackendTrafficPolicy
. - Fixed reconciliation logic to continue processing all
GatewayClasses
even after an error with one. - Fixed an issue where a
ReferenceGrant
from a SecurityPolicy
to a referenced remoteJWKS
backend was not respected. - Added additional newline validation for header values.
- Added validation to prevent duplicated API keys in API Key Auth.
- Fixed
HTTPRoute
precedence by correctly considering header and query match types. - Ensured the TLS inspector filter is only added to TCP listeners (not UDP/QUIC) when HTTP/3 is enabled via
ClientTrafficPolicy
. - Fix reconciling mirror backendRef endpoints once they’ve changed.
- Added a cache for the Wasm OCI image permission checks and check the pullSecrets against the OCI image registry in
a background goroutine.
Deprecations
- Deprecated the
PreserveXRequestID
field in ClientTrafficPolicy.Spec.Headers
. Use RequestID
instead.
Other Changes
- Updated gateway-api to v1.3.0.