# How this cluster got built

Dates and commits from the repository. Every entry exists in the log. Entries marked broken took the platform down; entries marked win changed how the rest of it works.

## 2026-01-19 - The repository starts

A handful of virtual machines on one host, Talos installed by hand, and a journal written next to the manifests.

Commit: `ac900836`.

## 2026-01-21 - Rook and a single-node Ceph

The Rook charts were copied into the repository so a one-node cluster could run storage before anything else existed.

Commit: `539137e5`.

## 2026-02-03 - Gitea and Argo CD

The forge and the first reconciler arrived in the same commit. Six days later the cluster deployed its first workload from git.

Commit: `3cda697e`.

## 2026-02-12 - Cilium becomes the CNI [win]

Installed from Terraform. Every later network decision, from Gateway API to KubeSpan, builds on this layer.

Commit: `509e31e8`.

## 2026-02-21 - Tailscale joins the sites

Remote access stopped being a port forward, and a second site became practical.

Commit: `d68c688d`.

## 2026-03-08 - A cluster ruined and rebuilt [broken]

The KubeSpan rollout destroyed the cluster and I rebuilt it. Recreating Ceph took the storage classes with it, and two volumes came back empty.

Commit: `13235e0e`.

## 2026-03-08 - Oracle joins as a second site

The first node outside the house, provisioned by hand-written OCI Terraform.

Commit: `2d93b31e`.

## 2026-03-20 - Multi-site routing

One entry point served three sites: Oracle, worker-infra and worker-svt.

Commit: `5df84cec`.

## 2026-03-21 - Native routing with KubeSpan [win]

Cilium dropped VXLAN and Talos carried WireGuard. The two only coexist with bpf.hostLegacyRouting set, which is why the cluster died the first time.

Refs: `routingMode: native`, `bpf.hostLegacyRouting: true`.

Commit: `e28c795c`.

## 2026-05-19 - DNS follows the objects [win]

external-dns wrote Cloudflare records from Gateway and HTTPRoute objects. The last chore I had been doing outside git disappeared.

Commit: `aa17aa59`.

## 2026-05-20 - Argo CD out, Flux in [win]

Three layers, one dependency graph, one opinionated layout. Velocity and consistency both improved that week.

Refs: `apps/`, `infrastructure/`, `clusters/`.

Commit: `2b236920`.

## 2026-07-29 - One line deleted every namespace [broken]

The configs Kustomization listed the application namespaces, so force-deleting it pruned them and Kubernetes removed everything inside. The rules about namespace ownership date from this week.

Refs: `infrastructure/configs`.

Commit: `5302803c`.

## 2026-10-24 - Terraform moves into the cluster [win]

The Flux OpenTofu controller replaced fourteen PaC-fired apply pipelines. Credentials stopped leaving the cluster and drift correction became automatic.

Refs: `infra.contrib.fluxcd.io`, `tofu-system`.

Commit: `ad9d1af1`.

## 2026-10-29 - The site renders from the same repository

A Rust server reads the documentation and quotes the manifests it documents, so a page cannot cite a file that is not there.

Commit: `b00f04ab`.

## Why so small

Price efficiency decides what runs here. Every push to any repository reindexes the code through kb-embed and kb-rerank, WebODM runs photogrammetry, and the cluster does not serve a language model: a hosted API charges 10 EUR a month for that work. See https://kubexa.tech/about for the arithmetic and the further reading.
