Project status: alpha Not all features are completed. The API, spec, status and other user facing objects may change.
Kube BareMetal provides a provisioning solution for bare metal hardware in a cloud-like experience. Built with extensibility in mind Kube BareMetal can be easily adapted and changed to fit any datacenter architecture.
The idea of Kube BareMetal and the initial internal POCs started before Metal3 was announced. Kube BareMetal was initially started to support a Home Lab environment. This type of environment tends to have mixed hardware and sometimes no BMC support.
Metal3 and Kube BareMetal aim to achieve similar goals with slightly different implementations. It is up to you to decide which one is better for your environment.
While unattended install solutions are a great first step for automating operating system installation they have a few main problems, they lack immutability and speed. Having to re-install the whole operating system takes a significant amount of time even with fast networking and disk. Immutability is also not guaranteed, a lot of work needs to be done to ensure every installation gets the same version of packages installed.
- Setup the project in your favorite IDE
- Run
make linuxkit
- Run
make kind
- Run
make tilt
If you want to test using a local virtual machine follow the steps bellow.
- Libvirt 6.1.0+
- Ansible
- python-libvirt
- python-lxml
- Run
make ansible
- Follow the Operator Setup
- Start the VM
- Run
virt-manager --connect qemu:///session --show-domain-console kube-baremetal-0
- Click the play button
- Run
- DHCP configured for IPXE Booting
- Kubernetes Cluster (tested on 1.17.0)
- Servers (bare metal or vms)
- UEFI booting is not supported, hardware must be configured to boot in CSM Legacy Only mode
- Primary boot device set to PXE on the first NIC
- Secondary boot device set to the drive where the OS will be installed
TODO
TODO