Revision history for Rex-Rancher
0.002 2026-09-24 20:39:38Z
- Cilium is the only CNI and replaces kube-proxy unless cilium => 0: rke2
gets cni: none and disable-kube-proxy; k3s now gets flannel-backend:
none, disable-network-policy, disable-kube-proxy and cluster-cidr
10.42.0.0/16, and Cilium runs with kubeProxyReplacement, its
cluster-pool on that range and k8sServiceHost at the new
k8s_service_host (default: first tls_san; a k3s deploy without one
dies before touching the host). gateway_api works on k3s too. Before,
k3s ran Flannel and kube-proxy under Cilium; re-running an existing k3s
cluster switches both off, and install_cilium with a kubeconfig dies
rather than change a deployed release's ipam.mode, so redeploy it
instead. cilium => 0 skips Cilium and leaves the distribution's CNI;
cilium_*/gateway_api/k8s_service_host options with it die. K3s carries
the configuration kubernetes-ocp verified live but is not yet run live
through Rex::Rancher; RKE2 is the supported distribution.
- k3s servers and agents are no longer started by the install script
(its blocking restart hung on an unreachable server) but restarted with
--no-block and waited on for at most 10 minutes, like rke2.
- install_cilium reads the Helm release via kubeconfig: install, upgrade,
purge a stale release or no-op. New helm_values and gateway_api options
(gateway_api_version; gateway_api_channel, default experimental so
Cilium up to 1.16 keeps TLSRoute), passed through by
rancher_deploy_server. gateway_api on rke2 disables RKE2 v1.37's
rke2-gateway-api-crd chart; install_cilium dies while it owns the CRDs.
- New install_server/rancher_deploy_server options version, node_name and
disable; install_method => 'artifact' (checksum-verified download) for
server and agent. Pinned versions are verified after install; a service
that fails to start dies with its journal tail.
- Default disables: rke2 rke2-ingress-nginx, rke2-traefik, rke2-traefik-crd
(RKE2 v1.36+ ships Traefik); k3s traefik, servicelb via config.yaml.
- Tokens: without one, install_server reuses the host's existing server
token instead of rotating it; K3s gets it via config.yaml only.
config.yaml and registries.yaml are written 0600 root:root.
- New gpu_setup and gpu_device_plugin options (default on) for gpu => 1,
to leave the host setup and/or device plugin to the NVIDIA GPU Operator
(Rex::GPU is then not needed), and nvidia_runtime_path (rke2, on for
gpu_setup => 0) for a host-installed NVIDIA runtime (DGX OS).
- Document gpu => 1 with newer Rex::GPU ("GPU hardware support"):
generation-based driver choice, Kepler-only nodes deploy without a GPU,
vGPU guests without a working licensed driver die, B200/B300 warn about
the NVLink fabric; a die comes before any driver package is installed,
but not necessarily before every host change.
- New rancher_scan_known_hosts($host) seeds known_hosts via ssh-keyscan for
Rex::LibSSH >= 0.004's host-key check (CWE-322), used from a 'before ALL'
hook; see eg/hetzner-gpu.Rexfile.
- Warn when the saved kubeconfig would still point at 127.0.0.1.
- rancher_deploy_agent dies on a missing server or token before touching
the host, and dies with the LibSSH hint on an SFTP-less host like
rancher_deploy_server.
- New install_agent/rancher_deploy_agent option node_labels (node-label in
the agent's config.yaml, as on the server).
- Requires Kubernetes::REST and IO::K8s 1.108; declare
YAML::PP and JSON::MaybeXS. Rex::LibSSH is now only recommended: needed
for SFTP-less hosts, not for hosts with SFTP (Rex's OpenSSH backend).
- rancher_deploy_server with kubeconfig_file dies, naming the cause, when
the kubeconfig cannot be fetched or written or the API does not answer
within wait_for_api's timeout, instead of carrying on to Cilium and the
device plugin.
- openSUSE/SLES documented as unverified; agent options and node
preparation steps documented accurately.
- eg/hetzner-gpu.Rexfile reduced to working tasks.
0.001 2026-03-29 04:21:30Z
- Initial release
- RKE2 and K3s server/agent installation with unified config interface
- Node preparation (hostname, NTP, sysctl, kernel modules, swap disable)
- Cilium CNI installation and upgrades (idempotent: safe to re-run)
- Registry mirror configuration (registries.yaml) with live update support
- Kubernetes API operations via Kubernetes::REST (no kubectl required):
wait_for_api, deploy_nvidia_device_plugin, untaint_node
- Full deploy pipeline in rancher_deploy_server:
node prep -> GPU setup -> install -> kubeconfig save -> wait API -> Cilium -> device plugin
- kubeconfig saved locally with 127.0.0.1 patched to real server address
- Optional GPU support via Rex::GPU (gpu => 1, reboot => 1)
- NVIDIA device plugin DaemonSet deployment with nvidia.com/gpu capacity polling
- untaint_node for single-node clusters (removes control-plane/master taints)
- DPkg::Lock::Timeout=120 on apt-get calls for fresh-boot resilience
- Tested on Hetzner dedicated servers (Debian 13, Rocky Linux 10.1, Ubuntu 24.04 LTS)
- Requires Rex::LibSSH for deployment to SFTP-less hosts (common on Hetzner dedicated)
- Optional: Kubernetes::REST + IO::K8s for local K8s API operations
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)