docs: audit links, glossary T0-T4, readability pass
CI & Release / Verify simulator (push) Skipped
CI & Release / Trivy scan (push) Skipped
CI & Release / Semantic Release (push) Skipped
CI & Release / Verify simulator (pull_request) Failing after 4s
CI & Release / Trivy scan (pull_request) Skipped
CI & Release / Semantic Release (pull_request) Skipped

Extend glossary with storage floors, source of truth, and linkable anchors.
Fix broken links, pose frame drift, rsync/offload wording, and README tone.
Add docs/improvement audit records and live demo links in design journey.
This commit is contained in:
2026-07-10 10:46:59 +01:00
parent ed531f9fb6
commit 5f6fd8462c
27 changed files with 376 additions and 193 deletions
+11 -19
View File
@@ -1,17 +1,14 @@
# Terraform — simulation environment (T4)
# Terraform — simulation environment ([T4](../../../docs/00-glossary.md#t4--dev))
Declares the simulated fleet and its observability stack on the k3d cluster
created by [`../../ansible/sim-cluster.yml`](../../ansible/sim-cluster.yml).
This module is the executable miniature of the dev/sim environment from
[06 — Environments](../../../docs/06-environments.md).
Sim fleet + observability on k3d. Cluster from [`../../ansible/sim-cluster.yml`](../../ansible/sim-cluster.yml). Executable [T4](../../../docs/00-glossary.md#t4--dev) miniature ([06 — Environments](../../../docs/06-environments.md)).
| Resource | Purpose |
| --- | --- |
| StatefulSet `drone` × `drone_count` | Virtual drones; stable pod names become `DRONE_ID`s; all write Hive-partitioned Parquet into the shared `/data` lake |
| Deployment `exporter` | Prometheus exporter reading the lake with DuckDB |
| Deployment `explorer` + NodePort 30088 | Partition tree + read-only SQL console (also feeds the prototype's live mode) |
| Deployment `prometheus` + NodePort 30990 | Scrapes the exporter |
| Deployment `grafana` + NodePort 30300 | Same dashboard JSON as the Compose profile, provisioned from a ConfigMap |
| StatefulSet `drone` × `drone_count` | Virtual drones; pod names `DRONE_ID`; shared `/data` lake |
| Deployment `exporter` | Prometheus exporter reading lake with DuckDB |
| Deployment `explorer` + NodePort 30088 | Partition tree + read-only SQL (prototype live mode) |
| Deployment `prometheus` + NodePort 30990 | Scrapes exporter |
| Deployment `grafana` + NodePort 30300 | Dashboard JSON from ConfigMap |
## Usage
@@ -22,7 +19,7 @@ terraform apply
terraform output # URLs
```
Scale the fleet without touching YAML:
Scale without YAML edits:
```bash
terraform apply -var drone_count=9 -var speedup=4
@@ -30,11 +27,6 @@ terraform apply -var drone_count=9 -var speedup=4
## Notes
- `image_pull_policy = "Never"`the simulator image is imported by the
Ansible playbook (`k3d image import`); the cluster never pulls from a
registry, mirroring the air-gap doctrine.
- Pods discover their identity from the pod name (StatefulSet ordinal), so
a flight survives `kubectl delete pod` the same way a drone survives a
power cycle: new process, same identity, new flight ID.
- State is local (`terraform.tfstate` in this directory) — the simulation
cluster is disposable; nothing here is shared infrastructure.
- `image_pull_policy = "Never"`image imported by Ansible (`k3d image import`); no registry pull. Air-gap mirror.
- Pod name → identity (StatefulSet ordinal). `kubectl delete pod` = power cycle: new process, same identity, new flight ID.
- Local state only — cluster disposable.