<p>As per these two issues on <code>ingress-nginx</code> Github, it seems that the only way to get grpc/http2 working on port 80 without TLS is by using a custom config template:</p>
<ol>
<li><a href="https://github.com/kubernetes/ingress-nginx/issues/6313" rel="nofollow noreferrer">ingress does not supporting http2 at port 80 without tls #6313</a></li>
<li><a href="https://github.com/kubernetes/ingress-nginx/issues/6736" rel="nofollow noreferrer">Add new annotation to support listen 80 http2 #6736</a></li>
</ol>
<p>Unfortunately I could not find any straightforward examples on how to set-up a custom nginx-ingress config. Here are the links I tried:</p>
<ol>
<li><a href="https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/custom-template/" rel="nofollow noreferrer">Custom NGINX template</a></li>
<li><a href="https://github.com/nginxinc/kubernetes-ingress/tree/v1.11.1/examples/custom-templates" rel="nofollow noreferrer">Custom Templates</a></li>
</ol>
<p>Can anyone help me with the exact steps and config on how to get grpc/http2 working with nginx-ingress on port 80 <strong>without TLS</strong>?</p>

<p>This is a community wiki answer posted for better visibility. Feel free to expand it.</p>
<p>As already mentioned in the comments, the steps to make it work are as follows:</p>
<ol>
<li><p>Launch a separate nginx controller in an empty namespace to avoid issues with the main controller.</p>
</li>
<li><p>Create custom templates, using <a href="https://github.com/nginxinc/kubernetes-ingress/tree/v1.11.1/internal/configs/version1" rel="nofollow noreferrer">these</a> as a reference.</p>
</li>
<li><p>Put them in a <code>ConfigMap</code> like <a href="https://github.com/nginxinc/kubernetes-ingress/tree/v1.11.1/examples/custom-templates#example" rel="nofollow noreferrer">this</a>.</p>
</li>
<li><p>Mount the templates into the controller pod as in this <a href="https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/custom-template/#custom-nginx-template" rel="nofollow noreferrer">example</a>.</p>
</li>
</ol>
