envoyproxy/envoy

Proposal: add config blob discovery

Open

#11.547 aberto em 10 de jun. de 2020

Ver no GitHub
 (18 comments) (0 reactions) (0 assignees)C++ (5.373 forks)batch import
area/xdsdesign proposalhelp wanted

Métricas do repositório

Stars
 (27.997 stars)
Métricas de merge de PR
 (Mesclagem média 8d) (378 fundiu PRs em 30d)

Description

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.

Guia do colaborador