如何为 GRPC 服务配置 haproxy-ingress
How to configure haproxy-ingress for serving GRPC
有没有人成功配置 Haproxy 入口控制器以在后端为 GRPC 服务器提供服务
GRPC Client ----> Ingress ----> GRPC Server (k8s Service) --> GRPC Server( Pod)
我尝试按照此处的文档进行配置 (https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/ and https://haproxy-ingress.github.io/docs/configuration/keys/#backend-protocol)
不是working as expected。想检查我是否在这里遗漏了一些配置
gRPC 在 h2 之上工作,出于兼容性原因,客户端和服务器需要就他们想要使用的 http 协议版本达成一致。在 haproxy 中,这是使用 bind
行中的 alpn 关键字完成的,它仅适用于 TLS 连接。默认情况下,HAProxy Ingress 使用 h2,http1.1
配置 alpn,允许客户端开箱即用的 h2 和 gRPC - 但仅限于 https 连接。
如果您使用纯 http,客户端和服务器无法就协议达成一致,并且使用的默认版本是 http1。您可以使用 :80 proto h2
覆盖此配置 bind-http
的行为,但这应该会破坏 http1 客户端。
有没有人成功配置 Haproxy 入口控制器以在后端为 GRPC 服务器提供服务
GRPC Client ----> Ingress ----> GRPC Server (k8s Service) --> GRPC Server( Pod)
我尝试按照此处的文档进行配置 (https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/ and https://haproxy-ingress.github.io/docs/configuration/keys/#backend-protocol)
不是working as expected。想检查我是否在这里遗漏了一些配置
gRPC 在 h2 之上工作,出于兼容性原因,客户端和服务器需要就他们想要使用的 http 协议版本达成一致。在 haproxy 中,这是使用 bind
行中的 alpn 关键字完成的,它仅适用于 TLS 连接。默认情况下,HAProxy Ingress 使用 h2,http1.1
配置 alpn,允许客户端开箱即用的 h2 和 gRPC - 但仅限于 https 连接。
如果您使用纯 http,客户端和服务器无法就协议达成一致,并且使用的默认版本是 http1。您可以使用 :80 proto h2
覆盖此配置 bind-http
的行为,但这应该会破坏 http1 客户端。