Applications¶
All apps are deployed via Flux CD. Each has a ks.yaml entry point in kubernetes/apps/{namespace}/{app}/.
Adding an App¶
Use the /add-app AI skill — it interactively scaffolds all manifests from scratch.
- Run
/add-appin Claude Code — it prompts for app name, namespace, helm chart type, ingress, auth, and optional features (Kopiur, CNPG, zeroscaler, Gatus), then generates all files - Add secrets to aKeyless at the path referenced in
externalsecret.yaml - Fill in
{IMAGE_REPO}and{IMAGE_TAG}inhelmrelease.yaml(add Renovate annotation) - Validate
Reusable components live in kubernetes/components/:
| Component | What it does |
|---|---|
| kopiur | PVC backup/restore (needs APP + KOPIUR_CAPACITY substitutions) |
| cnpg | DB user init CronJob + ExternalSecret |
| ext-auth-internal | Authentik SSO for internal apps |
| ext-auth-external | Authentik SSO for external apps |
| zeroscaler | Native HPA scale-to-zero based on Prometheus probe_success (replaces keda) |
Include via components: [../../../../components/<name>] in ks.yaml.
By Namespace¶
| Namespace | Apps | Purpose |
|---|---|---|
| ai | 7 | LLMs, image gen, MCP tools |
| default | 17 | SSO, dashboard, photos, recipes, passwords |
| media | 19 | Plex, *arr stack, downloads |
| database | 3 | CNPG clusters, Dragonfly, pgAdmin |
| home-automation | 6 | Home Assistant, MQTT, ESPHome, Matter/Thread |
| observability | 14 | Prometheus, Grafana, logs, alerting |
| network | 9 | Envoy, Pangolin, DNS, Tailscale |
| system | 21 | Cilium, Flux, Rook-Ceph, cert-manager |