Ultimately, they are designed to achieve the same goal. Initially, Kubernetes did not have such a concept, and therefore in OpenShift the concept of Route was developed, as well as bits to provide a load balancing proxy, etc. Over time, it was considered useful to have something similar in Kubernetes, so using OpenShift's Route as a starting point for what could be done, Ingress was designed for Kubernetes. In the Ingress version, they used a more general system of rules, so as you point out, they look different, but the goal is to be able to do the same effectively.
source share