What's New in Gateway API v1.7.0: HTTPRoute Retries Go Stable
Gateway API v1.7.0 promotes HTTPRoute retries to Standard, adds 5 experimental GEPs, and ships breaking changes to SessionPersistence and XBackend CRDs.
💡 Quick Answer: Gateway API v1.7.0 graduates HTTPRoute retries (
codes,attempts,backoff) to the Standard channel and adds six new Experimental GEPs (Gateway Address Routability, Attribute Dictionary, Backend Session Persistence, Pre-routing Filters, ClusterTrustBundle refs, TelemetryPolicy). It also ships breaking changes to the Experimental SessionPersistence andXBackendCRDs that require a manifest review before upgrading.
The Problem
Operators running the Experimental channel of Gateway API need to know which CRD fields moved or were removed before applying v1.7.0, and which previously-experimental features (like HTTPRoute retries) are now safe to depend on in the Standard channel.
The Solution
Upgrade the CRDs for the channel(s) in use, migrate any manifests touching SessionPersistence or XBackend, and re-run conformance tests against the controller implementation before rolling to production.
What’s New
Graduated to Standard
- HTTPRoute Retries (GEP-1731):
retry.codes,retry.attempts,retry.backoffare now Standard-channel fields.backoffremains implementation-specific (jitter varies by implementation). Conformance featuresHTTPRouteRetryCodesandHTTPRouteRetryConnectionErrorare now part of Standard conformance. (#5357, #5359)
New in Experimental
- Gateway Address Routability (GEP-5093): per-address routability scope on Gateway (
Cluster, empty, or a domain-prefixed value). (#5304) - Standardized Attribute Dictionary (GEP-5253): OTel-based shared traffic attributes for use by
XTelemetryPolicyand similar features. (#5256) - Session Persistence on Backend (GEP-1619 / GEP-4894): session persistence now configured on
XBackend; route-inline andBackendTrafficPolicyattachment points are deprecated. (#4876, #5298) - Pre-routing Filters (GEP-5224): new
GatewayListenerFiltersfeature — listener filters that run before routing, for external auth / payload processing on Gateway andListenerSetlisteners. (#5315, #5370) - ClusterTrustBundle in
caCertificateRefs(GEP-5075):BackendTLSPolicyand Gateway frontend TLS can reference aClusterTrustBundleinstead of per-namespace CA ConfigMaps/Secrets. (#5272, #5356) - TelemetryPolicy for Distributed Tracing (GEP-4768): new
XTelemetryPolicyAPI for vendor-neutral tracing config on Gateways (metrics/access logs not yet covered). (#5323)
Breaking Changes (Experimental channel only — no impact on Standard)
SessionPersistence:sessionName→cookie.name(Extended, optional) andheader.name(Core, required);cookieConfigrenamed tocookie; newHeaderConfigtype. (#4873)SessionPersistence: cookiePathnow defaults to/instead of being derived from route matches; newcookie.path(Extended) for explicit control. (#5046)- Route-inline and
BackendTrafficPolicysession persistence are deprecated in favor of theXBackendresource. (#4876) XBackend:spec.port.portrenamed tospec.port.number;spec.port.nameremoved;backendRef.portis now prohibited when the backendRef targets anXBackend. (#5287)- Conformance:
HTTPRouteRetryandHTTPRouteRetryBackendTimeoutfeatures removed;HTTPRouteRetryCodesadded,HTTPRouteRetryConnectionErrorretained. (#5167) - Conformance:
HTTPRouteBackendRequestRedirectfeature and its test removed. (#5279)
Go / Build
BackendAncestorStatus.AncestorRefrenamed in generated Go types to match docs/JSON serialization. (#5187)ForwardBodyConfig.MaxSizetype changed fromuint16toint32. (#5099)- Go toolchain bumped to 1.27 and Kubernetes dependencies to v0.37. (#5297, #5232, #5388)
Upgrade Steps
- Check which SessionPersistence and
XBackendfields are currently in use, if on the Experimental channel:
kubectl get backendtrafficpolicy,xbackend -A -o yaml | grep -E 'sessionName|cookieConfig|port:\s|name:\s' - Apply the Standard channel CRDs:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.7.0/standard-install.yaml- If you run the Experimental channel, apply those CRDs instead (superset of Standard):
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.7.0/experimental-install.yaml- Migrate any manifests using the old SessionPersistence/XBackend fields:
# before
sessionPersistence:
sessionName: my-session
cookieConfig:
lifetimeType: Permanent
# after
sessionPersistence:
cookie:
name: my-session
lifetimeType: Permanent# XBackend before
spec:
port:
port: 8080
name: http
# XBackend after
spec:
port:
number: 8080Upgrade the controller implementation (e.g. Envoy Gateway, Istio, NGINX Gateway Fabric, Cilium) to a version that declares v1.7.0 conformance support — check that implementation’s own release notes before proceeding.
Re-apply HTTPRoute manifests that use retries if they were previously gated behind an experimental flag in your implementation; the field is now Standard and should work without extra annotations once the controller supports it.
Verify
# Confirm CRD versions
kubectl get crd gatewayclasses.gateway.networking.k8s.io -o jsonpath='{.spec.versions[*].name}'
# Confirm retry field is recognized as Standard
kubectl explain httproute.spec.rules.retry
# List installed Gateway API CRDs
kubectl get crd | grep gateway.networking.k8s.io
# Sanity-check an HTTPRoute with retries
kubectl apply -f - <<'EOF'
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: retry-demo
spec:
parentRefs:
- name: my-gateway
rules:
- backendRefs:
- name: my-service
port: 80
retry:
codes: [502, 503]
attempts: 3
EOF
kubectl get httproute retry-demo -o yamlCommon Issues
- CRD apply fails with field validation errors on
XBackend: you’re still usingspec.port.portorspec.port.name; switch tospec.port.number(#5287). cookieConfignot recognized after upgrade: the field was renamed tocookie; update manifests per the migration example above (#4873).- Conformance suite reports missing
HTTPRouteRetryBackendTimeout: that feature was removed in v1.7.0; drop it from your implementation’s conformance profile and rely onHTTPRouteRetryCodes/HTTPRouteRetryConnectionError(#5167). - Controller doesn’t honor Standard
retryfield yet: confirm your Gateway implementation has published v1.7.0 conformance support — the API change alone doesn’t add controller behavior.
Best Practices
- Pin the Gateway API CRD version alongside your controller implementation’s documented compatibility matrix; don’t upgrade CRDs ahead of controller support.
- Treat all Experimental-channel fields as subject to breaking change between minor releases, as this release demonstrates.
- Run
gateway-apiconformance tests against staging after any CRD bump, especially after retry/session-persistence changes. - Track GEPs (1731, 5093, 5253, 1619/4894, 5224, 5075, 4768) linked in the release notes before adopting new Experimental features in production.

Recommended
Kubernetes Recipes — The Complete Book100+ production-ready patterns with detailed explanations, best practices, and copy-paste YAML. Everything in one place.
Get the Book →Learn by Doing
CopyPasteLearn — Hands-on Cloud & DevOps CoursesMaster Kubernetes, Ansible, Terraform, and MLOps with interactive, copy-paste-run lessons. Start free.
Browse Courses →🎓 Deepen Your Skills — Hands-on Courses
Courses by CopyPasteLearn.com — Learn IT by Doing
