Can't get ingress working with standard Ingress objects


I am trying to move away from Istio Gateway/VirtualService objects for ingress and use standard Kubernetes Ingress objects instead as documented here.

I believe I have followed all of the steps but cannot get Istio Ingress Gateway to detect the Ingress objects and istiod is logging:
configuration is invalid: gateway must have at least one server
and the Istio Ingress Gateway does not start listening.

I tried creating a single “catch-all” Gateway (still with no VirtualServices) and although the Ingress Gateway does start listening every request is 404, even things that should be matched by the Ingress object.

I also tried setting the meshConfig.ingressControllerMode property to DEFAULT and then tried different combinations of the annotation and ingressClassName property but nothing seems to make a difference (I have manually created the Istio IngressClass)

Are there any steps anybody can think of that I might have missed, or any ideas on how to debug this further, please?

Thanks in advance.