Exposing a service in Kubernetes using nginx reverse proxy

devops84uk picture devops84uk · Jul 11, 2018 · Viewed 17.8k times · Source

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 https://kubeserverIP:31234.

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

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

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

Thanks

Answer

jonfriesen picture jonfriesen · Jul 11, 2018

You're almost there! Your next step will be to setup a ingress controller. There is an NGINX Ingress controller plugin that you can checkout here.

Edit: Here's an example configuration: https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example