envoyproxy/envoy

Envoy should be able to describe (Wasm) ABIs it supports

Open

#10 395 ouverte le 15 mars 2020

Voir sur GitHub
 (3 commentaires) (0 réactions) (0 assignés)C++ (5 373 forks)batch import
area/wasmhelp wanted

Métriques du dépôt

Stars
 (27 997 stars)
Métriques de merge PR
 (Merge moyen 8j) (378 PRs mergées en 30 j)

Description

Title: Envoy should be able to describe (Wasm) ABIs it supports

Context:

  • consider a use case of a marketplace with Wasm extensions for Envoy
  • from a user perspective, it's important to know whether a given extension is supported by a particular Envoy distribution he is using right now
  • the assumption is that an answer like "use Envoy vX.Y.Z+" is not good enough (a user might be using either a 3rd party closed source Envoy distro, or a nightly build of upstream Envoy, etc)

Proposal:

  • Add to Envoy the ability to describe (Wasm) ABIs it supports
  • The initial focus is on the offline scenario where it is a user, or a marketplace, or a vendor, who needs to know this info
  • The online scenario, where it is a Control Plane who needs to know this info, is currently out of scope

Example use cases:

  • a user runs envoy --list-abis to get the precise list of (Wasm) ABIs this particular Envoy distro supports, e.g.
    envoy:
      version:
       ... 
      abis:
        v1:
          host:
            network_filter:
              ...
            http_filter:
              ...
            access_log:
              ...
            http_client:
              proxy_http_call:   SUPPORTED
            grpc_client:
              proxy_grpc_call:   SUPPORTED
              proxy_grpc_stream: SUPPORTED
              proxy_grpc_send:   SUPPORTED
            tcp_client:
              ...
            udp_client:
              ...
          ...
          extension:
            network_filter:
              ...
            http_filter:
              ...
            access_log:
              ...
            http_client:
              proxy_on_http_call_response:           SUPPORTED
            grpc_client:
              proxy_on_grpc_create_initial_metadata: SUPPORTED
              proxy_on_grpc_receive:                 DEPRECATED
            tcp_client:
              ...
            udp_client:
              ...
          ...
    
  • a user then comes to a marketplace site, provides info from above and gets back the exact info on what extensions (and their versions) are applicable to him
  • a marketplace runs envoy --list-abis on popular Envoy distributions (e.g. upstream, getenvoy, istio, solo, etc) to provide compatibility info in advance
  • a vendor of a closed source Envoy distribution runs envoy --list-abis on his own binaries and submits this info to a marketplace in order to be present in the compatibility matrix for each extension in the catalog

Guide contributeur