Skip to content

fix(gatewayapi): honor listener routing type without sectionName - #10059

Draft
banlor wants to merge 1 commit into
envoyproxy:mainfrom
banlor:publish/listener-routing-9696-20260920
Draft

banlor wants to merge 1 commit into
envoyproxy:mainfrom
banlor:publish/listener-routing-9696-20260920

Conversation

@banlor

@banlor banlor commented Sep 20, 2026

Copy link
Copy Markdown

What this PR does / why we need it:

Resolve backend routing for each attached listener, including routes whose parentRef omits sectionName. Listener-specific Service/Endpoint routing is applied before backend merging, so one listener cannot reuse another listener's backend addresses. Request mirrors use the original HTTPRoute or GRPCRoute rule when resolving policy precedence. Mixed TLS backend pools stay together when they cannot all use shared clusters.

Inline cluster names change when a listener's effective routing mode differs from the route/Gateway policy. GRPCRoute mirror clusters after the first rule also use the actual rule index rather than rule/0. EnvoyPatchPolicy resources and Extension Servers that depend on those names or cluster references need updating. The routing documentation, migration notes, and release notes describe both naming changes.

make go.test.coverage passed on this revision, including 60 root-module packages and four CEL runs with the race detector. Temporary files used a task-local ext4 filesystem because WSL DrvFS did not deliver the inotify events required by the file-watcher tests. After merging duplicate coverage records, all 319 statements in 112 blocks intersecting added production lines were exercised. This is block coverage, not exact added-line or branch coverage, and does not prove live Envoy traffic or Kubernetes reconciliation.

make generate gen-check exited 2 after Buf returned permission_denied: 403 Forbidden for buf.build/cncf/xds; gen-check was not reached. make lint GOLANGCI_LINT_FLAGS=--timeout=60m also exited 2, with seven forbidigo diagnostics for ptr.To, one gci import-formatting diagnostic and four goheader diagnostics in the added tests. These lint failures remain unfixed. Mandatory checks have not all passed.

Hermes Agent with gpt-6-astra helped prepare the code, tests, review probes, documentation and PR text.

Which issue(s) this PR fixes:

Fixes #9696


PR Checklist

  • Authorship & ownership: Coding agents / AI assistants are welcome, but I have reviewed every change, understand how and why it works, can explain and maintain it, and take full responsibility for this PR. I have not submitted generated output I do not understand.
  • DCO: All commits are signed off (git commit -s). See DCO: Sign your work.
  • API agreed first: If this PR contains API changes (changes under /api), the API was discussed and agreed before the implementation. The API change can be in a separate PR, or in the same PR, but the API must be agreed before implementation. N/A if this PR does not contain API changes. N/A: no API changes.
  • Required checks pass: make generate gen-check, make lint, and the unit-test/coverage build pass. (Flaky e2e failures are not considered breakages, but gen-check, lint, and coverage MUST pass.)
  • Tests added/updated: New/changed code is covered by appropriate tests. N/A if this PR does not contain code changes.
  • Docs: User-facing changes update the docs, either in this PR or a follow-up PR. N/A if this PR does not contain user-facing changes.
  • Release notes: For any non-trivial change, added a release-note fragment under release-notes/current/<section>/<pr-number>-<slug>.md (see release-notes/current/README.md for sections and naming). N/A if this PR does not contain non-trivial changes.
  • Generated files committed: Ran make gen-check and committed the result if API/helm charts/modules changed.
  • Scope & compatibility: The PR is reasonably scoped (no unrelated changes) and preserves backward compatibility, or any breaking change is called out above and documented in release-notes/current/breaking_changes/.
  • Codex review: Requested a Codex review and addressed all of its comments.
  • Copilot review: Requested a Copilot review and addressed all of its comments.

Resolve Service/Endpoint routing per attached listener before merging
backends. Preserve mirror rule precedence and isolate inline cluster names.
Document the affected xDS names and migration requirements.

Fixes envoyproxy#9696

Signed-off-by: Michael Basov <124149774+banlor@users.noreply.github.com>
@netlify

netlify Bot commented Sep 20, 2026

Copy link
Copy Markdown

Deploy Preview for cerulean-figolla-1f9435 ready!

Name Link
🔨 Latest commit 99d7c89
🔍 Latest deploy log https://app.netlify.com/projects/cerulean-figolla-1f9435/deploys/6aafae747f266300085ae1c0
😎 Deploy Preview https://deploy-preview-10059--cerulean-figolla-1f9435.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MergeBackends: BackendTrafficPolicy RoutingType override at Gateway-listener scope silently missed when route's parentRef omits sectionName

1 participant