v1.8.2
Updated Envoy Gateway to v1.8.2.
Breaking Changes
- The
XRateLimitHeadersOptionDisabledconstant inBackendTrafficPolicynow uses"Off"instead of"Disabled"to match the CRD enum. Because"Disabled"was never a valid CRD value (it would have been rejected by the API server), no existing manifests are affected. SecurityPolicyvalidation forspec.apiKeyAuth.extractFromis now stricter, requiring non-empty lists with unambiguous source specifications. Policies with empty or ambiguous configurations will now be rejected and must be corrected before upgrading.
New Features
- The default data-plane Envoy image now bundles the WAF dynamic module, so the Web Application Firewall (configured via
ExtendedSecurityPolicy) works out of the box — you no longer need to override the Envoy proxy image in your Helm values to enable WAF. This default image is published to the publicdocker.io/tetrate/teg-envoyrepository and can be pulled without registry credentials. FIPS deployments must still override the Envoy proxy image with the FIPS variant (published to a credentialed Tetrate registry), which likewise bundles the FIPS-compliant WAF module. Because the dynamic module is now baked in, the Envoy images are slightly larger and are tagged with the TEG release version (e.g.distroless-v1.8.2) rather than the upstream Envoy version. - Added the ability to disable the
crdsdependency on thegateway-helmchart via thecrds.enabledconfiguration variable.
Security Updates
- Bumped Envoy Proxy to v1.38.3 to address multiple CVEs. See the Envoy Proxy v1.38.3 release notes.
- Bumped Envoy Gateway to v1.8.2 for security and bug fixes.
Bug Fixes
- Fixed API key auth credential ordering to avoid unnecessary xDS updates.
- Fixed the
EnvoyProxyresource not allowing IPv6 ranges inloadBalancerSourceRangeswhen configuring the Envoy service. - Fixed HTTPRoute, GRPCRoute, TLSRoute, TCPRoute, and UDPRoute
Acceptedconditions being set toFalsewhen an attached listener is not programmed due to a missing TLS certificate ref; listener programmed state is now correctly separated from route acceptance. - Fixed Backend TLS
alpnProtocols: []to disable upstream ALPN instead of inheritingEnvoyProxyBackendTLS defaults. - Fixed
BackendTrafficPolicyrate limit validation failing on Kubernetes 1.36 by validating the affected field as int64. - Fixed the generated
install.yamlcreating a duplicateValidatingAdmissionPolicyand its binding, which causedkustomize buildto fail with a duplicate resource error. - Fixed an ExternalName Service referenced as a route backend producing an invalid xDS cluster that stalled config delivery for the whole snapshot. ExternalName Services are now explicitly rejected as backends with a
ResolvedRefs: Falseroute condition; use aBackendresource with an FQDN endpoint instead. - Fixed ListenerSet hostname conflict resolution to apply listener precedence: Gateway-owned listeners win over ListenerSet listeners, and conflicted ListenerSet listeners now correctly report
Accepted: Falsewith the conflict reason. - Fixed Gateway status reporting
Programmed: Falsewhen the Envoy LoadBalancer Service has no load balancer ingress (e.g. on bare-metal clusters without a load balancer controller) but has addresses configured inspec.externalIPs; the external IPs are now used as a fallback for the Gateway status addresses. - Fixed
EnvoyGatewayconfig hot-reload to apply defaults before validation on both the startup and reload paths. - Fixed HTTPRoute per-retry timeout not being applied when no retry backoff was configured.
- Fixed shared global rate limit rules with a
costfield not working as expected. - Prevented a panic when the
EnvoyGatewayKubernetes provider sets adeployblock without specifying atype.
Other Changes
- Bumped the BOE composer dynamic module to v0.9.0.
- Bumped the ratelimit service to aba2384d.