Talos single cluster managed via Tofu and Flux in Vultr
- Makefile 56.8%
- HCL 41.5%
- Nix 1.7%
|
|
||
|---|---|---|
| .forgejo/workflows | fix(ci): rebase states with theirs strategy | |
| clusters/prod | chore(apps/bible): fetch db | |
| infra | chore(makefile): clean | |
| patches | ci: push | |
| states @4c8eb77b81 | submodule: states | |
| .env.example | chore: remove firewall | |
| .gitignore | ci: push | |
| .gitmodules | ci: pr and push | |
| .projectile | ci: push | |
| Makefile | fix(makefile): group talos-apply fallback in brace | |
| README.org | docs: readme | |
| shell.nix | feat: scaffold Vultr Talos GitOps cluster | |
| utils.mk | chore(makefile/utils): fix state commit | |
thiscloud
Online apps
find clusters/prod/apps/ -name ingress.yaml |
xargs -I{} yq '.spec.rules[].host | "https://" + .' '{}'
Running the infra
Requirements
-
nix-shellor the dependencies:- opentofu
- talosctl
- fluxcd
- kubectl
- gnumake
- curl
- jq
- bash
- gnused
- gnugrep
- openssh
- git
- pass
- A Vultr API token stored in
pass - A private
statesrepository.
Getting started
- Install dependencies or enter
nix-shell. - Setup
.env -
Provision the Vultr VM and Talos ISO.
make infra-apply -
Generate Talos configs and apply them to the node:
make talos-apply -
Bootstrap etcd. Runs only once;
states/.bootstrappedprevents re-runs:make talos-bootstrap -
Fetch the kubeconfig:
make kubeconfig -
Print the Flux public SSH key to allow access to your repo:
make cat-flux-pub-ssh-key -
Bootstrap Flux on the cluster:
make flux-bootstrap
Next steps
- Custom domain
- CI for Flux manifest validation
- Install
ozzuu/bible - Observability
- Encrypt
states/ - Re-enable admin firewall for Talos API (50000) and Kubernetes API (6443)