Help running Booklist demo on Docker Edge Kubernetes

I am a Sr. Engineer evaluating Istio for a use on our project. I am new to Istio. I am running Kubernetes from Docker for Mac (Edge release). The booklist app deploys perfectly and I have confirmed the service is responding. But I have not been able to access it externally at all. As per the documents I first checked if there was a load balancer in place and saw localhost was the IP address. I assigned this as the host per the documents. I also found the port to 80. (I dont see any option on Docker Edge to open port 80 before starting Kubernetes) Not sure what the issue is. It does not say connection refused so it seems the port is open. Port 80 is generated from

 export INGRESS_PORT=$(kubectl -n istio-system get service istio- ingressgateway -o jsonpath='{.spec.ports[?("http2")].port}')

I have followed the Istio documents to a tee, but cannot access the service from the outside via browser or curl no matter what I try.

I really want to move onto other features of the product but I am stuck on this. What am I missing? There is documentation for Docker on Consul but thats not the same as Docker Edge which is just a version of Docker app running on the Mac with Kubernetes integrated.

curl -v -s | grep -o "<title>.*</title>"
  • Trying…


  • Connected to ( port 80 (#0)

GET /productpage HTTP/1.1


User-Agent: curl/7.54.0

Accept: /

  • Empty reply from server

  • Connection #0 to host left intact

Hello @Steven_O_brien

I just verified with a new Istio 1.1.7 install on my Docker for Mac Edge release. I installed Istio with the customizable install with Helm instructions, installed BookInfo, including the directions on setting INGRESS_HOST and INGRESS_PORT (and this getting the GATEWAY_URL).

The documented curl works fine:

curl -s http://${GATEWAY_URL}/productpage | grep -o "<title>.*</title>"             
<title>Simple Bookstore App</title>

And I get at the pages in the browser at for example: http://localhost/productpage

Maybe the missing piece is: export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') as documented on in the note where the loadbalancer is using host name instead of an IP (see EXTERNAL-IP below).

From the services:

kubectl get svc istio-ingressgateway -n istio-system                                                                                                     
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                                                                                      AGE
istio-ingressgateway   LoadBalancer   localhost     15020:32199/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:32681/TCP,15030:31876/TCP,15031:30851/TCP,15032:31176/TCP,15443:30982/TCP   9m35s