Skip to content

API for Default Gateways #3887

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 13 commits into from
Jul 26, 2025
Merged

Conversation

kflynn
Copy link
Contributor

@kflynn kflynn commented Jun 29, 2025

Add API description to GEP-3793. I'm sure this'll be totally noncontroversial. 😇

/kind gep

NONE

@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 29, 2025
@k8s-ci-robot k8s-ci-robot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Jun 29, 2025
@robscott robscott changed the title Add API to GEP-3793. Add API to GEP-3793: Default Gateways Jun 30, 2025
@kflynn kflynn changed the title Add API to GEP-3793: Default Gateways Default Gateway API Jul 1, 2025
@mlavacca
Copy link
Member

mlavacca commented Jul 1, 2025

/cc

@k8s-ci-robot k8s-ci-robot requested a review from mlavacca July 1, 2025 15:36
@kflynn kflynn changed the title Default Gateway API API for Default Gateways Jul 1, 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.

Looking good. I have a few comments.

The main thing that I need to think about is semantically how we seem to be pushing for "Default Gateway" meaning "one Gateway, which is the default", whereas I wonder if we should be looking at it more like "by default, this Gateway will accept unbound routes given a scope".

Do we really want DefaultGateway or do we actually want AcceptRoutesWithNoParentRefsWithinScope<Scope>: true?

I made some comments about this, and I'm interested in hearing your perspective 🤔

@danwinship
Copy link

danwinship commented Jul 8, 2025

github won't let me comment on the pre-existing parts of the GEP, but:

  1. the links to the personas are broken ("https://https//...")
  2. Services of type: LoadBalancer seem like pretty important "Prior Art" for "easy way to get cluster ingress without the application developer needing to worry about how it works"

@kflynn
Copy link
Contributor Author

kflynn commented Jul 22, 2025

I believe that the correct text addresses all the feedback, so I've marked this Implementable.

I suspect that folks may feel strongly about my choices for isDefault in Gateway and defaultOK in Route. BikeshWordsmithing on these names is definitely a thing we can do before we land this PR. 😂

Copy link
Contributor

@youngnick youngnick left a comment

Choose a reason for hiding this comment

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

I kind of liked the previous approach, but this one is more explicit, easier to define behavior for, and easier to write validation policies to disallow if Ian wants to.

/approve
/hold for further review.

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 23, 2025
@kflynn kflynn requested review from shaneutt and youngnick July 23, 2025 15:04
Copy link
Contributor

@howardjohn howardjohn left a comment

Choose a reason for hiding this comment

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

In the spirit of recent discussions about unclear feedback I want to be explicit: I don't think we should do this.

I don't feel the benefits outweigh the complexity and risk. I don't think its an issue with specific choices the implementation has made, I just think the idea is not one we should do.

It seems I am in the minority, and this is not harmful to my implementation or anything (we can easily implement it just like anyone else can), so not blocking. Just wanted to share my 2c.

@kflynn
Copy link
Contributor Author

kflynn commented Jul 23, 2025

I kind of liked the previous approach, but this one is more explicit, easier to define behavior for, and easier to write validation policies to disallow if Ian wants to.

I mean, I did too, but I can't argue myself out of needing to treat it as a breaking change. 🙁 Good candidate for v2. 😉

@kflynn
Copy link
Contributor Author

kflynn commented Jul 23, 2025

In the spirit of recent discussions about unclear feedback I want to be explicit: I don't think we should do this.

I appreciate both the candor and the willingness to disagree and commit. 🙂

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 really well written!

@robscott
Copy link
Member

I don't feel the benefits outweigh the complexity and risk.

@howardjohn I definitely see the complexity here, can you add more detail about what risks this could introduce for us?

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.

I think this is very well thought out, and is close to ready to start implementing and experimenting with it. I have a couple of blocking comments regarding type choices which I would like us to discuss through before any merge.

Thank you @kflynn 🖖

@shaneutt shaneutt requested a review from robscott July 25, 2025 18:19
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.

We came to some consensus on the types. There are still some changes to make, but I want to approve because I want to unblock, and think we're heading in a decent direction to get this into an Experimental state and start letting people try it out and provide feedback.

So once all the comments are resolved:

/approve

Thanks for all the hard work and conversations @kflynn 🖖

…All. Update isDefault to defaultScope; switch both it and useDefaultGateway to scopes instead of bools.

Signed-off-by: Flynn <[email protected]>
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

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

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

@robscott
Copy link
Member

Thanks @kflynn!

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jul 26, 2025
@robscott
Copy link
Member

I think we've got enough approvals here.

/hold cancel

@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 Jul 26, 2025
@k8s-ci-robot k8s-ci-robot merged commit 040c2a0 into kubernetes-sigs:main Jul 26, 2025
19 checks passed
@kflynn kflynn deleted the flynn/gep-3793 branch July 26, 2025 13:47
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/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.