Skip to content

chore: Bump gateway api to 1.6#14245

Merged
davidjumani merged 33 commits into
mainfrom
bump-gwapi-16
Jul 2, 2026
Merged

chore: Bump gateway api to 1.6#14245
davidjumani merged 33 commits into
mainfrom
bump-gwapi-16

Conversation

@davidjumani

@davidjumani davidjumani commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Description

Bumps gateway-api to 1.6

Important

This introduces the kgateway.dev/Programmed condition on Routes - Any issues with a route (Conflicts, dropped, replaced, etc.) will be surfaced on this condition instead of the Accepted condition. The Accepted condition only indicates whether the route is semantically valid

Change Type

/kind feature

Changelog

Add support for Gateway API 1.6.0

Additional Notes

Copilot AI review requested due to automatic review settings June 12, 2026 18:56
@gateway-bot gateway-bot added do-not-merge/description-invalid do-not-merge/kind-invalid Indicates a PR lacks a `kind/foo` label and requires one. do-not-merge/release-note-invalid Indicates that a PR should not merge because it's missing one of the release note labels. kind/bump release-note and removed do-not-merge/description-invalid do-not-merge/kind-invalid Indicates a PR lacks a `kind/foo` label and requires one. do-not-merge/release-note-invalid Indicates that a PR should not merge because it's missing one of the release note labels. labels Jun 12, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.1 and 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 for v2.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.

Comment thread pkg/pluginsdk/collections/delayed_dynamic_informer.go
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]>
@davidjumani
davidjumani requested a review from a team as a code owner June 30, 2026 19:06
Signed-off-by: David Jumani <[email protected]>
Signed-off-by: David Jumani <[email protected]>
Comment thread pkg/reports/status.go Outdated
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

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe type casting would be a better option ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree

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 {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe use a const ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree, unless we're reverting

@gateway-bot gateway-bot added kind/feature Categorizes issue or PR as related to a new feature. and removed kind/bump labels Jul 1, 2026
@davidjumani davidjumani changed the title [WIP] chore: Bump gateway api to 1.6 chore: Bump gateway api to 1.6 Jul 1, 2026
Comment thread api/settings/settings.go

// 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"`

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why this change

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So TCP routes with a weight of 0 are not routed to. Required for TCPRouteWeightedRouting conformance test

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this could generate invalid envoy config

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If all the weights are intentionally 0 ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right

Comment on lines +268 to +272
// 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
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The backendRequestTimeout specifies the timeout for a response from the backend, not overall retry time which will be specified in the retry policy

Comment thread Tiltfile
load("ext://uibutton", "cmd_button", "location")

image_tag = "2.0.0-local"
image_tag = "v1.0.1-dev"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

finally ha

@davidjumani
davidjumani added this pull request to the merge queue Jul 2, 2026
@@ -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)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree

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 {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't forget to close this issue!

Merged via the queue into main with commit ee899a1 Jul 2, 2026
44 of 46 checks passed
@davidjumani
davidjumani deleted the bump-gwapi-16 branch July 2, 2026 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/feature Categorizes issue or PR as related to a new feature. release-note

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants