cluster GitOps (flux) — pipeline head; codeberg someara/seanfarm is the flux source + rebuild seed
- Shell 71.1%
- HCL 9.5%
- TLA 6.2%
- Go 5.7%
- Makefile 4.5%
- Other 3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
pipeline/ci trusted release-prepare: version bump + changelog on already-CI'd trunk code; no CI needed
|
||
| bootstrap | ||
| docs | ||
| kubernetes/flux | ||
| notes | ||
| research | ||
| scripts | ||
| secrets | ||
| services/hydra-token-hook | ||
| src | ||
| terraform | ||
| tests | ||
| tla | ||
| .checkov.yaml | ||
| .gitattributes | ||
| .gitignore | ||
| .kube-linter.yaml | ||
| .sops.yaml | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| LICENSE | ||
| Makefile | ||
| NOTICE | ||
| README.md | ||
| SECURITY.md | ||
| VERSION | ||
seanfarm
GitOps repo for sean.farm Kubernetes, storage, and build infrastructure.
Facts
- Flux bootstraps from Codeberg and reconciles
kubernetes/flux/clusters/seanfarm/. - Most manifests live in this repo. Some components also pull from separate Codeberg repos.
- Bootstrap secrets live in
secrets/*.yaml.encand are decrypted bymake.
Layout
| Path | Purpose |
|---|---|
kubernetes/flux/clusters/seanfarm/ |
Flux cluster entrypoint |
kubernetes/flux/clusters/seanfarm/infrastructure/ |
Cluster Flux Kustomizations |
kubernetes/flux/infrastructure/ |
Component manifests |
terraform/roots/ |
reusable Terraform roots for tofu-controller |
secrets/ |
encrypted bootstrap inputs |
docs/ |
short operational docs |
Common Commands
brew install age sops hcloud kubectl flux
age-keygen -o ~/seanfarm-age-key.txt
make create
make rebuild
make destroy
make status
Makefile reads ~/seanfarm-age-key.txt by default.
Rules
- Edit manifests, test, commit, push, reconcile, verify.
- Prefer declarative changes over imperative cluster changes.
- Do not use
kubectl applyfor routine Flux-managed development. - Use
kubectl applyonly for bootstrap/setup, emergency recovery, or temporary local verification before the matching commit is pushed. - Use internal service DNS for in-cluster traffic.
- Pin images by version or digest. Do not use
:latest.
Style
- Prefer
manifest.yamlinside component directories. - Use a semantic filename only when a directory contains multiple peer manifests.
- Avoid repeating a long dashed directory name in the filename.
- Let the directory name carry the component identity.
Docs
- Architecture — 4-layer overview, DNS / TLS / secrets / observability cross-cuts
- Development Workflow — daily edit → push → reconcile → verify loop
- Style — naming, file conventions, commit messages
- Crossplane Primer — XRD vs Composition, placeholder pattern, patch types, gotchas (in the platform repo)
- AGENTS.md — repo conventions for human and AI contributors