Decoding gRPC Messages using Envoy
Envoy External Processing Filter which decodes and alters gRPC messages.
In this flow, the envoy filter will recieve gRPC messages from clients over TLS, then decode and send an altered message to the gRPC Server.
This sample builds ontop of these articles:
- Envoy External Processing Filter
- gRPC Unary requests the hard way: using protorefelect, dynamicpb and wire-encoding to send messages
Basically, the external filter decode the grpc wireformat message into byte messages using ("github.com/psanford/lencode"
), then proto.Unmarshal
that into an actual gRPC message we can inspect.
Appendix
TODO: see if we can create a wasm filter to do the same (which isn’t that easy since we need to decode the wireformat)