linkerd-failover extension should support HTTPRoute for pod-to-pod cluster linking
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?
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
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 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