-
Notifications
You must be signed in to change notification settings - Fork 498
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
L4 Gateway Sharing #1062
Comments
For this to work, Gateway will need a way to specify a pool of ports (most likely a range) to draw from (probably covered by #818), and will also need the port included in the status (#1060), right? That gives the Gateway owner a way to specify what ports to pick from, and the Route owner a way to know what they got. |
Reading this issue reminds me of my recent comment: #1061 (comment) Spitballing an idea: |
Historically, having I think that having a way to represent a user's intent to request "please dynamically assign me a port from a list of ports" is a much better user experience. |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
While I don't think this issue is entirely ready for action, I do think it represents some key interests in the L4 ingress space that I would like to see addressed. I'm going to take this one to try and shepherd it forward with the goal of fully defining the acceptance criteria that would see it complete and ideally getting this into |
/cc |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
The Gateway vs Route separation allows a cluster operator gateway owner to share a gateway and its resources with many application developers.
However, in the L4 routing model (i.e. TCPRoute and UDPRoute), routes attaching to a shared gateway will generally be associated with a dedicated gateway listener, thereby preventing an application owner from creating a route without some cooperation from the gateway owner.
However, the gateway may represent a resource that is desirable to share - for example, a cloud load-balancer, or even a public IP address - so it seems important that we allow sharing.
Sharing a L4 forwarding gateway would require that a cluster operator could define a gateway from which independent application owners could be assigned listener TCP/UDP ports, without any risk of other application owners interfering with or conflicting with their ports.
Once a route has attached to such a listener, the application owner would retrieve the assigned port from status, and share this port and the gateway address with clients that wish to connect.
One way of thinking of this is in the context of the "the goal of using Gateway to fill the role that is currently filled by Services of type LoadBalancer" - this would allow independent application developers to have
type=LoadBalancer
behavior without requiring expensive resources (load-balancers, public IP addresses, etc.) to be allocated to each.For a longer discussion, see Gateway API - Transport Layer (L4) Routing vs Gateway Sharing
#818 is also relevant because the proposed modelling in the doc involves a listener having a port range to allocate from:
See also this work-in-progress branch showing the API changes and this work-in-progress Istio branch showing an Istio-based proof-of-concept.
The text was updated successfully, but these errors were encountered: