Hacker News new | ask | show | jobs
by SlavikCA 210 days ago
Reading few blogs and forums about it today - people talking about switching to Gateway API (from "legacy" Ingress).

And I do not understand it:

1. Ingress still works, it's not deprecated.

2. There a lot of controllers, which supports both: Gateway API and Ingress (for example Traefik)

So, how Ingress Nginx retiring related / affects switch to Gateway API?

4 comments

1) ingress still works but is on the path to deprecation. It's a super popular API, so this process will take a lot of time. That's why service meshes have been moving to Gateway API. Retiring ingress-nginx, the most popular ingress controller, is a very loud warning shot.

2) see (1).

It doesn't but Kubernetes team was kind of like "Hey, while you are switching, maybe switch away from Ingress API?"
Ingress as defined by Kubernetes is really restricted if you need to do rewriting, redirecting and basically all the stuff we've been doing in pre-Kubernetes times. Nginx Ingress Controller worked around that by supporting a ton of annotations which basically were ingested into nginx.conf, to the point that any time you had a need everyone just assumed you were using nginx-ingress and recommended an annotation or two.

In a way, it was a necessity, since Ingress was all you'd get and without stuff like rewriting, doing gradual Kubernetes migrations would have been much more difficult to impossible. For that reason, every ingress controller tried to go a similar, but distinctly different way, with vastly incompatible elements, failing to gain traction. In a way I'm thankful they didn't try to reimplement nginx annotations (apart from one attempt I think), since we would have been stuck with those for foreseeable future.

Gateway API is the next-gen standardized thing to do ingress, pluggable and upgradable without being bound to a Kubernetes version. It delivers _some_ of the most requested features for Ingress, extending on the ingress concept quite a bit. While there is also quite a bit of mental overhead and concepts only really needed by a handful of people, just getting everyone to use one concept is a big big win for the community.

Ingress might not be deprecated, but in a way it was late to the party back in the day (OpenShift still has Route objects from that era because ingress was missing) and has somewhat overstayed its welcome. You can redefine Ingress in terms of Gateway API and this is probably what all the implementers will do.

I think it's that Gateway is new (relatively speaking) so there's a lot of places it's a good fit that haven't adopted it yet.