# titan-iac

Flux-managed Kubernetes desired-state config for `bstein.dev`.

Canonical source URL:
- `ssh://git@scm.bstein.dev:2242/bstein/titan-iac.git`

## Scope

This repo contains cluster configuration consumed by Flux:
- platform/infrastructure manifests
- service manifests and kustomizations
- operational scripts for render/reconcile workflows

This repo is **not** the Ananke application source repo.
Ananke lives in `bstein/ananke` and orchestrates host-side shutdown/startup behavior around this desired state.

Terraform lives under `terraform/atlas` for declarative day-zero inventory, Kubernetes Node labels, and generated Ananke inventory input. It must not take ownership of Flux-managed workload manifests.

## Validation workflow

```bash
kustomize build services/<app>
kubectl apply --server-side --dry-run=client -k services/<app>
flux reconcile kustomization <name> --namespace flux-system --with-source
```

## Apply model

Use Git + Flux as the source of truth.
Avoid manual in-cluster edits for durable changes.
