Manual-install robustness: defensive preflight, honest failure reporting, clear
actionable errors, and Ubuntu 26.04 support. Validated by real installs on
Ubuntu 24.04 and 26.04.
Added
- Ubuntu 26.04 support. Preflight now admits 22.04/24.04/26.04 (was a
hard block on anything but 22.04/24.04). A unified/etc/os-releaseparser
(ID + VERSION_ID) replaces the two divergent parsers; a genuinely-unsupported
OS fails with a message naming the detected OS + the supported set. Validated:
a full install on Ubuntu 26.04 reaches a Ready control-plane node (k8s 1.35.4,
containerd 2.2.2). - Preflight checks with clear remedies: not-root, CPU arch (amd64/arm64),
swap enabled, required ports in use (6443/10250/2379/2380/6446 + udp
51820/8472), clock/NTP skew, and Nodeward host:port reachability (classifies
DNS-fail vs refused vs firewall). Cheap/local checks run before network ones.
Fixed
- Honest failure reporting (the "install said success but the node never came
up" bug). The on-node installer now checks the exit code of every step
(register + install were previously unchecked) and only prints the success
banner if all passed; otherwise it prints aFAILED: <step>block and exits
non-zero. Theinstall/registercobra commands now exit non-zero on failure
(were exit 0),log.Fatalf/panicon recoverable errors are replaced with a
structuredFAILED: <step> — Cause — Tryblock, and gRPC registration errors
map to actionable messages (bad/expired token, bad --aid, Nodeward
unreachable). - Register flag validation: empty/missing
--token/--aid/--serverare
rejected up front (an empty--serverno longer silently persists an empty
Nodeward host).