If you are running a traditional K8S ingress behind a Layer 7 GKE LB, you can absolutely run an Istio-ingress-gateway as the backend service of your K8S ingress. Try it, it works.
You will run into issues with your GKE LB health check port because Google is persnickety about the health check port being the same as your service, but you can handle that with a virtual service, something like this:
I can’t use the istio-ingress-gateway, I must have the GKE LB hit my service directly.
I tried changing the inbound| cluster of my service with EnvoyFilter (with workloadSelector), but it seems that proto.Merge only adds to circuitbreakers.thresholds array instead of overwriting.