"Running on Docker with Consul or Eureka" ?

7/21/2018

I'm trying to run the Istio demo application+consul on my 3 node K8s cluster.

I'm following this guide: https://istio.io/docs/guides/bookinfo/ , section "Running on Docker with Consul or Eureka"

But Istio's consul demo fails like this:

root@kubemaster:~/istio-0.8.0# docker-compose -f samples/bookinfo/consul/bookinfo.yaml up -d
ERROR: Network consul_istiomesh declared as external, but could not be   found. Please create the network manually using `docker network create consul_istiomesh` and try again.

But then I create the network as advised by the error message:

root@kubemaster:~/istio-0.8.0# docker network create consul_istiomesh 
b137f18c35c21b7bb3129cf5f3984c81fe270dfec35906c1611ffe249ef336c1

But then I get this error:

root@kubemaster:~/istio-0.8.0# docker-compose -f samples/bookinfo/consul/bookinfo.yaml up -d
Creating consul_productpage-v1_1
Creating consul_reviews-v3_1
Creating consul_details-v1_1
Creating consul_reviews-v1_1
Creating consul_ratings-v1_1
Creating consul_reviews-v2_1

ERROR: for productpage-v1  user specified IP address is supported only when connecting to networks with user configured subnets
Traceback (most recent call last):
File "/usr/local/bin/docker-compose", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", 
line 63, in main
log.error(e.msg)
AttributeError: 'ProjectError' object has no attribute 'msg'

What to do ?

-- Traiano Welcome
istio
kubernetes

1 Answer

7/22/2018

What to do ?

Although technically you can mix manually managed docker containers and Kubernetes managed containers It is not really proper approach unless you absolutely need to do so... If your istio is running in Kubernetes, it would make sense to rewrite docker-compose to k8s manifests (or use help of conversion tools) keeping in mind differences such as service references and such...

With that said, you can run them side-by-side (if you need to) but you must take into account exposed endpoints/services and it would be a bit hassle to untangle network setup.

So you can do two things:

  • adjust docker-compose and istio k8s service manifests to talk to each other or
  • rewrite docker-compose to k8s manifests and run everything in cluster
-- Const
Source: StackOverflow