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