Skip to content

helmetica-framework/athanor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Athanor

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).

Getting started with the devcontainer

Prerequisites

Starting it

  1. Clone this repository and open it in VS Code.
  2. When prompted, choose Reopen in Container. Alternatively open the command palette (F1) and run Dev Containers: Reopen in Container.
  3. Wait for the container to build and provision. The postCreateCommand automatically runs make 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 . zsh

What's inside

The devcontainer ships all tooling needed for development:

  • Go, make, git, vim
  • docker (docker-in-docker)
  • kubectl (with completions and kubecolor), helm, krew
  • jq and yq
  • 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

Igniting the furnace

If you need to (re-)create the cluster manually, simply ignite the furnace to get a kind cluster with all necessary modules:

make ignite

This creates the kind cluster and installs the modules from the hearth/ folder:

  • traefik as ingress controller, reachable on localhost:8088/localhost:8443
  • metallb so LoadBalancer services 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-config

Some 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.

Quenching it

To stop and delete the cluster:

make quench

make help lists all available targets.

Structure

.
├── 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

About

Devcontainer based dev environment for the Helmetica Framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors