I had an interesting chat with Tim and there is an interesting angle I'd like to share based on that conversation.
ExternalTrafficPolicy and InternalTrafficPolicy have clear scopes and semantics, but we are struggling with Topology because it is too complicated and has so much uncertainty that is hard to model, do we need a switch to enable it, opt-in or opt-out, should it be an enum, how does intersect with traffic policies, ...
It is important to mention that feature gates are not switches, they graduate and they are enabled by default forever, do we really need to define how Topology should work in the API? is it really an API or an implementation detail of the "services-proxy" ?
We do have to implement an API that people can use to implement different Services topologies, that API are the new Slices fields EndpointHints, NodeName, ...
We can also implement some "models" in kube-proxy, same as kube-proxy has different backends for Services: iptables, ipvs.
If we accept this, the question is, how do I use topology for my traffic? quoting Tim
> If we have an annotation that says "generate topology hints for this service" , people can opt-in now. ...
And you can decide on your "service-proxy" if you want to make use of those hints and also expose different methods on how to use them.