envoyproxy/envoy

Proposal: add config blob discovery

Open

#11.547 geöffnet am 10. Juni 2020

Auf GitHub ansehen
 (18 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C++ (5.373 Forks)batch import
area/xdsdesign proposalhelp wanted

Repository-Metriken

Stars
 (27.997 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 8T) (378 gemergte PRs in 30 T)

Beschreibung

This proposal is to add a generic Blob Discovery Service that allows the control plane to push arbitrary data blobs and keep them up to date using resource versions. The motivation is Wasm extension files which are realistically on the order of MBs. The current solutions have many issues:

  • inlining MB sized binaries in LDS/RDS config is problematic and can cause head-of-line blocking in ADS;
  • URL fetcher has no interaction with xDS subscriptions. That means first xDS update is always NACKed. URL fetches also retrieves the same resource repeatedly, and does not re-fetch automatically. The failure mode of fetch failing after ACK can be an unrecoverable configuration error.

The API extension is to add a Blob resource reference and Blob config source to RemoteDataSource.

Blob discovery service client would be similar to RDS behavior. It would maintain a list of blobs indexed by references from Wasm and other extensions.

The behavior change in Wasm extensions would be:

  • Wasm issues a subscription for new blob references and puts the underlying listener into warming at first
  • On the first update, the listener is activated
  • On subsequent updates, Wasm performs an internal update (how it does merits more discussion, since creation and draining of VMs is expensive)

It is worth mentioning that BDS can also subsume SDS since the payload is mostly opaque in SDS.

Contributor Guide