Just deployed bookinfo without sidecar injection and confirmed that this is correct. If you look at istioctl proxy-status, you can see something similar to:
NAME CDS LDS EDS RDS PILOT VERSION
istio-egressgateway-79fbcb8c94-lk75l.istio-system SYNCED SYNCED SYNCED (100%) NOT SENT istio-pilot-7fff84cb-jtxvb 1.1.3
istio-ingressgateway-75d44f97d7-qrrq2.istio-system SYNCED SYNCED SYNCED (100%) SYNCED istio-pilot-7fff84cb-jtxvb 1.1.3
This shows that only istio-ingressgateway and istio-egressgateway have configuration and both are fully synced.
Looking at proxy-config route, we can see:
istioctl proxy-config route istio-ingressgateway-75d44f97d7-qrrq2.istio-system
NOTE: This output only contains routes loaded via RDS.
NAME VIRTUAL HOSTS
This indicates that ingress gateway knows about the http.80 route, which if we examine:
./bin/istioctl proxy-config route istio-ingressgateway-75d44f97d7-qrrq2.istio-system --name http.80 -o json
includes configuration for the bookinfo routes (/productpage, /login, /logout, /api/v1/products). So the ingress gateway knows how to find the bookinfo productpage routes.
However, if you notice from the initial output, there is no configuration in the bookinfo pods. So Istio is “working” in the sense that the ingress gateway knows how to find it, but it’s not working in the sense that you can configure the bookinfo pods themselves.