The k3s Platform
The k3s platform stands up the cluster and the RAN on a bare host with one command, joins further hosts as radio nodes, and can remove everything it installed. It is one platform of several; nothing in the network layer knows about it.
What It Installs
- An upstream k3s release (
versions.yaml,cluster.k3s.version), mirrored into Racora's package registry at release time and verified by checksum on every install. It is never a Racora-built binary. - The RAN payload as a k3s
HelmChartresource written under/var/lib/rancher/k3s/server/manifests/racora/, with the chart package inlined and the platform and core provider overlays asvaluesContent, plus the CRDs out-of-band (racora-crds.yaml) so the cell and subscriber APIs exist before the release. k3s's deploy controller applies both; its helm-controller installs and upgrades the releaseracoraindefault. AHelmChartConfig racorainkube-systemoverrides values. - The node contract on the host: capability labels applied at registration through
/etc/rancher/k3s/config.yaml.d/, thesctpmodule, the selected core provider's host units (ordered onk3s.service, recorded so the uninstall removes exactly those),write-kubeconfig-mode 0644, andkubectlset up for the invoking user. k3s registersRuntimeClass/nvidiaitself when the NVIDIA container toolkit is present. - An ownership record,
/etc/racora/install.env(RACORA_CLUSTER_OWNER=racora, the release, the core provider and its host units), and the scoped uninstall wrappersracora-uninstall.sh(server) andracora-node-uninstall.sh(worker), backed by a persisted copy of the installer under/opt/racora/installer/.
Modes
INSTALL_RACORA_MODE | What happens |
|---|---|
server (default) | optional RF pre-flight (INSTALL_RACORA_PROVISION=check warns; ensure starts the provisioner on an unprovisioned host and exits, re-run once it is RF-ready), k3s server, host units, service (re)start, payload, kubeconfig |
node | provision, then join a worker (K3S_URL, K3S_TOKEN); labels present at first registration |
provision-rf | host provisioning only, platform-independent |
uninstall | scoped removal (INSTALL_RACORA_UNINSTALL_SCOPE, default cluster) |
Every INSTALL_K3S_* and K3S_* variable of the upstream k3s installer still applies,
except that the k3s version comes from the Racora release and the channel variables are
never consulted.
Offline
INSTALL_RACORA_ARTIFACT_PATH=<bundle> installs from a bundle directory assembled by
scripts/fetch-bundle.sh from a release's assets
(what it holds).
The image archive is
staged into /var/lib/rancher/k3s/agent/images/ on servers and workers; a bundle without
one installs only with INSTALL_RACORA_ARTIFACT_NO_IMAGES=1
(Use Your Own Registry or Install Offline).
Upgrade and Uninstall
Re-running the installer on the control node upgrades in place: the binary, the payload and the
host units. racora-uninstall.sh [--scope ran|host|cluster] [--keep-crd] [--keep-data] [--dry-run] removes what its scope owns and never reverses node provisioning
(Upgrade Racora, Uninstall Racora).