2024-11-19 14:42:27 +01:00
|
|
|
# Setup talos cluster
|
|
|
|
|
|
2024-11-19 22:12:57 +01:00
|
|
|
This will not be perfect, it's for my own use and for learning :)
|
|
|
|
|
|
2024-11-20 14:24:56 +01:00
|
|
|
## Target
|
|
|
|
|
* running talos with defined number of controlplanes/workers
|
|
|
|
|
* install Hetzner Cloud Controller Manager
|
|
|
|
|
* install Cilium with Gateway API
|
|
|
|
|
|
|
|
|
|
Configured correctly and Hetzner has no issues, talos + kubernetes is up and runing in about 5 minutes.
|
|
|
|
|
|
2024-11-19 14:42:27 +01:00
|
|
|
## Requirements
|
|
|
|
|
* Hetzner customer :)
|
|
|
|
|
* Domain at Hetzner, not needed, can be removed/adapted
|
|
|
|
|
* packer for creating a talos base image
|
2024-11-19 14:56:16 +01:00
|
|
|
* tofu (Should work with terraform too)
|
2024-11-19 14:42:27 +01:00
|
|
|
* I use direnv to setup all the needed configuration variables
|
|
|
|
|
|
2024-11-19 22:12:57 +01:00
|
|
|
## Config
|
|
|
|
|
|
|
|
|
|
### Required environment variables:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# to use hcloud command in shell, optional
|
|
|
|
|
export HCLOUD_TOKEN=....
|
|
|
|
|
# for provider setup
|
|
|
|
|
export TF_VAR_hcloud_token=$HCLOUD_TOKEN
|
|
|
|
|
|
|
|
|
|
# provider setup
|
|
|
|
|
export HETZNER_DNS_API_TOKEN=...
|
|
|
|
|
|
|
|
|
|
# not needed, but useful when used with direnv in .envrc file
|
|
|
|
|
# tofu output -raw kubeconfig >kubeconfig; tofu output -raw talosconfig >talosconfig
|
|
|
|
|
export KUBECONFIG=kubeconfig
|
|
|
|
|
export TALOSCONFIG=talosconfig
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Input Parameter
|
|
|
|
|
|
|
|
|
|
see test.tfvars.sample
|
|
|
|
|
|
2024-11-24 12:27:56 +01:00
|
|
|
## Create cluster
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
cd <repodir>
|
|
|
|
|
cp test.tfvars.sample test.tfvars
|
|
|
|
|
# adapt parameters
|
|
|
|
|
|
|
|
|
|
# initialize tofu/packer
|
|
|
|
|
tofu init
|
|
|
|
|
packer init --upgrade packer/talos_image.pkr.hcl
|
|
|
|
|
|
|
|
|
|
tofu apply -var-file=test.tfvars
|
|
|
|
|
```
|
|
|
|
|
|
2024-11-20 14:24:56 +01:00
|
|
|
## Todo
|
|
|
|
|
* define cilium version to be installed (hardcoded to 1.16rc right now)
|
|
|
|
|
* maybe some other tweaks
|
|
|
|
|
* maybe instsall flux, not sure if that should be part of initial setup
|
|
|
|
|
|