With Kairos you can build immutable, bootable Kubernetes and OS images for your edge devices as easily as writing a Dockerfile. Optional P2P mesh with distributed ledger automates node bootstrapping and coordination. Updating nodes is as easy as CI/CD: push a new image to your container registry and let secure, risk-free A/B atomic upgrades do the rest.
Documentation |
Contribute |
---|---|
📚 Getting started with Kairos |
AuroraBoot
is an automatic boostrapper for Kairos
:
- Download release assets in order to provision a machine
- Prepare automatically the environment to boot from network
- Provision machines from network with a version of Kairos and cloud config
- Customize The installation media for installations from USB
Check out the full reference of AuroraBoot in our documentation.
AuroraBoot
can be used with its container image to provision machines on the same network that will attempt to netboot.
For instance, in one machine from your workstation, you can run:
$ docker run --rm -ti --net host quay.io/kairos/auroraboot --set "artifact_version=v2.4.2" --set "release_version=v2.4.2" --set "flavor=rockylinux"--set "flavor_release=9" --set repository="kairos-io/kairos" --cloud-config /....
And then start machines attempting to boot over network.
This command will:
- Download all the needed artifacts
- Create a custom ISO with the cloud config attached to drive automated installations
- Provision Kairos from network, with the same settings
Auroraboot can also boostrap nodes by using custom container images or the official kairos releases, for instance:
docker run -v /var/run/docker.sock:/var/run/docker.sock --rm -ti --net host quay.io/kairos/auroraboot --set container_image=docker://quay.io/kairos/rockylinux:9-core-amd64-generic-v2.4.2
This command will:
- Use the image in the docker daemon running in the local host to boot it over network
- Create a custom ISO with the cloud config attached to drive automated installations
- Provision Kairos from network, with the same settings
If you don't have a running docker daemon, Auroraboot can also pull directly from remotes, for instance:
docker run --rm -ti --net host quay.io/kairos/auroraboot --set container_image=quay.io/kairos/rockylinux:9-core-amd64-generic-v2.4.2
This command will:
- Pull an image remotely to boot it over network
- Create a custom ISO with the cloud config attached to drive automated installations
- Provision Kairos from network, with the same settings
To disable netboot, and allow only ISO generation (for offline usage), use --set disable_netboot=true
:
docker run -v /var/run/docker.sock:/var/run/docker.sock --rm -ti --net host quay.io/kairos/auroraboot --set container_image=quay.io/kairos/rockylinux:9-core-amd64-generic-v2.4.2 --set disable_netboot=true
AuroraBoot
takes configuration settings either from the CLI arguments or from a YAML
configuration file.
A configuration file can be for instance:
artifact_version: "v2.4.2"
release_version: "v2.4.2"
container_image: "..."
flavor: "rockylinux"
flavor_release: "9"
repository: "kairos-io/kairos"
cloud_config: |
Any field of the YAML
file, excluding cloud_config
can be configured with the --set
argument in the CLI. And by passing "-" to --cloud-config
, the cloud config can be passed from the STDIN, for example:
cat <<EOF | docker run --rm -i --net host quay.io/kairos/auroraboot \
--cloud-config - \
--set "container_image=quay.io/kairos/kairos-opensuse-leap:v1.5.1-k3sv1.21.14-k3s1"
#cloud-config
install:
device: "auto"
auto: true
reboot: true
hostname: metal-bundle-test-{{ trunc 4 .MachineID }}
users:
- name: kairos
# Change to your pass here
passwd: kairos
ssh_authorized_keys:
# Replace with your github user and un-comment the line below:
- github:mudler
k3s:
enabled: true
# Specify the bundle to use
bundles:
- targets:
- run://quay.io/kairos/community-bundles:system-upgrade-controller_latest
- run://quay.io/kairos/community-bundles:cert-manager_latest
- run://quay.io/kairos/community-bundles:kairos_latest
kairos:
entangle:
enable: true
EOF
AuroraBoot now includes experimental support for deploying ISOs to servers using the RedFish protocol. This feature allows you to remotely deploy ISOs to servers that support the RedFish API, including various hardware vendors.
Note: This is an experimental feature and requires testing with actual hardware. Use with caution in production environments.
# Deploy an ISO to a PiKVM server (DMTF implementation)
auroraboot redfish deploy --endpoint https://pikvm.example.com --username admin --password password --vendor dmtf --verify-ssl true path/to/iso
# Deploy an ISO to a PiKVM server (DMTF implementation)
docker run --rm -v /path/to/iso:/iso quay.io/kairos/auroraboot redfish deploy --endpoint https://pikvm.example.com --username admin --password password --vendor dmtf --verify-ssl true /iso
generic
: Generic RedFish implementationsupermicro
: SuperMicro serversilo
: HPE iLO serversdmtf
: DMTF-compliant servers (e.g., PiKVM)
--min-memory
: Minimum required memory in GiB (default: 4)--min-cpus
: Minimum required CPUs (default: 2)--required-features
: Required hardware features (default: UEFI)--timeout
: Operation timeout (default: 30m)
Note
- Specyfing a
container_image
takes precedence over the specified artifacts.