# to run define K3S_TOKEN, K3S_VERSION is optional, eg: # K3S_TOKEN=${RANDOM}${RANDOM}${RANDOM} docker compose -f k3s.yml up -d services: server: image: "rancher/k3s:${K3S_VERSION:-latest}" command: server --disable-agent --disable traefik tmpfs: - /run - /var/run ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 privileged: true restart: always environment: - K3S_TOKEN=${K3S_TOKEN:?err} - K3S_KUBECONFIG_OUTPUT=/output/kubeconfig.yaml - K3S_KUBECONFIG_MODE=666 volumes: # k3s will generate a kubeconfig.yaml in this directory. This volume is mounted # on your host, so you can then 'export KUBECONFIG=/somewhere/on/your/host/out/kubeconfig.yaml', # in order for your kubectl commands to work. - ./config:/output # This directory is where you put all the (yaml) configuration files of # the Kubernetes resources. - k3s-server:/var/lib/rancher/k3s ports: - 6443:6443 - 80:80 # Ingress controller port 80 - 443:443 # Ingress controller port 443 node: image: "rancher/k3s:${K3S_VERSION:-latest}" tmpfs: - /run - /var/run ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 privileged: true restart: always links: - server environment: - K3S_TOKEN=${K3S_TOKEN:?err} - K3S_URL=https://server:6443 volumes: # this is where you would place a alternative traefik image (saved as a .tar file with # 'docker save'), if you want to use it, instead of the traefik:v3.0 image. - k3s-agent:/var/lib/rancher/k3s volumes: k3s-server: {} k3s-agent: {}