Skip to content

GEP-2643: TLSRoute#4064

Merged
k8s-ci-robot merged 18 commits intokubernetes-sigs:mainfrom
rikatz:tlsroute-gep
Dec 15, 2025
Merged

GEP-2643: TLSRoute#4064
k8s-ci-robot merged 18 commits intokubernetes-sigs:mainfrom
rikatz:tlsroute-gep

Conversation

@rikatz
Copy link
Member

@rikatz rikatz commented Sep 3, 2025

What type of PR is this?
/kind gep

What this PR does / why we need it:
Adds the TLSRoute GEP, which is a document aggregating all of the existing TLSRoute implementations and also adding some disambiguation discussions

Which issue(s) this PR fixes:
Fixes #2643

Does this PR introduce a user-facing change?:

TLSRoute gep creation

This GEP is targeting v1.5

@k8s-ci-robot k8s-ci-robot added release-note Denotes a PR that will be considered when it comes time to generate release notes. kind/gep PRs related to Gateway Enhancement Proposal(GEP) cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Sep 3, 2025
@k8s-ci-robot k8s-ci-robot added do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Sep 3, 2025
@rikatz
Copy link
Member Author

rikatz commented Sep 3, 2025

I will add some comments that needs some clarification before we decide to merge this, the comments were discussed between me, @candita and @Miciah and we realized that they need to be clarified with the community

* When a Gateway contains a listener with `protocol=TLS` and `tls.mode=Passthrough`,
the `Gateway` MUST NOT allow another listener on the same port with a different
`tls.mode` and the `Gateway` SHOULD be marked as `Accepted=False`.
* Any violating Listener should have a Condition `Conflicted=True`.
Copy link
Member Author

Choose a reason for hiding this comment

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

From a discussion that we had: is this for any listener, for the one added later? If there is a conflict listener on the TLSRoute case, do we want to mark all of Listeners as conflicted? Should we stop serving in this case, and mark Accepted=false?

Per @Miciah comment:

The GatewaySpec godoc is explicit: 'If a set of Listeners contains Listeners that are not distinct, then those Listeners are Conflicted, and the implementation MUST set the "Conflicted" condition in the Listener Status to "True"', and, "The implementation MUST NOT pick one conflicting Listener as the winner."

The godoc for ListenerConditionOverlappingTLSConfig re-iterates: "This condition MUST be set on all Listeners with overlapping TLS config."
  • what if we have a conflict? Do we really want all of the listeners to be gone?
  • what if we are using ListenerSet?

Copy link
Member Author

Choose a reason for hiding this comment

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

I have changed here for now as:

* When a Gateway does not support [Multiplexing](#multiplexing-support) and contains 
a listener with `protocol=TLS`, the Gateway MUST NOT allow any other kind of 
listener on the same port, and any violating Listener should have a Condition `OverlappingTLSConfig=True`
with the reason `OverlappingProtocols`.

This is a new condition that we should be adding

Copy link
Contributor

@mikemorris mikemorris Oct 2, 2025

Choose a reason for hiding this comment

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

Hmm, the suggestion to mark all listeners as conflicted feels at odds with the typical conflict resolution guidance in https://gateway-api.sigs.k8s.io/guides/api-design/#conflicts, but I think maybe we aren't able to follow that because listener config is all batched together as an atomic update to the Gateway (and trying to be "stateful" rather than reflecting the current YAML is an anti-pattern)?

(I think the most granular breakdown achievable might be one entire ListenerSet attached to a Gateway becomes conflicted, but other ListenerSets attached to the same Gateway remain functional.)

Copy link
Member Author

Choose a reason for hiding this comment

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

@mikemorris I think this is currently solved? As we are keeping ListenerSet out of this GEP, I will consider the conflict management fully part of ListenerSet

@rikatz
Copy link
Member Author

rikatz commented Sep 29, 2025

To be added: #3541

@candita
Copy link
Contributor

candita commented Sep 30, 2025

/assign

@rikatz
Copy link
Member Author

rikatz commented Oct 20, 2025

A side note to myself, I want to open 2 more GEPs thjat will complement this:

  • Extend BackendTLSPolicy to be used by TLSRoute (when on Terminate mode)
  • Add support for multiplexing (probably a memorandum GEP) explaining how the listeners should behave on each case (I guess we have some, will need to check with Nick)

@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Dec 8, 2025
Copy link
Member

@rostislavbobo rostislavbobo left a comment

Choose a reason for hiding this comment

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

/lgtm

Thanks @rikatz !

And left one comment on updating the Gateway Listener TLS Mode validation.

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Dec 8, 2025
@youngnick
Copy link
Contributor

LGTM once with some minor changes. Nice work @rikatz and @rostislavbobo!

@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Dec 10, 2025
@rikatz
Copy link
Member Author

rikatz commented Dec 10, 2025

Thanks Nick, I will do a final review/pass on the feature names case here, and will let you know!

@rikatz
Copy link
Member Author

rikatz commented Dec 10, 2025

@youngnick thanks! my last commit fixed the feature names on the conformance tests and removed a long term goal that should have been removed (ESNI is dead, the new feature is ECH)

@youngnick
Copy link
Contributor

This LGTM, thanks @rikatz! I'll approve and unhold so that the next LGTM will merge.

/approve
/unhold

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Dec 11, 2025
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: rikatz, rostislavbobo, youngnick

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Dec 11, 2025
@rostislavbobo
Copy link
Member

Thanks @youngnick for your suggestions!

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Dec 15, 2025
@k8s-ci-robot k8s-ci-robot merged commit de8232b into kubernetes-sigs:main Dec 15, 2025
19 checks passed
RoseWrightdev pushed a commit to RoseWrightdev/gateway-api that referenced this pull request Jan 8, 2026
* GEP-2643: TLSRoute

* Add multiplexing to TLSRoute

* Update TLSRoute GEP with more information

* Add support for TLSRoute termination

* Fix some comment reviews

* Move multiplexing to its own GEP

* Fix gatewayapi reviews

* Fix some more reviews

* Fixes on some wording

* Add reference to other GEPs

* Add conformance for non supported termination

* Add conformance, fix mixed mode, fix metadata

* Be explicit on conformance intent for failed listener

* Add conformance issues and codes to conformance table

* Address comments on GEP

* address comment reviews, add tlsmode validation

* Apply suggestions from code review

Co-authored-by: Nick Young <[email protected]>

* Fix feature names on TLSRoute gep

---------

Co-authored-by: Nick Young <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/gep PRs related to Gateway Enhancement Proposal(GEP) lgtm "Looks good to me", indicates that a PR is ready to be merged. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GEP: TLSRoute

9 participants