Cluster Bootstrap
The process should be mostly automated via task bootstrap:apps. If all goes well the cluster should come up based on the last available Volsync snapshot, which runs daily.
Priming the Hardware
- Grab the latest Talos .iso here
- Plug it in and follow secure boot setup
MS-01 SecureBoot Setup
Enabling Secure Boot on MS-01 can be difficult if its not something you have done before, heres how to do it:
- Boot directly to the BIOS
- Under
Security->Secure Bootchange tocustom - Go down to
Key Management - Set
Factory Key Provisiontodisabled - Click
Reset To Setup Mode- IMPORTANT: click
cancelwhen it says save without exiting
- IMPORTANT: click
- Save and Reset
- Mount Talos image and reboot, click
Enroll secure boot keys: auto
If you still see errors on start about key violations it probably means the factory default keys weren't wiped (step 4). Make sure changes are saved before rebooting.
Bootstrap Flux
Flux manages the state of the cluster, but it can't do that until its installed. A few things need to be manually installed first:
- Cilium - By default Talos installs a basic CNI, so I disable that. Kubernetes doesn't work without a CNI.
- CoreDNS - Talos installs this by default but that makes it hard to upgrade so I disable it and manage it with Flux.
- cert-manager - For certificate things. Bootstrapping this early makes life easier since everything is based on my domain.
- external-secrets - All my secrets are in 1Password, this pulls them into the cluster.
- kubelet-csr-approver - Auto approves CSRs, makes life easy.
- spegel - In-cluster OCI registry mirror to save some bandwidth.
- Flux - After this point Flux manages the state of the cluster via manifests in the repo.
All of these get installed with a single command from the bootstrap Taskfile:
task bootstrap:apps
This applies bootstrap resources for 1Password and Cloudflare tunnel, then installs everything via helmfile.