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
Note
- Specyfing a
container_image
takes precedence over the specified artifacts.