Installation • Kubernetes • Key Features • Compatibility • Design • Prebuilt Images • Full Documentation
konfigadm
is a declarative configuration management tool and image builder focused on bootstrapping nodes for container based environments.
Usage:
konfigadm [command]
Available Commands:
apply Apply the configuration to the local machine
build-image Build a new image using the specified image and konfig
cloud-init Exports the configuration in cloud-init format
help Help about any command
minify Resolve all lookups and dependencies and export a single config file
verify Verify that the configuration has been applied and is in a healthy state
version Print the version of konfigadm
Flags:
-c, --config strings Config files in YAML or JSON format
-d, --detect Detect tags to use
-h, --help help for konfigadm
-v, --loglevel count Increase logging level
-t, --tag strings Runtime tags to use, valid tags: debian,ubuntu,redhat,rhel,fedora,redhat-like,debian-like,centos,aws,vmware
-e, --var strings Extra Variables to in key=value format
wget -O /usr/bin/konfigadm https://github.com/flanksource/konfigadm/releases/latest/download/konfigadm && chmod +x /usr/bin/konfigadm
sudo konfigadm apply -c - <<-EOF
kubernetes:
version: 1.21.2
container_runtime:
type: docker
commands:
- kubeadm init
EOF
sudo konfigadm images build --image ubuntu1804 -c - <<-EOF
kubernetes:
version: 1.21.2
container_runtime:
type: docker
cleanup: true
EOF
Cloud Images are downloaded and then configured with --build-driver
2 drivers are supported:
qemu
(default) - Launches the image with KVM and attaches a cloud-init ISO to configure on bootlibguestfs
- Uses virt-customize to launch an appliance and chroot into the disk, does not require cloud-init in the image, but also cannot test/verify systemd based services due to the chroot.
- Dependency Free and easily embeddable into an image builder.
- Declarative, The order of operations cannot be changed, there are no implicit or explicit dependencies between items, no conditionals (besides for os/cloud tags) or control flows
- Typed, can validate the configuration (e.g. docker image name is valid, systemd.unit file only includes valid keys, and the values are typed correctly)
- Has built-in higher-order abstractions for kubernetes, containers, cri, cni, etc.
- Supports multiple operating systems and package managers
- Abstractions and many of the built-in elements are easily unit-testable due to the use of virtual filesystem and command execution list.
- Automatic testing / verification based on intent, not just command success code
- Generate cloud-init or shell scripts to be used by other systems
Compatibility is tested via the docker systemd images created by jrei, All example fixtures are first verified as false, applied, and then verified as true.
To run integration tests:
make ubuntu
- Incremental mode
- Merge duplicate command dependencies (e.g. installing curl)
- Support templating everywhere (currently only supported in files)
- Packer/QEMU/VirtualBox/Fusion drivers for building images
- AMI/OVA Image upload
- Multi-OS cleanup scripts for building images