diff --git a/README.md b/README.md index 0a52764109..85bb8956a6 100644 --- a/README.md +++ b/README.md @@ -397,6 +397,26 @@ for port 80. If no port is available the load balancer will stay in Pending. To disable the embedded service load balancer (if you wish to use a different implementation like MetalLB) just add `--no-deploy=servicelb` to the server on startup. +Air-Gap Support +--------------- + +k3s supports pre-loading of containerd images by placing them in the `images` directory for the agent before starting, eg: +```sh +sudo mkdir -p /var/lib/rancher/k3s/agent/images/ +sudo cp ./k3s-airgap-images-$ARCH.tar /var/lib/rancher/k3s/agent/images/ +``` +Images needed for a base install are provided through the releases page, additional images can be created with the `docker save` command. + +Offline Helm charts are served from the `/var/lib/rancher/k3s/server/static` directory, and Helm chart manifests may reference the static files with a `%{KUBERNETES_API}%` templated variable. For example, the default traefik manifest chart installs from `https://%{KUBERNETES_API}%/static/charts/traefik-X.Y.Z.tgz`. + +If networking is completely disabled k3s may not be able to start (ie ethernet unplugged or wifi disconnected), in which case it may be necessary to add a default route. For example: +```sh +sudo ip -c address add 192.168.123.123/24 dev eno1 +sudo ip route add default via 192.168.123.1 +``` + +k3s additionally provides a `--resolv-conf` flag for kubelets, which may help with configuring DNS in air-gap networks. + TODO ---- Currently broken or stuff that needs to be done for this to be considered production quality.