New
- External node pools can now be used with the Hetzner private network. Nodes that are not Hetzner Cloud instances — Robot dedicated servers, or machines from any other provider — can join a cluster that uses private networking by being given a routed private address: set
networking.private_network.external_routing: trueand addipto each entry inexternal.nodes. hetzner-k3s verifies that the address is actually assigned to a local interface on the node before installing anything, uses it for--node-ip, advertises the SSH endpoint as the node's external IP when the two differ, and picks the interface Flannel should use.hetzner-k3s runalso resolves these nodes correctly. - by @deubert-it - The docs now cover the operational requirements of that setup: bidirectional reachability between the routed addresses, the API server/kubelet/CNI ports that must be reachable, encapsulation versus native routing, MTU sizing, and the fact that addressing already installed on a node is not migrated by editing the config. - by @deubert-it
Improvements
- External node pools are validated up front:
external_routingrequires private networking and at least one external pool, andexternal.nodes[].ipis only accepted when routing is enabled, so a mistyped config fails immediately instead of producing unreachable nodes. - by @deubert-it - Added an offline spec suite for the generated install scripts (39 examples) that runs the real generators and executes the generated shell with stubbed network commands, pinning the addressing and provider-ID behaviour. - by @deubert-it
docs/Setting_up_a_cluster.md: added theconfig_format_versionfield to the sample config. - by @matteo0402
Upgrading
- No action required.
networking.private_network.external_routingdefaults tofalse; with it disabled, master and worker install scripts are identical to the previous release, which was verified by rendering and executing both versions against existing production configs.
If hetzner-k3s is useful to you or your company, please consider sponsoring its development.
Sponsorship helps ensure continued maintenance and new features. Thank you to our current sponsors! 🙏