<p>I'm trying to expose a GRPC Java service thought an Ingress to outside world from my GKE cluster.</p>

<p>The problem is that GKE's default implementation creates a health check that expect 200 response code on curling "/". It is expected and documented <a href="https://github.com/kubernetes/ingress/blob/master/docs/faq/gce.md#can-i-configure-gce-health-checks-through-the-ingress" rel="nofollow noreferrer">here</a>.</p>

<p>Unfortunately this seems not to work with <a href="https://github.com/grpc/grpc-java" rel="nofollow noreferrer">grpc-java</a> implementation since it's not handling "/" GET requests.</p>

<p>GRPC itself defines a <a href="https://github.com/grpc/grpc/blob/master/doc/health-checking.md" rel="nofollow noreferrer">health checking protocol</a>. But it's not supported either.</p>

<p>I wonder if there is a similar secret annotation like "kubernetes.io/ingress.global-static-ip-name" but for disabling health checks at least(ideally overriding them).</p>

<p>Seems at the moment GCP HTTP Load Balancers <a href="https://groups.google.com/forum/#!topic/grpc-io/bfURoNLojHo" rel="nofollow noreferrer">doesn't support HTTP/2</a>. So I ended up simply by exposing my service through LoadBalancer instead of NodePort + Ingress.</p>

<p>Note: static IP you provide in <code>loadBalancerIP</code> should be <strong>REGIONAL</strong>. For a multi-region static IP my service's external IP was always in pending state.</p>
