-
Notifications
You must be signed in to change notification settings - Fork 10
Description
We currently have "proxied" Service mode and "proxyless", which is really just "singleton Endpoint with failover" mode.
Some applications/frameworks can do client-side load balancing. For those we should support "headless" service mode. The idea here is still to run without a proxy, but lift the limit on having just a single Endpoint backing the service. Instead, the Endpoint number would be unlimited, and the Service would advertise them via Endpoints status property (containing address/port information). Clients could then watch the (headless) Service object and change their routing accordingly.
This is technically a breaking change to the model, so we can go about it at least two different ways:
- Introduce a v2 Service object, where EffectiveAddress/EffectivePort is augmented by zero or more Endpoints that are part of Status, supporting all service modes, with all the Kubernetes forward/backward storage shimming.
- Introduce a different object type, e.g.
Service2, still supporting all the service modes, but replacing EffectiveAddress/EffectivePort with Endpoints list.
IMO microsoft/usvc#2 is sufficient and less work, but we probably need more discussion around this.
CC @ReubenBond