I am still learning kubernetes and I stumbled over the objects 'Ingress' and 'IngressRoute'. What is the different between these two objects? Did IngressRoute replace the 'old' Ingress? I am running a Kubernetes Cluster V1.17 with Traefik 2.1. My IngressRoute works fine but I also found blogs explaining how to define an ingress.
2 Answers
Ingress is a shared abstraction that can be implemented by many providers (Nginx, ALBs, Traefik, HAProxy, etc). It is specifically an abstraction over a fairly simple HTTP reverse proxy that can do routing based on hostnames and path prefixes. Because it has to be a shared thing, that means it's been awkward to handle configuration of provider-specific settings. Some teams on the provider side have decided the benefits of a shared abstraction are not worth the complexities of implementation and have made their own things, so far Contour and Traefik have both named them IngressRoute but there is no connection other than similar naming.
Contour handled this fairly well and allowed the two systems to coexist, the Traefik team disregarded our warnings and basically nerfed Ingress to vanilla configs only because they don't see any benefit from supporting it. Can you tell I'm salty about this? Because I definitely am.
Basically Ingress is the official thing but it's imperfect, some people are trying to make a new, better thing but it's not going well.

- 52,400
- 4
- 52
- 75
-
2Also for bonus points is the Router system in OpenShift which inspired the Ingress standard but also still exists because OpenShift has long backwards compat promises. – coderanger Feb 11 '20 at 21:28
-
2Yes it is awkward. It takes me several weeks to figure out how to setup traefik on a bare-metal cluster. So for now I am going with the Traefik IngresRoute which finally works for me. – Ralph Feb 11 '20 at 22:14
-
1Just be aware this limits your ability to use standard tools like the Ingress integration in cert-manager and external-dns (though the latter did add specific support for Contour's CRD eventually). – coderanger Feb 11 '20 at 22:44
-
2With traefik 2.2. the IngressRoute is no longer needed to be used and the reverse proxy can be configured with the core Ingress definition of kubernetes. See also [here](https://github.com/imixs/imixs-cloud/blob/master/doc/INGRESS.md) – Ralph Jul 12 '20 at 10:53
An ingressRoute
is specific to Traefik. It's not native to Kubernetes. It is a Custom Resource Definition which allows you to take advantage of Traefik features not exposed in the Kubernetes ingress
resource
The Traefik docs explain the reasoning behind this.
...the community expressed the need to benefit from Traefik features without resorting to (lots of) annotations, we ended up writing a Custom Resource Definition (alias CRD in the following) for an IngressRoute type...

- 1,878
- 7
- 26
-
1This makes clear why I did not found an explanation on the kubernetes sites. – Ralph Feb 11 '20 at 22:08