Open rosenhouse opened 3 years ago
Hi! Thanks for taking time to look at skupper and give this feedback!
We could support the ServiceExport CRD as an alternative to an annotation on the service (though the preferred option is to annotate the deployment/statefulset/daemonset that is the target of the service).
As I understand KEP-1645, the expectation is that for every ServiceExport, there will be a ServiceImport created in all the matching namespaces. The ServiceImport CRD design seems to imply a layer 3 solution.
Also, as you note, skupper intentionally does not follow the 'namespace sameness' assumption and the solution envisaged seems to be a cluster level one (i.e. the same mechanism is assumed for the cluster as a whole, and indeed all those connected) whereas skupper does not require cluster privileges for flexibility.
So I don't think we could be properly 'compliant' with the KEP as specified, and my concern in just using one of the CRDs defined there in a slightly different manner might result in mismatched expectations.
I do recognise the value of having an existing CRD that we could use (particularly useful as a way of indicating status). I am just not sure yet whether it would on balance be more problematic to try and use this one in a manner it is not quite intended for.
What do you think?
Yes, I think I agree on almost everything....
A couple thoughts:
imply a layer 3 solution
I think L4 would work? I haven't played with Skupper much yet, but if I'm reading the docs right, Skupper's support for tunneling raw TCP on a per-port basis should suffice here. For example, if the skupper instances were the ones creating the ServiceImport resources and associated EndpointSlices, they could ensure that the EndpointSlices pointed at the Skupper router's ports, basically the same way it works today with selectorless Services? (or is my mental model wrong?)
Specifically regarding
So I don't think we could be properly 'compliant' with the KEP as specified, and my concern in just using one of the CRDs defined there in a slightly different manner might result in mismatched expectations.
Yes, I have the same concern. I may bring this up with the KEP authors and see their thoughts -- the APIs feel useful even with Skupper's less-demanding trust model.
I'll reply here once I get more clarity!
Yes, sorry, I think you are right. The IPs listed in ServiceImport could just be that of the skupper router. I'll try and find some time to play around with this idea and get a better feel for it.
An update on
properly 'compliant' with the KEP as specified
I raised this topic at the May 11 SIG-Multicluster meeting and was encouraged to PR the KEP, so I did here: https://github.com/kubernetes/enhancements/pull/2734
Hi there,
I'm looking at various multicluster service solutions, and trying to get my bearings in this space. Skupper looks really nice.
I'm wondering if there's been any discussion within this project of aligning with the Kubernetes Enhancement Proposal for Multi-Cluster Services, KEP-1645.
If I'm understanding Skupper right, when I run
skupper connect
, I end up with something similar to the capabilities in that KEP -- although that KEP is written as if all namespaces on the clusters are connected in that way, while Skupper makes it opt-in per-namespace.If that understanding is right, perhaps supporting the
ServiceExport
API (instead of the skupper annotation on a service) would be straightforward?Any/all thoughts on this are welcome, I'm probably misunderstanding something fundamental...
Thank you!