Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between a Kubernetes Ingress and a IngressRoute?

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.

like image 761
Ralph Avatar asked Feb 11 '20 21:02

Ralph


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.

like image 93
coderanger Avatar answered Sep 20 '22 09:09

coderanger


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...

like image 34
switchboard.op Avatar answered Sep 20 '22 09:09

switchboard.op