Caution
WORK IN PROGRESS
Immutable Installer is a Kubernetes installer for the SIGHUP Distribution (SD) that provides several Ansible roles to create a Kubernetes cluster on top of Flatcar Container Linux machines.
If you are new to SD please refer to the official documentation on how to get started with SD.
Immutable Installer uses a collection of open source tools to create a Kubernetes cluster on top of Flatcar Container Linux machines preconfigured using the sysupdate-sysext from the installer-immutable-sysext repository.
The following roles are included in the SIGHUP Distribution Immutable Installer:
| Role | Description |
|---|---|
| containerd | Ansible role to configure containerd as container runtime |
| etcd | Ansible role to configure etcd standalone or in the control plane machines |
| haproxy | Ansible role to configure HAProxy as load balancer for the APIServer (and other) |
| keepalived | Ansible role to configure keepalived for a shared Virtual IP between nodes (HA) |
| kube-control-plane | Ansible role to configure control-plane nodes |
| kube-worker | Ansible role to configure worker nodes and join them to the cluster |
| sysctl | Ansible role to configure kernel paramaters on the machines |
Click on each package to see its full documentation.
This version is compatible with Kubernetes 1.34.4 plus the complete list in the compatibility matrix.
Check the compatibility matrix for additional information about previous releases of the module.
This installer is intended to be used via furyctl and not to be used stand-alone. Use at your own risk.
The repository pins its lint and format toolchain through mise:
mise installThis installs:
yamlfmt0.21.0yamllint1.38.0 (viapipx:)ansible-lint26.4.0 (viapipx:)
Tasks live under [tasks] in mise.toml (no Makefile). Configuration is in .yamlfmt, .yamllint, and .ansible-lint at the repo root.
| Task | What it does |
|---|---|
mise run fmt |
Rewrite YAML files in place with yamlfmt. |
mise run fmt-check |
Check YAML formatting without writing; exits non-zero if changes are needed. |
mise run lint |
Run yamllint and ansible-lint --profile production --strict. |
mise run lint-prod |
Alias of mise run lint (the production profile is the default). |
Note:
mise run lintrunsansible-lintwithprofile: productionandstrict: trueby default — there is no looser local profile. Findings against this profile are tracked as follow-up work and are not gated by this section. Runmise run fmt-check && mise run fmtto clean YAML formatting drift before sending a PR.
If the system already has a broken /usr/bin/ansible-lint, prefer mise exec -- ansible-lint ... or activate mise in your shell so the pinned version wins on PATH.
In case you experience any problems with the installer, please open a new issue.
This module is open-source and it's released under the following LICENSE.