envoyproxy / envoyproxy/envoy

Adding lrs_server support for 'self' and 'ads'

Open
#43,326 1 comment 0 reactions 1 assignee Claimed by @adisuissa View on GitHub
area/load reporting enhancement no stalebot
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 20h
Merged PRs (30d)
428

Description

*Adding lrs_server support for 'self' and 'ads'*

*Description*:
The [lrs_server](https://github.com/envoyproxy/envoy/blob/d153c44b9aee19aa6024dd2b57e1f4c283a0177c/api/envoy/config/cluster/v3/cluster.proto#L1239) field was added a while ago into the Cluster API, but haven't got implemented.
The goal of this issue is to track the partial implementation of this feature.

Currently Envoy supports a single load-report-server configuration (in its bootstrap) which Envoy then creates a global Load-Stats-Reporter where all the stats will be sent to. Our goal is to add an optional per-config-source Load-Stats-Reporter to the GrpcMux, which will be used to send and receive the load-stats. At this time, the only options that will be supported for the `lrs_server` field will be `self` and `ads`.

Note that the current implementation uses stats-latching - a stat (e.g., counter) value is fetched and reset to 0 immediately. This makes sharing of stats between different load-report-servers support very challenging, and the goal is not to support this.

In scope:
* Add the ability to have a per-config-source load-stats-reporter.
* Support the 'self' value for 'lrs_server'.
* Support the 'ads' value for 'lrs_server'.

Plan:
- [ ] Add an optional per-GrpcMux Load-Stats-Reporter.
- [ ] Support per-Cluster defined Load-Stats-Reporter.
- [ ] Support the 'self' configuration that will send the load-report to the server that sent the cluster.
- [ ] Support the 'ads' configuration that will send the load-report to the ADS-server.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.