gRPC relies on HTTP/2 for multiplexing requests and is required for bi-directional streaming. However, intermediate infra components (load balancers, proxy, etc.) could be incompatible with HTTP/2 and may downgrade to HTTP/1.1. For these cases, we provide an option to use gRPC over WebSocket for bi-directional streaming that doesn't require HTTP/2. https://github.com/stackrox/go-grpc-http1 handles the translation between gRPC and WebSocket.
Flags to enable WebSocket
Update the principal and the agent code to use the go-grpc-http1 client if the flag is enabled
e2e tests with a HTTP/2 incompatible reverse proxy
gRPC relies on HTTP/2 for multiplexing requests and is required for bi-directional streaming. However, intermediate infra components (load balancers, proxy, etc.) could be incompatible with HTTP/2 and may downgrade to HTTP/1.1. For these cases, we provide an option to use gRPC over WebSocket for bi-directional streaming that doesn't require HTTP/2. https://github.com/stackrox/go-grpc-http1 handles the translation between gRPC and WebSocket.