Building a development environment with Docker Compose¶
To follow this how-to you need to have Docker and Compose installed in your machine.
First clone the tsuru project from GitHub:
$ git clone https://github.com/tsuru/tsuru.git
Enter the tsuru
directory and execute build-compose.sh
. It will
take some time:
$ cd tsuru
$ ./build-compose.sh
At the first time you run is possible that api and planb fails, just run docker-compose up -d
to fix it.
$ docker-compose up -d
Now you have tsuru dependencies, tsuru api and one docker node running in your machine. You can check
running docker-compose ps
:
$ docker-compose ps
You have a fresh tsuru installed, so you need to create the admin user running tsurud inside container.
$ docker-compose exec api tsurud root-user-create admin@example.com
Then configure the tsuru target:
$ tsuru target-add development http://127.0.0.1:8080 -s
You need to create one pool of nodes and add node1 as a tsuru node.
$ tsuru pool-add development -p -d
$ tsuru node-add --register address=http://node1:2375 pool=development
Everytime you change tsuru and want to test you need to run build-compose.sh
to build tsurud, generate and run the new api.
If you want to use gandalf, generate one app token and insert into docker-compose.yml file in gandalf environment TSURU_TOKEN.
$ docker-compose stop api
$ docker-compose run --entrypoint="/bin/sh -c" api "tsurud token"
// insert token into docker-compose.yml
$ docker-compose up -d
Kubernetes Integration¶
One can register a minikube instance as a cluster in tsuru to be able to orchestrate tsuru applications on minikube.
Start minikube:
$ minikube start --insecure-registry=10.0.0.0/8
Create a pool in tsuru to be managed by the cluster:
$ tsuru pool add kubepool --provisioner kubernetes
Register your minikube as a tsuru cluster:
tsuru cluster add minikube kubernetes --addr https://`minikube ip`:8443 --cacert $HOME/.minikube/ca.crt --clientcert $HOME/.minikube/apiserver.crt --clientkey $HOME/.minikube/apiserver.key --pool kubepool
Add your kubernetes master as a member of kubepool:
tsuru node update `minikube ip` pool=kubepool
You are ready to create and deploy apps kubernetes.