K3s
Nodes are deployed and updated using the k3s deploy script.
# Server
curl -sfL https://get.k3s.io | sh -s -
# Agent
curl -sfL https://get.k3s.io | sh -s - agent
All node configuration is handled via (TODO: ref Salt) with configuration separated between shared, agent, server and per-hostname.
/etc/rancher/k3s
├── config.yaml # Shared config
└── config.yaml.d
├── blackstaff.yaml # Per Hostname
└── server.yaml # Server Config
Config settings
config.yaml
flannel-iface: "tailscale0"
prefer-bundled-bin: true
server.yaml
cluster-init: true
write-kubeconfig-mode: 644
secrets-encryption: true
disable:
- traefik
kube-apiserver-arg:
- "audit-log-maxage=30"
hostname.yaml
node-taint: []
node-label:
- homelab.leechpepin.com/os=Debian
- homelab.leechpepin.com/os_family=Debian
- homelab.leechpepin.com/type=server
- homelab.leechpepin.com/location=homelab
Agent config includes the server connection and the token (which is synchronized to the nodes via Salt Mine.