-
Notifications
You must be signed in to change notification settings - Fork 551
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
Conversation
Signed-off-by: Flynn <[email protected]>
- 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. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
The default-gateway feature will be named `HTTPRouteDefaultGateway` and | ||
`GRPCRouteDefaultGateway`. It is unlikely that an implementation would support |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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? 🙂
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 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. |
There was a problem hiding this 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.
There was a problem hiding this 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)
There was a problem hiding this 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.
Signed-off-by: Flynn <[email protected]>
Updated with a new |
Signed-off-by: Flynn <[email protected]>
This should be ready to go! |
There was a problem hiding this 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.
[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 |
/kind gep
What/Why/Who for Routes attaching to default Gateways, rather than needing to specify the Gateway.
Fixes #3793.