Kubernetes + Argo CD source of truth for SplatTop. Charts, AppSets, secrets workflow, and runbooks live here (not in the app repo).
- Bootstrap/runbooks:
docs/bootstrap.md,docs/argo-operations.md,docs/release-workflow.md,docs/secrets-strategy.md,docs/developer-cheat-sheet.md - KSOPS deep dive and CMP recipe:
docs/ksops-llm-response.md - Argo objects:
argocd/(AppProjects, Applications, AppSets) - Charts/values:
helm/andapps/ - Secrets layout:
secrets/(bots) andk8s/secrets.*
argocd/– production AppProject + Applications/AppSets; apply withkubectl apply -f argocd/.apps/– per-bot values/defs consumed by AppSets (e.g.,argocd/appsets/bots-*.yaml).helm/– service charts and the umbrella chart; values files cover dev/default/prod overlays.k8s/– legacy/standalone manifests (ingress, cert, repo-server patches, secrets templates).secrets/– encrypted bot secrets (secrets/bots/**) withkustomization.yaml+ksops.yamlper bot.docs/– runbooks and design notes; start withdocs/README.mdfor the reading order.scripts/– helpers likescripts/validate_prometheus_config.py(renders Helm, then promtool).
- Age key: create
argocd/sops-age-key(age.agekeydata). CI key is in GitHub Actions secretSOPS_AGE_KEY. - Build flags: apply
k8s/argocd/argocd-cm-ksops-patch.yamlsoargocd-cm.data.kustomize.buildOptionsincludes--enable-alpha-plugins --enable-exec(Argo CD 3.2 ignores kustomize flags inargocd-cmd-params-cm). - Repo-server: apply
k8s/argocd/repo-server-ksops-patch.yamlto install ksops/sops, setKUSTOMIZE_PLUGIN_HOME, and mount the Age key. - Bot secrets:
argocd/appsets/bots-secrets.yamlrenderssecrets/bots/<bot>/kustomization.yaml+ksops.yaml; with the patches above Argo runskustomize build --enable-alpha-plugins --enable-execand decrypts*.enc.yaml. - Want CMP/plugin-server instead of plain kustomize+KSOPS? See
docs/ksops-llm-response.md.
- Make changes in a branch and run:
helm lint helm/splattopuv run python scripts/validate_prometheus_config.py
- Apply changes to the cluster via Argo CD (prefer GitOps over UI edits).
- Keep secrets encrypted (
*.enc.yaml); usesopswith the Age key from CI or the cluster secret.
Want your bot deployed? Use our one-click form:
👉 Request a bump