You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #13671 highlighted that kgateway does not currently have a clearly defined, easy-to-find support policy for Gateway API and other major upstream dependencies.
Today, users can infer different things from different places:
the version support page documents one Gateway API line per kgateway release line
the nightly workflow tests multiple Gateway API releases and channels
individual PRs end up making policy decisions ad hoc (for example, whether to keep compatibility shims for promoted resources such as XListenerSet -> ListenerSet)
We should define and document what kgateway actually guarantees so users and maintainers can answer questions like:
Which Gateway API versions are supported vs only tested?
Do we support N, N-1, or N-2 for Gateway API?
Does that differ for standard vs experimental Gateway API channels?
When an experimental API graduates, how long do we keep compatibility with the pre-promotion form?
What is the difference between a compatibility target, a CI-tested target, and a release-blocking support guarantee?
What guarantees do we provide for other major dependencies such as Kubernetes, Istio, Envoy, and the Gateway API Inference Extension?
This issue is about defining the policy and publishing it clearly. Follow-up implementation issues can refine CI, docs, and compatibility behavior once the policy is agreed.
Guidance
Istio is a useful model here because it documents:
release support windows and maintenance expectations
The policy should explicitly address scenarios like these:
Gateway API resource promotion, such as XListenerSet graduating to ListenerSet
Gateway API fields moving from experimental to standard
Gateway API features being present only behind kgateway feature gates
Old experimental Gateway API resources no longer existing in current Go dependencies, while users may still run older CRDs
Schema tightening between Gateway API releases that makes previously accepted manifests invalid
Conformance tests added in a newer upstream Gateway API release when kgateway only partially supports the promoted API surface
Whether CI testing multiple versions implies official support, best-effort compatibility, or only regression detection
Whether standard and experimental Gateway API channels should have different support windows
How long compatibility shims should remain after upstream promotions or removals
How support guarantees should differ across Kubernetes, Istio, Envoy, Gateway API, and the Gateway API Inference Extension
Checklist
Define the difference between supported, tested in CI, best effort, and not supported for upstream dependencies.
Define the Gateway API support policy by channel: standard and experimental.
Decide whether Gateway API support should be N, N-1, N-2, or something else, and whether that policy differs by channel.
Decide what happens when an experimental Gateway API resource or field graduates, such as XListenerSet -> ListenerSet.
Decide how long compatibility shims for promoted or removed Gateway API APIs should remain in kgateway.
Decide whether conformance coverage is required for every supported Gateway API version/channel combination, or only for a primary target.
Define the policy for Gateway API feature gates and how gated features affect what we advertise in GatewayClass.status.supportedFeatures.
Define what support guarantee kgateway provides for Kubernetes versions, and how that differs from nightly min/max CI coverage.
Define what support guarantee kgateway provides for Istio versions, including whether we want a compatibility matrix similar to Istio's published docs.
Define what support guarantee kgateway provides for Envoy / xDS / protobuf dependency sets, especially when transitive updates can affect validation behavior.
Define what support guarantee kgateway provides for the Gateway API Inference Extension, if any, and how its versioning should be communicated.
Decide where the canonical dependency support policy should live in docs and how release notes should call out changes to that policy.
Update repo automation and CI so the documented policy and the nightly/test matrix do not drift apart.
Add follow-up issues as needed for any changes in CI, docs, conformance lanes, or compatibility shims once the policy is agreed.
Desired Outcome
A user should be able to answer, from one clear page and a small number of linked references:
what kgateway officially supports today
what is only tested as a compatibility signal
what upgrade path the project expects for each major dependency
what temporary compatibility behavior exists during upstream transitions
Summary
PR #13671 highlighted that kgateway does not currently have a clearly defined, easy-to-find support policy for Gateway API and other major upstream dependencies.
Today, users can infer different things from different places:
XListenerSet->ListenerSet)We should define and document what kgateway actually guarantees so users and maintainers can answer questions like:
N,N-1, orN-2for Gateway API?standardvsexperimentalGateway API channels?This issue is about defining the policy and publishing it clearly. Follow-up implementation issues can refine CI, docs, and compatibility behavior once the policy is agreed.
Guidance
Istio is a useful model here because it documents:
References:
Related
Scenarios To Cover
The policy should explicitly address scenarios like these:
XListenerSetgraduating toListenerSetexperimentaltostandardstandardandexperimentalGateway API channels should have different support windowsChecklist
supported,tested in CI,best effort, andnot supportedfor upstream dependencies.standardandexperimental.N,N-1,N-2, or something else, and whether that policy differs by channel.XListenerSet->ListenerSet.GatewayClass.status.supportedFeatures.Desired Outcome
A user should be able to answer, from one clear page and a small number of linked references: