Skip to content

Ignore other gateways parentRefs and update route parent statuses only for managed gateways#13397

Merged
traefiker merged 6 commits into
traefik:v3.6from
rtribotte:fix-parentrefs
Jun 26, 2026
Merged

Ignore other gateways parentRefs and update route parent statuses only for managed gateways#13397
traefiker merged 6 commits into
traefik:v3.6from
rtribotte:fix-parentrefs

Conversation

@rtribotte

@rtribotte rtribotte commented Jun 24, 2026

Copy link
Copy Markdown
Member

What does this PR do?

This PR fixes two behaviors:

  • ignore other gateways parentRefs when building route configuration and statuses
  • update route parent statuses only for managed gateways

Motivation

To fix the Gateway API provider behavior.

More

  • Added/updated tests
  • Added/updated documentation

Additional Notes

Assisted-by: Claude Opus 4.8 (1M context)

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the Kubernetes Gateway API provider to (1) ignore parentRefs that point to Gateways not managed by Traefik and (2) update Route parent statuses only for Gateways Traefik manages, while preserving other controllers’ (and other Traefik instances’) existing status entries.

Changes:

  • Refactors route loading (HTTP/GRPC/TCP/TLS) to match parentRefs against the set of managed Gateways and compute statuses only for those parents.
  • Updates Route status writes to merge newly computed parent statuses with existing “non-owned” statuses.
  • Adds fixtures and tests covering multi-parentRefs scenarios (managed + foreign Gateway), including attached route counting and status preservation.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
pkg/provider/kubernetes/gateway/httproute.go Loads HTTPRoutes only for managed Gateway parentRefs; updates parent status write path accordingly.
pkg/provider/kubernetes/gateway/grpcroute.go Same as HTTPRoute, applied to GRPCRoutes.
pkg/provider/kubernetes/gateway/tcproute.go Same as HTTPRoute, applied to TCPRoutes (experimental channel).
pkg/provider/kubernetes/gateway/tlsroute.go Same as HTTPRoute, applied to TLSRoutes (experimental channel).
pkg/provider/kubernetes/gateway/kubernetes.go Introduces gatewayWithListeners and parentRef-to-managed-Gateway matching helper.
pkg/provider/kubernetes/gateway/client.go Adds mergeRouteParentStatuses and threads managed-gateways context into Route status updates.
pkg/provider/kubernetes/gateway/kubernetes_test.go Adds/updates unit tests for parentRef matching and multi-gateway parentRef status/attached-route behavior.
pkg/provider/kubernetes/gateway/fixtures/httproute/with_multiple_gateways_parent_refs.yml New fixture covering HTTPRoute referencing both managed and foreign Gateways.
pkg/provider/kubernetes/gateway/fixtures/grpcroute/with_multiple_gateways_parent_refs.yml New fixture covering GRPCRoute referencing both managed and foreign Gateways.
pkg/provider/kubernetes/gateway/fixtures/tcproute/with_multiple_gateways_parent_refs.yml New fixture covering TCPRoute referencing both managed and foreign Gateways.
pkg/provider/kubernetes/gateway/fixtures/tlsroute/with_multiple_gateways_parent_refs.yml New fixture covering TLSRoute referencing both managed and foreign Gateways.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pkg/provider/kubernetes/gateway/httproute.go
Comment thread pkg/provider/kubernetes/gateway/grpcroute.go
Comment thread pkg/provider/kubernetes/gateway/tcproute.go
Comment thread pkg/provider/kubernetes/gateway/tlsroute.go
@mmatur
mmatur self-requested a review June 26, 2026 07:31
@traefiker

Copy link
Copy Markdown
Contributor

🚫 error related to review: need more review [0/2]

