Files
cloudy/kubernetes/k3s.yml
T

64 lines
1.9 KiB
YAML

# to run define K3S_TOKEN, K3S_VERSION is optional, eg:
# export K3S_VERSION=v1.21.4+k3s1
# export K3S_TOKEN=your_secret_token
# export RANDOM="$(openssl rand -hex 8)"
# export RANDOM="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')"
# export K3S_TOKEN=${RANDOM}${RANDOM}${RANDOM}
# docker compose -f k3s.yml up -d
# export KUBECONFIG=$(pwd)/config/kubeconfig.yaml
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: {}