The Cluster API Provider Tinkerbell (CAPT) is a Kubernetes Cluster API provider that uses Tinkerbell to provision machines. You can find more information about CAPT here. The CAPT playground is an example deployment for use in learning and testing. It is not a production reference architecture.
The CAPT playground is a tool that will create a local CAPT deployment and a single workload cluster. This includes creating and installing a Kubernetes cluster (KinD), the Tinkerbell stack, all CAPI and CAPT components, Virtual machines that will be used to create the workload cluster, and a Virtual BMC server to manage the VMs.
Start by reviewing and installing the prerequisites and understanding and customizing the configuration file as needed.
- Libvirtd >= libvirtd (libvirt) 8.0.0
- Docker >= 24.0.7
- Helm >= v3.13.1
- KinD >= v0.20.0
- clusterctl >= v1.6.0
- kubectl >= v1.28.2
- virt-install >= 4.0.0
- task >= 3.37.2
- at least 60GB of free and very fast disk space (etcd is very disk I/O sensitive)
- at least 8GB of free RAM
- at least 4 CPU cores
Start by looking at the config.yaml
file. This file contains the configuration for the playground. You can customize the playground by changing the values in this file. We recommend you start with the defaults to get familiar with the playground before customizing.
Create the CAPT playground:
# Run the creation process and follow the outputted next steps at the end of the process.
task create-playground
Delete the CAPT playground:
task delete-playground
With the playground up and running and a workload cluster created, you can run through a few CAPI lifecycle operations.
To be written.
To be written.
To be written.
To be written.
To be written.
KinD on Ubuntu has a known issue with DNS resolution in KinD pod containers. This affect the Download of HookOS in the Tink stack helm deployment. There are a few known workarounds. The recommendation for the CAPT playground is to add a DNS nameservers to Docker's daemon.json
file. This can be done by adding the following to /etc/docker/daemon.json
:
{
"dns": ["1.1.1.1"]
}
Then restart Docker:
sudo systemctl restart docker