linkerd / linkerd/linkerd2

linkerd-failover extension should support HTTPRoute for pod-to-pod cluster linking

Open
#11,472 8 comments 3 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?

Linkerd 2.14 introduced pod-to-pod cluster linking, which simplifies setup and removes need of additional Load Balancers. With this change configuration of routing of traffic to pods running in a different cluster is done using `HTTPRoute` objects. Use of `TrafficSplit` is no longer supported in this setup, so it's impossible to set up a configuration where all requests are handled locally and routed to a different cluster only when local pods are unavailable (i.e. failover to different cluster).

### How should the problem be solved?

Please update `linkerd-failover` extension to monitor and update the `HTTPRoute` objects in a manner similar to how it worked with `TrafficSplit`:
- monitor `HTTPRoute` objects with proper label
- allow setting one backend with weight `1` and other with weight `0`
- let `linkerd-failover` extension to change weights when local backend becomes unavailable

### Any alternatives you've considered?

It is possible to set backend weights in big disproportion, e.g. 99 and 1, but this would not be a true failover, as 1% of the traffic would always be routed to a different cluster.

### How would users interact with this feature?

This would be in-place replacement of current setup which uses `TrafficSplit`, so no change in how to work with this functionality.

### Would you like to work on this feature?

no

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 the linkerd-failover extension's existing TrafficSplit handling and the Kubernetes HTTPRoute API. Implement equivalent monitoring and weight updates for labeled HTTPRoute objects, including 1/0 backend weights and failover changes, then verify that local traffic remains preferred until the local backend is unavailable.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes
Domain
backend, distributed-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.