linkerd / linkerd/linkerd2

Support Kubernetes MCS API (ServiceExport / ServiceImport) in Linkerd

Open
#14,412 9 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area/multicluster enhancement pinned
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.