gRPC

    • The gRPC runtime for some languages is relatively immature. Envoy supports a gRPC that allows gRPC requests to be sent to Envoy over HTTP/1.1. Envoy then translates the requests to HTTP/2 for transport to the target server. The response is translated back to HTTP/1.1.
    • gRPC-Web is supported by a filter that allows a gRPC-Web client to send requests to Envoy over HTTP/1.1 and get proxied to a gRPC server. It’s under active development and is expected to be the successor to the gRPC .

    In addition to proxying gRPC on the data plane, Envoy make use of gRPC for its control plane, where it fetches configuration from management server(s) and also in filters, for example for or authorization checks. We refer to these as gRPC services.

    The Envoy gRPC client is a minimal custom implementation of gRPC that makes use of Envoy’s HTTP/2 upstream connection management. Services are specified as regular Envoy clusters, with regular treatment of , endpoint discovery//load reporting, circuit breaking, , outlier detection. They share the same mechanism as the Envoy data plane. Similarly, cluster statistics are available for gRPC services. Since the client is minimal, it does not include advanced gRPC features such as or gRPC-LB lookaside.

    It is recommended to use the Envoy gRPC client in most cases, where the advanced features in the Google C++ gRPC client are not required. This provides configuration and monitoring simplicity. Where necessary features are missing in the Envoy gRPC client, the Google C++ gRPC client should be used instead.