chore: Bump gateway api to 1.6#14245
Conversation
Signed-off-by: David Jumani <[email protected]>
There was a problem hiding this comment.
Pull request overview
Updates this repository to target Gateway API 1.6 (currently using v1.6.0-rc.1) and refreshes the corresponding Kubernetes / Istio / tooling dependencies, CRD schemas, and CI lanes to exercise the newer API versions.
Changes:
- Bump Gateway API + conformance versions to
v1.6.0-rc.1and update related dependency versions (k8s.io/*,controller-runtime,istio.io/*, etc.). - Refresh Helm CRD templates to match updated upstream schema/documentation text for Gateway API resources.
- Extend nightly CI matrices to include Gateway API
v1.6.0-rc.1(standard + experimental) with guard logic forv2.2.x.
Reviewed changes
Copilot reviewed 8 out of 9 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| pkg/utils/filter_types/filter_types.gen.go | Adds a new Envoy extension blank-import to keep generated filter type registration in sync with updated deps. |
| pkg/pluginsdk/collections/delayed_dynamic_informer.go | Adds HasSyncedChecker() to satisfy newer client-go interfaces (currently implemented as a panic). |
| Makefile | Bumps conformance/Gateway API version used by make targets to v1.6.0-rc.1. |
| install/helm/kgateway-crds/templates/gateway.kgateway.dev_trafficpolicies.yaml | Updates embedded schema descriptions (notably CORS fields) to match updated field naming/semantics. |
| install/helm/kgateway-crds/templates/gateway.kgateway.dev_gatewayparameters.yaml | Syncs embedded Kubernetes schema descriptions with updated upstream wording. |
| hack/utils/oss_compliance/osa_provided.md | Updates recorded dependency versions for OSS compliance output. |
| go.mod | Bumps Gateway API, Kubernetes, Istio, and other Go dependencies to newer versions. |
| go.sum | Updates module checksums to match the bumped dependencies. |
| .github/workflows/nightly-tests.yaml | Adds Gateway API v1.6.0-rc.1 lanes and updates guard logic for incompatible v2.2.x combinations. |
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
This reverts commit 48f6511. Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
| validListenersPerParent := map[string]int{} | ||
| for _, l := range validListeners { | ||
| // If the kind is missing, assume it is a gateway | ||
| kind := l.Parent.GetObjectKind().GroupVersionKind().Kind |
There was a problem hiding this comment.
Maybe type casting would be a better option ?
| func ListenerPort(listener ir.Listener, port gwv1.PortNumber) error { | ||
| // When disableStatsOnProxy is true, port 9091 (the metrics port) is not considered reserved. | ||
| func ListenerPort(listener ir.Listener, port gwv1.PortNumber, disableStatsOnProxy bool) error { | ||
| if disableStatsOnProxy && port == 9091 { |
There was a problem hiding this comment.
Maybe use a const ?
There was a problem hiding this comment.
agree, unless we're reverting
|
|
||
| // DisableStatsOnProxy disables the stats/metrics server on the Envoy proxy. | ||
| // When true, port 9091 is no longer reserved and listeners may use it. | ||
| DisableStatsOnProxy bool `split_words:"true" default:"false"` |
There was a problem hiding this comment.
Since the metrics port on the proxy (9091) conflicts with the port used in the conformance test, this flag has been introduced. This can either be kept or reverted in a follow-up with a custom script to set up conformance tests
There was a problem hiding this comment.
revert and use gatewayClassParametersRefs with custom gwp
| @@ -450,7 +450,7 @@ func (h *filterChainTranslator) computeTcpFilters(l ir.TcpIR, listenerReporter s | |||
| for _, route := range l.BackendRefs { | |||
| w := route.Weight | |||
| if w == 0 { | |||
| w = 1 | |||
| continue | |||
There was a problem hiding this comment.
So TCP routes with a weight of 0 are not routed to. Required for TCPRouteWeightedRouting conformance test
There was a problem hiding this comment.
this could generate invalid envoy config
There was a problem hiding this comment.
If all the weights are intentionally 0 ?
| // Do not set the timeout if retry is specified and only BackendRequest is set. | ||
| // This will be handled in envoyroutev3.RetryPolicy.PerTryTimeout | ||
| if !hasRetry { | ||
| timeout = timeouts.backendRequestTimeout | ||
| } |
There was a problem hiding this comment.
The backendRequestTimeout specifies the timeout for a response from the backend, not overall retry time which will be specified in the retry policy
| load("ext://uibutton", "cmd_button", "location") | ||
|
|
||
| image_tag = "2.0.0-local" | ||
| image_tag = "v1.0.1-dev" |
| @@ -725,8 +735,8 @@ var _ = Describe("Translator TCPRoute Listener", func() { | |||
| newerStatus := rm.BuildRouteStatus(ctx, newerRoute, wellknown.DefaultGatewayControllerName) | |||
| Expect(newerStatus).NotTo(BeNil()) | |||
| Expect(newerStatus.Parents).To(HaveLen(1)) | |||
| newerAccepted := findAccepted(newerStatus.Parents[0].Conditions) | |||
| Expect(newerAccepted).NotTo(BeNil(), "Expected Accepted condition on newer route") | |||
| newerAccepted := findProgrammed(newerStatus.Parents[0].Conditions) | |||
There was a problem hiding this comment.
Nit: var says "Accepted", function gets "Programmed"
| validListenersPerParent := map[string]int{} | ||
| for _, l := range validListeners { | ||
| // If the kind is missing, assume it is a gateway | ||
| kind := l.Parent.GetObjectKind().GroupVersionKind().Kind |
| func ListenerPort(listener ir.Listener, port gwv1.PortNumber) error { | ||
| // When disableStatsOnProxy is true, port 9091 (the metrics port) is not considered reserved. | ||
| func ListenerPort(listener ir.Listener, port gwv1.PortNumber, disableStatsOnProxy bool) error { | ||
| if disableStatsOnProxy && port == 9091 { |
There was a problem hiding this comment.
agree, unless we're reverting
| @@ -104,19 +103,44 @@ func (c *CommonCollections) InitCollections( | |||
| httpRoutes := krt.WrapClient(kclient.NewFilteredDelayed[*gwv1.HTTPRoute](c.Client, wellknown.HTTPRouteGVR, filter), c.KrtOpts.ToOptions("HTTPRoute")...) | |||
| metrics.RegisterEvents(httpRoutes, kmetrics.GetResourceMetricEventHandler[*gwv1.HTTPRoute]()) | |||
|
|
|||
| // ON_EXPERIMENTAL_PROMOTION : Remove this block | |||
| // Ref: https://github.com/kgateway-dev/kgateway/issues/12879 | |||
There was a problem hiding this comment.
Don't forget to close this issue!
Description
Bumps gateway-api to 1.6
Important
This introduces the
kgateway.dev/Programmedcondition on Routes - Any issues with a route (Conflicts, dropped, replaced, etc.) will be surfaced on this condition instead of theAcceptedcondition. The Accepted condition only indicates whether the route is semantically validChange Type
/kind feature
Changelog
Additional Notes