<p>Has anyone successful in configuring Haproxy ingress controller for serving a GRPC server in the backend</p>
<p>GRPC Client ----&gt; Ingress----&gt; GRPC Server (k8s Service) --&gt; GRPC Server( Pod)</p>
<p>I tried configuring as per the documentation here (<a href="https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/" rel="nofollow noreferrer">https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/</a> and  <a href="https://haproxy-ingress.github.io/docs/configuration/keys/#backend-protocol" rel="nofollow noreferrer">https://haproxy-ingress.github.io/docs/configuration/keys/#backend-protocol</a>)</p>
<p>It is not <a href="https://github.com/jcmoraisjr/haproxy-ingress/issues/643" rel="nofollow noreferrer">working as expected</a>. Wanted to check if I have missed some configuration here</p>

Alex Punnen
<p>gRPC works on top of h2 and, for compatibility reasons, client and server need to agree about the http protocol version they want to speak. In haproxy this is done using alpn keyword in the <code>bind</code> line, which only works on TLS connections. By default HAProxy Ingress configures alpn with <code>h2,http1.1</code>, allowing h2 and gRPC out of the box in the client side - but only on https connections.</p>
<p>If you're using plain http, client and server doesn't have a way to agree about a protocol, and the default version used is http1. You can overwrite this behavior configuring <a href="https://haproxy-ingress.github.io/docs/configuration/keys/#bind" rel="nofollow noreferrer"><code>bind-http</code></a> with <code>:80 proto h2</code> but this should break http1 clients.</p>
