This directory contains my Talos Kubernetes cluster in declarative state.
I use my own tool Talhelper to create the machineconfig
files of all my nodes.
The secrets are encrypted with SOPS.
Feel free to open a Github issue if you have any questions.
- Prepare your nodes with
Talos Linux
- Install
talhelper
. - Create your own talconfig.yaml.
- Run
talhelper gensecret > talsecret.sops.yaml
if you don't havemachineconfig
before ortalhelper gensecret -f <your-machineconfig.yaml> > talsecret.sops.yaml
if you already have one. - Run
sops -e -i talsecret.sops.yaml
to encrypt your secrets (make sure you already have your own.sops.yaml
) file. - Run
talhelper genconfig
and the files will be generated in./clusterconfig
directory by default. - Copy the generated
./clusterconfig/talosconfig
to your~/.talos/config
. - Run
talosctl -n <node-ip> apply-config --insecure --file ./clusterconfig/<clustername>-<hostname>.yaml
on each of your node. Don't forget to runtalosctl -n <node-ip> bootstrap
on one of your controlplane node. - Push your current directory to your git repository of choice. 😉
- Deploy cilium :
kubectl kustomize --enable-helm ./cni | kubectl apply -f -
- Deploy kubelet-csr-approver
kubectl kustomize --enable-helm ./kubelet-csr-approver | kubectl apply -f -
to approve csr issued by talos nodes (that will allow to see pods logs). - Deploy flux
kubectl apply -k ./flux
- Create flux github secret
kubectl apply -f ./flux/.decrypted\~github-deploy-key.sops.yaml
- Create sops secret
cat ~/.config/sops/age/keys.txt | kubectl create secret generic sops-age --namespace=flux-system --from-file=age.agekey=/dev/stdin
- Apply flux cluster configuration
kubectl apply -k kubernetes/flux
- Apply flux base configuration
kubectl apply -f kubernetes/base/flux.yaml
- Apply flux core
kubectl apply -f kubernetes/cluster-0/core/flux.yaml
- Apply flux apps
kubectl apply -f kubernetes/cluster-0/apps/flux.yaml