Support Kubernetes MCS API (ServiceExport / ServiceImport) in Linkerd
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 11.5k
- Forks
- 1.4k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 53
Description
### What problem are you trying to solve?
Currently, multi-cluster service discovery in Linkerd typically relies on Linkerd-specific mechanisms.
However, this can make interoperability difficult with other tools and clusters that prefer Kubernetes standards.
People adopting the Kubernetes Multi-Cluster Services (MCS) API want Linkerd to "just work" with `ServiceExport` / `ServiceImport` as the common language for cross-cluster services.
### How should the problem be solved?
Would you consider adding first-class support for the Kubernetes MCS API in Linkerd—specifically recognizing and following the specifications of `ServiceExport` and `ServiceImport` for cross-cluster service discovery and routing?
This would allow users to rely on a standard model across environments and tooling.
### Any alternatives you've considered?
* Continue using Linkerd's existing multi-cluster approach and resources.
* Third-party controllers that translate between MCS resources and Linkerd concepts.
These work, but they don't provide a simple, standard, vendor-neutral contract like the MCS API.
### How would users interact with this feature?
As an alternative to the current options of labeling Services with `mirror.linkerd.io/federated=member` or `mirror.linkerd.io/exported=true`, users could use `ServiceExport` to expose services to other clusters.
In the other cluster, `ServiceImport` would be automatically created and become available for use.
### References
[KEP-1645: Multi-Cluster Services API](https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/1645-multi-cluster-services-api)
[Multicluster Services API Overview - SIG Multicluster](https://multicluster.sigs.k8s.io/concepts/multicluster-services-api/)
[kubernetes-sigs/mcs-api](https://github.com/kubernetes-sigs/mcs-api)
[Multi-Cluster Services API (Beta) — Cilium](https://docs.cilium.io/en/stable/network/clustermesh/mcsapi/)
[Multi-Cluster Services API - Istio](https://istio.io/latest/docs/reference/commands/pilot-discovery/#:~:text=If%20enabled%2C%20istiod%20will%20automatically%20generate%20Kubernetes%20Multi%2DCluster%20Services%20(MCS)%20ServiceExport%20resources%20for%20every%20service%20in%20the%20mesh.%20Services%20defined%20to%20be%20cluster%2Dlocal%20in%20MeshConfig%20are%20excluded.)
### Would you like to work on this feature?
None
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading KEP-1645 and the linked Kubernetes MCS API overview and mcs-api project, then compare them with Linkerd's existing federated/exported service approach described in the issue. Done should mean Linkerd recognizes ServiceExport and ServiceImport for cross-cluster discovery and routing, with ServiceImport becoming available in the receiving cluster.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- kubernetes
- Domain
- distributed-systems, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100