@mmatur mmatur left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@traefiker
traefiker merged commit 32bb716 into traefik:v3.6 Jun 26, 2026
63 of 66 checks passed
JuliusFreudenberger pushed a commit to JuliusFreudenberger/nix-config that referenced this pull request Jul 2, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [traefik](https://github.com/containous/traefik) | patch | `v3.7.5` → `v3.7.6` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/12) for more information.

---

### Release Notes

<details>
<summary>containous/traefik (traefik)</summary>

### [`v3.7.6`](https://github.com/containous/traefik/blob/HEAD/CHANGELOG.md#v376-2026-06-30)

[Compare Source](traefik/traefik@v3.7.6...v3.7.6)

[All Commits](traefik/traefik@v3.7.5...v3.7.6)

**Bug fixes:**

- **\[acme, logs]** Bump github.com/go-acme/lego/v5 ([#&#8203;13154](traefik/traefik#13154) [@&#8203;ldez](https://github.com/ldez))
- **\[acme]** Bump github.com/go-acme/lego/v5 ([#&#8203;13359](traefik/traefik#13359) [@&#8203;juliens](https://github.com/juliens))
- **\[k8s, k8s/ingress-nginx]** Fix ingress-nginx ssl passthrough status updates ([#&#8203;13212](traefik/traefik#13212) [@&#8203;nickmnt](https://github.com/nickmnt))
- **\[k8s/gatewayapi]** Add missing Gateway API features in conformance tests ([#&#8203;13356](traefik/traefik#13356) [@&#8203;AnatoleLucet](https://github.com/AnatoleLucet))
- **\[k8s/gatewayapi]** Avoid collisions for Gateway API services names ([#&#8203;13367](traefik/traefik#13367) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[k8s/gatewayapi]** Ignore other gateways parentRefs and update route parent statuses only for managed gateways ([#&#8203;13397](traefik/traefik#13397) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[k8s/ingress-nginx]** Configure retry according to buffering configuration ([#&#8203;13039](traefik/traefik#13039) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[k8s/ingress-nginx]** Fix force-ssl-redirect routing 418 when TLS is terminated upstream ([#&#8203;13386](traefik/traefik#13386) [@&#8203;carloslima](https://github.com/carloslima))
- **\[k8s]** Detect EndpointSlice condition changes ([#&#8203;13405](traefik/traefik#13405) [@&#8203;kevinpollet](https://github.com/kevinpollet))
- **\[k8s]** Index Kubernetes EndpointSlice by service name ([#&#8203;13395](traefik/traefik#13395) [@&#8203;kevinpollet](https://github.com/kevinpollet))
- **\[k8s]** Sort endpointslices to keep backend IPs consistent across rebuilds ([#&#8203;13406](traefik/traefik#13406) [@&#8203;kevinpollet](https://github.com/kevinpollet))
- **\[kv]** Bump kvtools/redis to v1.2.1 ([#&#8203;13403](traefik/traefik#13403) [@&#8203;ldez](https://github.com/ldez))
- **\[middleware, authentication]** Fix x-forwarded-port in forward-auth ([#&#8203;13344](traefik/traefik#13344) [@&#8203;juliens](https://github.com/juliens))
- **\[middleware, k8s/gatewayapi]** Fix Gateway API redirect missing statuses ([#&#8203;13360](traefik/traefik#13360) [@&#8203;AnatoleLucet](https://github.com/AnatoleLucet))
- **\[middleware, k8s/gatewayapi]** Fix Host header not being modified by RequestHeaderModifier ([#&#8203;12805](traefik/traefik#12805) [@&#8203;mihuross](https://github.com/mihuross))
- **\[middleware, k8s/gatewayapi]** Fix request scheme derivation when Gateway API RequestRedirect omits scheme ([#&#8203;13347](traefik/traefik#13347) [@&#8203;gndz07](https://github.com/gndz07))
- **\[middleware]** Fix CORS Max-Age set to 0 by default ([#&#8203;13371](traefik/traefik#13371) [@&#8203;AnatoleLucet](https://github.com/AnatoleLucet))
- **\[middleware]** Fix CORS wildcard when allow-credentials is true ([#&#8203;13368](traefik/traefik#13368) [@&#8203;AnatoleLucet](https://github.com/AnatoleLucet))
- **\[server]** Add an option to remove request headers with underscores ([#&#8203;13262](traefik/traefik#13262) [@&#8203;youkoulayley](https://github.com/youkoulayley))
- **\[server]** Configurable max request header size ([#&#8203;13353](traefik/traefik#13353) [@&#8203;juliens](https://github.com/juliens))
- **\[tls]** Fix nondeterministic TLS certificate selection on shared SAN ([#&#8203;13348](traefik/traefik#13348) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[webui]** Bump axios to v1.18.0 ([#&#8203;13380](traefik/traefik#13380) [@&#8203;gndz07](https://github.com/gndz07))
- **\[websocket]** Fix connection upgrades when backend server is using h2c scheme ([#&#8203;12967](traefik/traefik#12967) [@&#8203;stffabi](https://github.com/stffabi))

**Documentation:**

- **\[k8s/crd]** Fix broken CRD reference links in IngressRoute page ([#&#8203;13375](traefik/traefik#13375) [@&#8203;s3onghyun](https://github.com/s3onghyun))
- **\[k8s/gatewayapi]** Remove experimental note for Gateway API/TLSRoute documentation ([#&#8203;13392](traefik/traefik#13392) [@&#8203;jnoordsij](https://github.com/jnoordsij))
- **\[k8s/ingress-nginx]** Add Kubernetes Ingress NGINX to the providers list ([#&#8203;13372](traefik/traefik#13372) [@&#8203;nmengin](https://github.com/nmengin))
- **\[k8s]** Align Helm chart documented values with chart v41 ([#&#8203;13366](traefik/traefik#13366) [@&#8203;mloiseleur](https://github.com/mloiseleur))
- **\[middleware, authentication, k8s/ingress-nginx]** Clarify intentional auth-response-headers gating and absence of stripping incoming X-Forwarded-\* headers ([#&#8203;13342](traefik/traefik#13342) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[middleware]** Clarify entryPoint middleware reference format ([#&#8203;13364](traefik/traefik#13364) [@&#8203;mloiseleur](https://github.com/mloiseleur))
- **\[security]** Add HTTP/2 header memory exhaustion security documentation ([#&#8203;13381](traefik/traefik#13381) [@&#8203;emilevauge](https://github.com/emilevauge))
- Adds documentations on maxHeaderBytes ([#&#8203;13363](traefik/traefik#13363) [@&#8203;juliens](https://github.com/juliens))
- Fix inaccuracies in reference documentation ([#&#8203;13304](traefik/traefik#13304) [@&#8203;sheddy-traefik](https://github.com/sheddy-traefik))

### [`v3.7.6`](https://github.com/containous/traefik/blob/HEAD/CHANGELOG.md#v376-2026-06-30)

[Compare Source](traefik/traefik@v3.7.5...v3.7.6)

[All Commits](traefik/traefik@v3.7.5...v3.7.6)

**Bug fixes:**

- **\[acme, logs]** Bump github.com/go-acme/lego/v5 ([#&#8203;13154](traefik/traefik#13154) [@&#8203;ldez](https://github.com/ldez))
- **\[acme]** Bump github.com/go-acme/lego/v5 ([#&#8203;13359](traefik/traefik#13359) [@&#8203;juliens](https://github.com/juliens))
- **\[k8s, k8s/ingress-nginx]** Fix ingress-nginx ssl passthrough status updates ([#&#8203;13212](traefik/traefik#13212) [@&#8203;nickmnt](https://github.com/nickmnt))
- **\[k8s/gatewayapi]** Add missing Gateway API features in conformance tests ([#&#8203;13356](traefik/traefik#13356) [@&#8203;AnatoleLucet](https://github.com/AnatoleLucet))
- **\[k8s/gatewayapi]** Avoid collisions for Gateway API services names ([#&#8203;13367](traefik/traefik#13367) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[k8s/gatewayapi]** Ignore other gateways parentRefs and update route parent statuses only for managed gateways ([#&#8203;13397](traefik/traefik#13397) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[k8s/ingress-nginx]** Configure retry according to buffering configuration ([#&#8203;13039](traefik/traefik#13039) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[k8s/ingress-nginx]** Fix force-ssl-redirect routing 418 when TLS is terminated upstream ([#&#8203;13386](traefik/traefik#13386) [@&#8203;carloslima](https://github.com/carloslima))
- **\[k8s]** Detect EndpointSlice condition changes ([#&#8203;13405](traefik/traefik#13405) [@&#8203;kevinpollet](https://github.com/kevinpollet))
- **\[k8s]** Index Kubernetes EndpointSlice by service name ([#&#8203;13395](traefik/traefik#13395) [@&#8203;kevinpollet](https://github.com/kevinpollet))
- **\[k8s]** Sort endpointslices to keep backend IPs consistent across rebuilds ([#&#8203;13406](traefik/traefik#13406) [@&#8203;kevinpollet](https://github.com/kevinpollet))
- **\[kv]** Bump kvtools/redis to v1.2.1 ([#&#8203;13403](traefik/traefik#13403) [@&#8203;ldez](https://github.com/ldez))
- **\[middleware, authentication]** Fix x-forwarded-port in forward-auth ([#&#8203;13344](traefik/traefik#13344) [@&#8203;juliens](https://github.com/juliens))
- **\[middleware, k8s/gatewayapi]** Fix Gateway API redirect missing statuses ([#&#8203;13360](traefik/traefik#13360) [@&#8203;AnatoleLucet](https://github.com/AnatoleLucet))
- **\[middleware, k8s/gatewayapi]** Fix Host header not being modified by RequestHeaderModifier ([#&#8203;12805](traefik/traefik#12805) [@&#8203;mihuross](https://github.com/mihuross))
- **\[middleware, k8s/gatewayapi]** Fix request scheme derivation when Gateway API RequestRedirect omits scheme ([#&#8203;13347](traefik/traefik#13347) [@&#8203;gndz07](https://github.com/gndz07))
- **\[middleware]** Fix CORS Max-Age set to 0 by default ([#&#8203;13371](traefik/traefik#13371) [@&#8203;AnatoleLucet](https://github.com/AnatoleLucet))
- **\[middleware]** Fix CORS wildcard when allow-credentials is true ([#&#8203;13368](traefik/traefik#13368) [@&#8203;AnatoleLucet](https://github.com/AnatoleLucet))
- **\[server]** Add an option to remove request headers with underscores ([#&#8203;13262](traefik/traefik#13262) [@&#8203;youkoulayley](https://github.com/youkoulayley))
- **\[server]** Configurable max request header size ([#&#8203;13353](traefik/traefik#13353) [@&#8203;juliens](https://github.com/juliens))
- **\[tls]** Fix nondeterministic TLS certificate selection on shared SAN ([#&#8203;13348](traefik/traefik#13348) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[webui]** Bump axios to v1.18.0 ([#&#8203;13380](traefik/traefik#13380) [@&#8203;gndz07](https://github.com/gndz07))
- **\[websocket]** Fix connection upgrades when backend server is using h2c scheme ([#&#8203;12967](traefik/traefik#12967) [@&#8203;stffabi](https://github.com/stffabi))

**Documentation:**

- **\[k8s/crd]** Fix broken CRD reference links in IngressRoute page ([#&#8203;13375](traefik/traefik#13375) [@&#8203;s3onghyun](https://github.com/s3onghyun))
- **\[k8s/gatewayapi]** Remove experimental note for Gateway API/TLSRoute documentation ([#&#8203;13392](traefik/traefik#13392) [@&#8203;jnoordsij](https://github.com/jnoordsij))
- **\[k8s/ingress-nginx]** Add Kubernetes Ingress NGINX to the providers list ([#&#8203;13372](traefik/traefik#13372) [@&#8203;nmengin](https://github.com/nmengin))
- **\[k8s]** Align Helm chart documented values with chart v41 ([#&#8203;13366](traefik/traefik#13366) [@&#8203;mloiseleur](https://github.com/mloiseleur))
- **\[middleware, authentication, k8s/ingress-nginx]** Clarify intentional auth-response-headers gating and absence of stripping incoming X-Forwarded-\* headers ([#&#8203;13342](traefik/traefik#13342) [@&#8203;rtribotte](https://github.com/rtribotte))
- **\[middleware]** Clarify entryPoint middleware reference format ([#&#8203;13364](traefik/traefik#13364) [@&#8203;mloiseleur](https://github.com/mloiseleur))
- **\[security]** Add HTTP/2 header memory exhaustion security documentation ([#&#8203;13381](traefik/traefik#13381) [@&#8203;emilevauge](https://github.com/emilevauge))
- Adds documentations on maxHeaderBytes ([#&#8203;13363](traefik/traefik#13363) [@&#8203;juliens](https://github.com/juliens))
- Fix inaccuracies in reference documentation ([#&#8203;13304](traefik/traefik#13304) [@&#8203;sheddy-traefik](https://github.com/sheddy-traefik))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjE1MC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://git.jfreudenberger.de/JuliusFreudenberger/nix-config/pulls/16
Co-authored-by: Renovate Bot <[email protected]>
Co-committed-by: Renovate Bot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants