<p>So if I have 10 services that I need to expose to the outside world and use path-based routing to connect to different services, I can create an Nginx pod and service type <code>LoadBalancer</code></p>
<p>I can then create Nginx configurations and can redirect to different services depending upon the URL path. After exploring more, I came to know about Nginx ingress which can also do the same. What is the difference between the two approaches and which approach is better?</p>

<p>In both cases, you are running an Nginx reverse proxy in a Kubernetes pod inside the cluster.  There is not much technical difference between them.</p>
<p>If you run the proxy yourself, you have complete control over the Nginx version and the configuration, which could be desirable if you have very specific needs and you are already an Nginx expert.  The most significant downside is that you need to manually reconfigure and redeploy the central proxy if you add or change a service.</p>
<p>If you use Kubernetes ingress, the cluster maintains the Nginx configuration for you, and it regenerates it based on Ingress objects that can be deployed per-service.  This is easier to maintain if you are not an Nginx expert, and you can add and remove services without touching the centralized configuration.</p>
<p>The Kubernetes ingress system in principle can also plug in alternate proxies; it is not limited to Nginx.  However, its available configuration is somewhat limited, and some of the other proxies I've looked at recommend using their own custom Kubernetes resources instead of the standard Ingress objects.</p>
