The Ingress API is fine as long as you're in the "basic proxying with simple path-based routing" territory, but once you want to do something more serious (route by query string, configure weighted load balancing, work with TLS, deal with methods, etc - let alone other protocols than HTTP) you're kinda stuck with vendor-specific extensions that mostly rely on annotations.
Kong has an implementation of Gateway API for HTTP(S), TCP, UDP, TLS, gRPC that aims to offer a fairly smooth transition from Ingress to Gateway API by supporting both in our Kong Ingress Controller and working on conversion tooling (we're the only provider other than nginx currently available in the ingress2gateway tool). We strongly believe that (at least Kong's implementation of) Gateway API will be much easier to use than Ingress.
You can try out Kong's (certified conformant with Gateway API "core" profile) beta implementation by following [1] for HTTP. There's a guide for gRPC as well, among others [2]. As Kong's implementation of Gateway API [3] is nearing general availability, we're very open to community feedback.
[1] https://docs.konghq.com/kubernetes-ingress-controller/2.12.x...
[2] https://docs.konghq.com/kubernetes-ingress-controller/2.12.x...
Except for weighted load balancing*, these are all things NGINX does, which Kong is built on via OpenResty, right? What makes Kong different? (Trying to be open to explore even though I was disappointed when Insomnia users got locked out of their data unless they signed up for an account when they updated what was marketed as an open source project)
* Which I think NGINX Plus, a competitor, probably has, and they have an Ingress controller for Kubernetes that would likely get updated to use the Gateway API soon.
Especially with some vendor helm charts, it’s often a nightmare if you’re deviating from the base config.
I wonder how developers will be able to develop extensions for it.
The Gateway API is a relatively straightforward implementation of "north-south" traffic and doesn't try to handle "east-west" traffic, limiting its complexity. Its existence means I can use something more sane like Contour, but it's built on common resources that Istio can understand nicely as well, if need be. So the overall advantage is that you can hop between implementations without having to relearn everything from scratch.
My biggest frustration with the Gateway API is actually how extensions are developed: the spec just doesn't (or didn't last time I looked) touch timeouts other than just saying "implementation defined" because of the different ways that's handled currently. To create extensions, just define your own custom resource that does whatever you want not currently covered by the spec.
So the the new Gateway API seem to support more use cases so the user can use a more portable API.
Istio and many other tools already supports this: https://gateway-api.sigs.k8s.io/implementations/#implementat...
Past experience with k8s suggests this hope is prone to being wishful thinking.
More importantly you will want to check your specific Gateway implementation for support.
I guess when traefik goes all-in on gateway (they were one of the earliest with support for it), then it will make sense.
[0]: https://doc.traefik.io/traefik/routing/providers/kubernetes-...