<p>I'm new in k8s world and using Openshift 4.2.18. I want to deploy a microservice on it. What I need is one common ip and being able to access each microservice using virtual path. </p>

<p>Like this,</p>

<ul>
<li><a href="https://my-common-ip/microservice1/" rel="nofollow noreferrer">https://my-common-ip/microservice1/</a> </li>
<li><a href="https://my-common-ip/microservice2/" rel="nofollow noreferrer">https://my-common-ip/microservice2/</a></li>
<li><a href="https://my-common-ip/microservice3/" rel="nofollow noreferrer">https://my-common-ip/microservice3/</a></li>
</ul>

<p>Service and deployment are OK. However I'm so confused with the other terms. Should I use <strong>route</strong> or <strong>ingress</strong>? Should I use <strong>VirtualService</strong> like in <a href="https://raw.githubusercontent.com/Maistra/bookinfo/maistra-1.0/bookinfo-gateway.yaml" rel="nofollow noreferrer">this link</a>? Also heard about <strong>HA-Proxy</strong> and <strong>Istio</strong>. What's the best way of doing this?  I would appreciate it if you could provide the information about these terms.</p>

<p>Thanks in advance,<br> Best Regards</p>

<p>Route and ingress are intended to achieve the same end. Originally Kubernetes had no such concept and so in OpenShift the concept of a Route was developed, along with the bits for providing a load balancing proxy etc. In time it was seen as being useful to have something like this in Kubernetes, so using Route from OpenShift as a starting point for what could be done, Ingress was developed for Kubernetes. In the Ingress version they went for a more generic rules based system so how you specify them looks different, but the intent is to effectively be able to do the same thing.If you intend to deploy your application on multiple Kubernetes distributions at the same time then Ingress might be a good option.</p>

<p>Virtual service and istio is service mesh which is not necessary for external access of an app. You bring complexity with a service mesh. Unless the capabilities offered by a service mesh is really needed for your usecase there is no reason to use it.</p>
