<p>I am new to Kubernetes and wanted to understand how I can expose a service running in Kubernetes to the outside world. I have exposed it using a NodePort on the cluster. 
So, for example: A service exposes port 31234 on the host and I can get to the service from another server through <a href="https://kubeserverIP:31234" rel="noreferrer">https://kubeserverIP:31234</a>.</p>

<p>What I want to achieve is serve this service through nginx (on a different server, out of Kube control) via a url,say, <a href="http://service.example.com" rel="noreferrer">http://service.example.com</a>. I have tried deploying nginx with an upstream pointing to the service but that is not working and get a bad gateway error. </p>

<p>Is there something which I am missing here? Or is there a neater way of achieving this.</p>

<p>I have a baremetal installation of Kubernetes cluster and have no access to gce load balancer or other vendor LBs.</p>

<p>Thanks</p>

devops84uk
<p>You're almost there! Your next step will be to setup a <a href="https://kubernetes.io/docs/concepts/services-networking/ingress/" rel="noreferrer">ingress controller</a>. There is an NGINX Ingress controller plugin that you can checkout <a href="https://github.com/kubernetes/ingress-nginx" rel="noreferrer">here</a>. </p>

<p>Edit: Here's an example configuration: <a href="https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example" rel="noreferrer">https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example</a></p>
