Introduction
Overview
talhelper is a tool to help creating Talos configuration files declaratively.
It was inspired by a python script written by @bjw-s.
You can say talhelper is like kustomize but for Talos manifest files with SOPS support natively.
In a nutshell, this is what talhelper does step by step behind the door:
- Read and validate
talconfig.yaml. - Read and decrypt
talsecret.yamlortalsecret.sops.yamlwithsopsif needed. - Read and decrypt
talenv.yamlortalenv.sops.yamlwithsopsif needed and load them into environment variables. - Do envsubst if needed.
- Validate and generate Talos and machine config files inside
./clusterconfigdirectory. - Generate
.gitignorefile so you don't commit the generated files to the public.
Why should I use Talhelper
The main reason to use talhelper instead of talosctl gen config command to generate Talos machineconfig files is because you want to have them version controlled in your git repository which is currently not possible yet with talosctl.
Currently, to create Talos configuration files using the official talosctl tool your steps are:
- Run
talosctl gen config <cluster-name> <cluster-endpoint>and it will generatecontrolplane.yaml,worker.yaml,talosconfigin the current working directory. - Copy and modify those files manually according to your nodes.
- Run
talosctl apply-config --insecure -n <ip-address> --file <your-modified-file.yaml>for each node.
This process is fine if you just want to do this once and forget about it. But if you're like me (and many others), you might want to "GitOpsified" this process. So here's where you might want to use talhelper.
With talhelper, the steps will become like this:
- Create a
talconfig.yaml. - Run
talhelper gensecret > talsecret.sops.yamland encrypt it with sopssops -e -i talsecret.sops.yaml. - Run
talhelper genconfig. - Run
talosctl apply-config --insecure -n <ip-address> --file ./clusterconfig/<cluster-name>-<hostname>.yamlfor each node.
Yes there are more steps needed.
But now you can commit your talconfig.yaml and the encrypted talsecret.sops.yaml to your repository and get your whole cluster version controlled.
To get started, hop over to the Getting Started section.
Alternatives
There are some alternatives you can consider instead of talhelper.
- The official Terraform provider
- The official Pulumi provider
Bug report and feature request
If you have encountered any bug or you want to request a new feature, please open an issue at GitHub.