Federation - mudler/ekcp GitHub Wiki
Follow Single-node setup and clone the ekcp repo. Create a docker-compose file for your needs:
Master-slave in a single node:
$> cat > docker-compose-master-slave.yml <<EOF
version: '3'
services:
ekcp-slave:
environment:
- HOST=0.0.0.0
- PORT=8031
- ROUTE_REGISTER=true
- DOMAIN=nip.io
- KUBEHOST=<external_ip>
- FEDERATION_MASTER=http://<master_external_ip>:8030
build: .
network_mode: "host"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
restart_policy:
condition: on-failure
ekcp-master:
environment:
- HOST=0.0.0.0
- PORT=8030
- ROUTE_REGISTER=false
- DOMAIN=nip.io
- KUBEHOST=<master_external_ip> # Tweak this to your lan ip
- FEDERATION=true
build: .
network_mode: "host"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
restart_policy:
condition: on-failure
nats:
image: nats:latest
ports:
- "4222:4222"
- "6222:6222"
- "8222:8222"
deploy:
restart_policy:
condition: on-failure
gorouter:
build: gorouter
ports:
- "8081:8081"
- "8082:8082"
- "8083:8083"
links:
- nats
deploy:
restart_policy:
condition: on-failure
EOF
$> docker-compose -f docker-compose-master-slave.yml up -d
Slave for an already existing federation:
$> cat > docker-compose-slave.yml <<EOF
version: '3'
services:
ekcp-slave:
environment:
- HOST=0.0.0.0
- PORT=8030
- ROUTE_REGISTER=true
- DOMAIN=nip.io
- KUBEHOST=<external_ip>
- CLIENT_TIMEOUT_SECONDS=500 # Timeout for http requests
- EKCP_CONCURRENT_CLUSTERS=2 # Maximum concurrent kind cluster in the same node
- FEDERATION_MASTER=http://<master_external_ip>:8030
image: quay.io/ekcp/ekcp
network_mode: "host"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
restart_policy:
condition: on-failure
nats:
image: nats:latest
ports:
- "4222:4222"
- "6222:6222"
- "8222:8222"
deploy:
restart_policy:
condition: on-failure
gorouter:
image: quay.io/ekcp/gorouter
ports:
- "8081:8081"
- "8082:8082"
- "8083:8083"
links:
- nats
deploy:
restart_policy:
condition: on-failure
EOF
$> docker-compose -f docker-compose-slave.yml up -d