This message on the GKE ingress:
Warning Translate 42m (x25 over 63m) loadbalancer-controller Translation failed: invalid ingress spec: service "<namespace>/<servicename>" is type "ClusterIP",
expected "NodePort" or "LoadBalancer"; service "<namespace>/<servicename>" is type "ClusterIP", expected "NodePort" or "LoadBalancer"; service "<namespace>/<servicename>" is type "ClusterIP", expected "NodePort" or "LoadBalancer"; service "<namespace>/<servicename>" is type "ClusterIP", expected "NodePort" or "LoadBalan
cer"; service "<namespace>/<servicename>" is type "ClusterIP", expected "NodePort" or "LoadBalancer"
What this actually means is that the network endpoint groups are not being created automatically, so, without a NEG, the load balancer would need an exernal ip and port to reach the pods.
You can assert that by the absence of the NEG status annotation on the ingress and also in the backend service.
If you are using shared VPC, this is expected behavior.
It's necessary to add an annotation to force the NEG creation:
cloud.google.com/neg: '{"ingress": true}'