k3s/docker-compose-ha.yml

56 lines
1.5 KiB
YAML

version: '3'
services:
etcd:
image: quay.io/coreos/etcd
command: /usr/local/bin/etcd -name etcd --data-dir /data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://etcd:2379
volumes:
- etcd:/data
ports:
- 2379:2379
server:
image: rancher/k3s:v0.8.1
command: server --disable-agent --bootstrap write
environment:
- K3S_STORAGE_BACKEND=etcd3
- K3S_STORAGE_ENDPOINT=etcd:2379
- K3S_CLUSTER_SECRET=somethingtotallyrandom
- K3S_KUBECONFIG_OUTPUT=/output/kubeconfig.yaml
- K3S_KUBECONFIG_MODE=666
volumes:
- k3s-server:/var/lib/rancher/k3s
# This is just so that we get the kubeconfig file out
- .:/output
ports:
- 6443:6443
server2:
image: rancher/k3s:v0.8.1
command: server --disable-agent --bootstrap read
# restart to wait for the bootstrap data prepared by the primary server
restart: always
environment:
- K3S_STORAGE_BACKEND=etcd3
- K3S_STORAGE_ENDPOINT=etcd:2379
volumes:
- k3s-server2:/var/lib/rancher/k3s
ports:
- 16443:6443
node:
image: rancher/k3s:v0.8.1
tmpfs:
- /run
- /var/run
privileged: true
environment:
- K3S_URL=https://server:6443
- K3S_CLUSTER_SECRET=somethingtotallyrandom
# Can also use K3S_TOKEN from /var/lib/rancher/k3s/server/node-token instead of K3S_CLUSTER_SECRET
#- K3S_TOKEN=K13849a67fc385fd3c0fa6133a8649d9e717b0258b3b09c87ffc33dae362c12d8c0::node:2e373dca319a0525745fd8b3d8120d9c
volumes:
k3s-server: {}
k3s-server2: {}
etcd: {}