Skip to content

GEP-3793: Default Gateways #3852

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 19, 2025
Merged

Conversation

kflynn
Copy link
Contributor

@kflynn kflynn commented Jun 11, 2025

/kind gep

What/Why/Who for Routes attaching to default Gateways, rather than needing to specify the Gateway.
Fixes #3793.

NONE

Signed-off-by: Flynn <[email protected]>
@k8s-ci-robot k8s-ci-robot added release-note-none Denotes a PR that doesn't merit a release note. kind/gep PRs related to Gateway Enhancement Proposal(GEP) cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. labels Jun 11, 2025
@k8s-ci-robot k8s-ci-robot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Jun 11, 2025
Comment on lines +49 to +51
- Support multiple "default" Gateways in a single cluster. If Ana has to make
a choice about which Gateway she wants to use, she'll need to be explicit
about that.
Copy link
Contributor

Choose a reason for hiding this comment

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

We could permit multiple gateways that are still easy to identify by allowing one default gateway per namespace. Ana should be able to identify the namespace to use.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think the thing that's the most important to remember here is that choosing a default Gateway is also choosing a default GatewayClass and implementation, so we'll need to be deliberate about how we do that to ensure that multiple-Gateway-implemetation clusters work well too.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not completely opposed to the idea of a default per namespace, but the more I think about, the more potential I think there is for confusion: while a great many people run namespace-per-tenant, others e.g. use namespaces as logical divisions within a single application, or a namespace per dev team, or whatever. So it's kind of less clear to me that default-per-namespace should be an initial goal.

Comment on lines +135 to +136
The default-gateway feature will be named `HTTPRouteDefaultGateway` and
`GRPCRouteDefaultGateway`. It is unlikely that an implementation would support
Copy link
Contributor

@candita candita Jun 11, 2025

Choose a reason for hiding this comment

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

Can you explain why we need separate features for separate route types?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Maybe we don't -- as I note in the next line or so, though, GatewayDefaultGateway seemed silly. Have another suggestion? 🙂

@youngnick
Copy link
Contributor

There's not really a specific line to make this comment on, so I'll do it globally:

One of the key things I want to make sure we consider is that requiring explicit config does help Ana in the troubleshooting case - because there is an explicit definition of hierarchy via parentRefs and spec.gatewayClassName on Gateway, it's easier to trace out the full tree of related resources.

Each thing that we do that makes that less explicit will add some more cost to troubleshooting and make it a bit harder. So we need to make sure that we're both weighing the difficulty of troubleshooting against ease of initial creation.

Personally, one of the reasons I've pushed hard for so much explicit behavior is not only because we need to service Ian and Chihiro, but also to make the troubleshooting case easier for Ana. I believe that, like code, config is read orders of magnitude more than it's created, so I've tended to err on the side of making things explicit, because that makes troubleshooting easier.

I've seen this before in many contexts, like in network engineering, where BGP is way more explicitly configured than OSPF, and so I found BGP way easier to troubleshoot than OSPF. And in programming, one of the things I personally like about Go is that it encourages an explicit, if verbose, coding style - because I personally spend way more time reading code than I do writing it.

I definitely don't dispute that making it easier to get started is useful - I just want to make sure that we're being conscious about what we give up as we do it.

Copy link
Member

@robscott robscott left a comment

Choose a reason for hiding this comment

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

Thanks @kflynn! This is a great start, looking forward to discussing the details in the next phase of this.

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 16, 2025
@shaneutt shaneutt self-assigned this Jun 17, 2025
Copy link
Member

@shaneutt shaneutt left a comment

Choose a reason for hiding this comment

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

(see additional review below)

@shaneutt shaneutt moved this to Review in Release v1.4.0 Jun 17, 2025
@shaneutt shaneutt added this to the v1.4.0 milestone Jun 17, 2025
Copy link
Member

@shaneutt shaneutt left a comment

Choose a reason for hiding this comment

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

Looks good to merge as Provisional.

/approve
/lgtm

However there are a few lingering comments with concerns, we should create a "TODO" list of sorts under the graduation criteria enumerating these concerns to point out that we need to address them prior to any further graduation.

/hold

After those are documented, we are good to release the hold and merge.

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 18, 2025
Signed-off-by: Flynn <[email protected]>
@kflynn
Copy link
Contributor Author

kflynn commented Jun 19, 2025

One of the key things I want to make sure we consider is that requiring explicit config does help Ana in the troubleshooting case - because there is an explicit definition of hierarchy via parentRefs and spec.gatewayClassName on Gateway, it's easier to trace out the full tree of related resources.

Updated with a new Debugging and Visibility section.

@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 19, 2025
Signed-off-by: Flynn <[email protected]>
@kflynn
Copy link
Contributor Author

kflynn commented Jun 19, 2025

This should be ready to go!

Copy link
Member

@shaneutt shaneutt left a comment

Choose a reason for hiding this comment

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

Looks like comments are resolved and there are no reviews that are blocking. We appear to be ready to move forward as Provisional.

/approve
/lgtm
/unhold

If anyone reviewing this does have a lingering concern that we missed, please feel free to create a follow-up PR adding anything you feel is missing to the GEP.

@k8s-ci-robot k8s-ci-robot added lgtm "Looks good to me", indicates that a PR is ready to be merged. and removed do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. labels Jun 19, 2025
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: kflynn, robscott, shaneutt

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

The pull request process is described here

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 merged commit b4055ba into kubernetes-sigs:main Jun 19, 2025
12 of 13 checks passed
@github-project-automation github-project-automation bot moved this from Review to Done in Release v1.4.0 Jun 19, 2025
@shaneutt shaneutt deleted the flynn/gep-3793 branch June 19, 2025 10:56
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-none Denotes a PR that doesn't merit a release note. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

GEP: Default Gateways
8 participants