An alchemist's furnace.
Athanor is a devcontainer-based development environment for Helmetica. It provides a local kind cluster with all modules needed to develop and test service charts (reagents).
- Docker (or a compatible engine like OrbStack)
- VS Code with the Dev Containers extension
- Clone this repository and open it in VS Code.
- When prompted, choose Reopen in Container. Alternatively open the command palette (
F1) and run Dev Containers: Reopen in Container. - Wait for the container to build and provision. The
postCreateCommandautomatically runsmake ignite, so once provisioning finishes you already have a running cluster.
Another good way to run the devcontainer is DevPod (community-maintained fork). It works with any IDE and can run the devcontainer on your local Docker daemon or on remote providers:
devpod up .If you prefer the plain CLI, the devcontainer CLI works too:
devcontainer up --workspace-folder .
devcontainer exec --workspace-folder . zshThe devcontainer ships all tooling needed for development:
- Go,
make,git,vim docker(docker-in-docker)kubectl(with completions and kubecolor),helm,krewjqandyq- Nix
The devcontainer forwards the following ports to your host:
| Port | Purpose |
|---|---|
| 8088 | Ingress HTTP (traefik) |
| 8443 | Ingress HTTPS (traefik) |
| 5000 | Internal container registry (TLS) |
| 36377 | Kubernetes API server |
If you need to (re-)create the cluster manually, simply ignite the furnace to get a kind cluster with all necessary modules:
make igniteThis creates the kind cluster and installs the modules from the hearth/ folder:
- traefik as ingress controller, reachable on
localhost:8088/localhost:8443 - metallb so
LoadBalancerservices get IPs - kube-prometheus-stack for monitoring
- k8up for backups
- cert-manager for certificates
- An internal container registry on
localhost:5000(TLS, self-signed)
To talk to the cluster, point kubectl at the generated kubeconfig:
export KUBECONFIG=$(pwd)/.kind/kind-configSome handy URLs once the furnace is lit:
The modules are tracked with sentinel files in .kind/.
Editing a module's values file (e.g. hearth/traefik/values.yaml) and re-running make ignite upgrades just that module.
Then put the service charts (reagents) into the reagents/ folder and develop away.
To stop and delete the cluster:
make quenchmake help lists all available targets.
.
├── hearth # Modules for athanor (one folder per module)
├── reagents # Charts to be developed go here
├── Makefile # Contains logic to start/stop the devenv
├── Makefile.vars.mk # Pinned versions of all modules (managed by Renovate)
├── README.md
└── renovate.json