Example: service tin on platform nitroso · Bun API + worker · Postgres + queue
What lands in the clusters
Each landscape gets the same app objects on every one of its clusters, plus one set of records on Primordial. Only names, config and secret values change per landscape.
- App cluster, namespace
nitroso: 2 Deployments, a Service, an HTTPRoute, a ConfigMap, an ExternalSecret (→ Secret), a db-init Job. DECIDED · R20 - Primordial: the dependency records, the Problem record, Grafana alerts and dashboards, and the Argo CD Applications and Kargo stages that deploy it all. DECIDED · ARCH §8
- No ServiceMonitor: apps push telemetry to Alloy. DECIDED · R20; observability §2
Switch the landscape: names and values change; the set of objects stays the same.
pichu = dev. First stop; promoted automatically when a Freight appears. Database type in the PoC: Neon. DECIDED · ARCH §8 PoC TESTED · PoC
pikachu = staging. Gets the version only after every pichu deploy is healthy. DECIDED · ARCH §8
raichu = production, Singapore. Promoted together with ampharos. More than one cluster: each gets the same app objects. DECIDED · ARCH §2, §8 PAPERS SILENT · real cluster names
ampharos = production, US. Same release as raichu, own data. DECIDED · ENV §1
- designed and decided
- built in a branch or the PoC
- open or unclear
{l}-{mark}an app cluster of {l} ({tier}). Every cluster of the landscape gets the same objects. PAPERS SILENT · real cluster names
namespace nitroso the platform namespace
namespace base-layer namespaces sulfoxide, before any service
namespace (cluster-wide) no namespace
Primordialthe one control cluster, shared by all landscapes
namespace nitroso records; or nitroso-{l} (open, K6)
namespace argocd deploy objects
namespace kargo: nitroso promotion objects
Tap an object to see its source repo and file.
Deployment tin-api
The API pods. Label durian. (or live), the 4 LPSM labels, the image tag from the row pin.
Source repo: nitroso.tin
File: infra/ + values. + values.
Put there by: Argo CD (app Application per cluster)
DECIDED · R20; OD D59 OPEN · T1 no Bun API template
Deployment tin-worker
The queue worker pods. Exec health probe bun dist/. Same image, worker command.
Source repo: nitroso.tin
File: infra/
Put there by: Argo CD
DECIDED · R20 BUILT · bun-consumer:infra/root_chart/templates/deployment.yaml
Service tin-api
ClusterIP for the API. The worker has none.
Source repo: nitroso.tin
File: infra/
Put there by: Argo CD
DECIDED · R20; dotnet-api.md PoC TESTED · PoC service.yaml
HTTPRoute tin-api
Public route. Hostname api., derived, never typed. Parent = the platinum Gateway.
Source repo: nitroso.tin
File: infra/ (no template renders one yet)
Put there by: Argo CD
DECIDED · R20; ARCH §2 OPEN · K5 parent Gateway name CONTRADICTION · K7 'serving' host names PoC TESTED · PoC used Ingress
ConfigMap tin-config
config/ + config/, copied into the chart at build. Holds errorPortal. for {l}.
Source repo: nitroso.tin
File: infra/ ← config/
Put there by: Argo CD
DECIDED · HW; OD D102 CONTRADICTION · S1 built bakes config into the image
ExternalSecret tin-secrets
Asks the platform store for / and / (and the database folders) from Infisical env {l}.
Source repo: nitroso.tin
File: infra/
Put there by: Argo CD
DECIDED · secrets-chain BUILT · bun-consumer CONTRADICTION · S4 folders
Secret tin
Keys like SHARED_X, TIN_X, the database URL. Changes when T3 rotates the password.
Source repo: Infisical (project nitroso, env {l})
File: made from the ExternalSecret
Put there by: ESO (cobalt), every refresh
DECIDED · secrets-chain CONTRADICTION · S3 env vars vs mounted file
Job (hook) tin-dbinit
Runs before each rollout: checks Postgres and the queue are reachable, migrates, seeds.
Source repo: nitroso.tin
File: infra/ + migrations/
Put there by: Argo CD PreSync / Helm pre-upgrade
DECIDED · R20 BUILT · bun-consumer OPEN · G6 retry on first release
NetworkPolicy not decided
Not in any service paper or branch. mercury's goal lists one; nothing else does.
Source repo: —
File: —
Put there by: —
PAPERS SILENT OPEN · K3
HPA / KEDA not decided
HPA is listed for dotnet-api only. KEDA is in the owner's base-layer list but has no paper.
Source repo: —
File: —
Put there by: —
OPEN · K4
Namespace nitroso
The platform namespace. Same name in every landscape.
Source repo: nitroso.carbon
File: chart/
Put there by: Argo CD (carbon is deployed like a service)
DECIDED · carbon.md BUILT · charts/carbon
SecretStore carbon-store
The platform's door into Infisical project nitroso, env {l}.
Source repo: nitroso.carbon
File: chart/
Put there by: Argo CD
BUILT · charts/carbon CONTRADICTION · S5 name: carbon-store vs platform-store OPEN · O7
ClusterSecretStore cobalt-sos
ESO's root store, scoped to {l}, using the bootstrap key T3 wrote at cluster creation.
Source repo: sulfoxide: cobalt
File: chart/
Put there by: Argo CD (base layer)
DECIDED · cobalt.md BUILT · charts/cobalt
Deployment reloader
Restarts restart pods when their ConfigMap or Secret changes.
Source repo: sulfoxide: chlorine
File: chart (stakater reloader 2.2.19)
Put there by: Argo CD (base layer)
DECIDED · chlorine.md; OD D59 BUILT · charts/chlorine
Gateway platinum gateway
TLS ends here; the HTTPRoute hangs off it.
Source repo: sulfoxide: platinum
File: kgateway v2.5.0 chart
Put there by: Argo CD (base layer)
DECIDED · kgateway.md BUILT · charts/platinum
cert-manager + ClusterIssuer sulfur, zinc
Certificates for the gateway (DNS-01).
Source repo: sulfoxide: sulfur, zinc
File: charts
Put there by: Argo CD (base layer)
BUILT · charts/sulfur, charts/zinc
Alloy alloy-metrics, alloy-logs
Receives OTLP on :4318 and adds the where-from labels from the pod labels. Tail sampling (owner D88 B2).
Source repo: sulfoxide: aluminium
File: charts/ (k8s-monitoring 4.6.0)
Put there by: Argo CD (base layer)
DECIDED · alloy.md; OD D88 CONTRADICTION · X10 built chart is behind
ValidatingAdmissionPolicy ×3 require-lpsm-labels, reload-label-required, reload-live-inputs
Refuses a pod with no labels or no reload label. Same rules the chart checks run offline.
Source repo: cluster-policies-standin (later vanadium)
File: chart/
Put there by: Not written who installs it
DECIDED · OD D75; workspace §1 CONTRADICTION · K1 Deny vs Warn/Audit OPEN · K1, K2
Database tin
spec. in {l}. T3 makes it and writes its password.
Source repo: nitroso.tin
File: infra/ + values.
Put there by: Argo CD (primordial Application)
DECIDED · OD D4; PR 71 CONTRADICTION · X1 corpus main and built: PlatformDependency PoC TESTED · PoC records.yaml
KeyValue tin
spec.. The queue rides Redis streams on it; there is no queue kind.
Source repo: nitroso.tin
File: infra/
Put there by: Argo CD
DECIDED · bun-consumer.md L112 OPEN · X3 no queue kind
Problem tin.api.{l}.v1
Every Problem the API can return, with module: api. erbium builds pages from it.
Source repo: nitroso.tin
File: infra/ (made by problemgen)
Put there by: Argo CD
DECIDED · OD D66; error-portal.md CONTRADICTION · X5 built: no module field
GrafanaAlertRuleGroup + Dashboard tin alerts, tin dashboards
Alerts and dashboards from observability/.
Source repo: nitroso.tin
File: infra/
Put there by: Argo CD; grafana-operator acts
DECIDED · observability-block.md BUILT · bun-consumer
LogtoResource tin-api
Only if the API checks sign-in tokens.
Source repo: nitroso.tin
File: infra/
Put there by: Argo CD; logto-operator acts
DECIDED · logto-operator.md
ApplicationSet nitroso
Turns every row file of the platform into Applications.
Source repo: fleet (compiler chart diene-platform) + nitroso.
File: machinery/
Put there by: Argo CD (Application platform-nitroso)
DECIDED · FLEET L313 PoC TESTED · PoC rows-appsets.yaml
Application nitroso-{l}-tin-primordial
Deploys the primordial chart at the pinned version onto Primordial.
Source repo: fleet row file
File: platforms/ (layout open)
Put there by: the ApplicationSet
DECIDED · FLEET L325 OPEN · G2
Application nitroso-{l}-tin-{mark}
Deploys the app chart onto cluster {l}-{mark}. One per cluster of the landscape.
Source repo: fleet row file × cluster labels
File: platforms/
Put there by: the ApplicationSet
DECIDED · FLEET L332 PoC TESTED · PoC
Application nitroso-raichu-tin-onyx
raichu has a second cluster in the PoC; it gets its own app Application.
Source repo: fleet
File: same row file
Put there by: the ApplicationSet
PoC TESTED · PoC raichu-onyx
Warehouse tin
Watches the image and both charts; Freight only when all three are equal.
Source repo: fleet compiler chart + carbon platform.
File: rendered, not hand-written
Put there by: Argo CD
DECIDED · FLEET L520 PoC TESTED · spike A
Stage tin-{l}
Pushes the Freight's version into tin's {l} row, then waits for health.
Source repo: carbon stages: [pichu, pikachu, [raichu, ampharos]]
File: rendered
Put there by: Argo CD; Kargo runs it
DECIDED · ARCH §8; carbon.md PoC TESTED · spike A