fix(multiplayer): size kind agones smoke resources

This commit is contained in:
Josh Creek
2026-09-04 17:07:13 +01:00
parent a5cbba8ac9
commit 817572a6ce
3 changed files with 12 additions and 1 deletions
+1 -1
View File
@@ -1503,7 +1503,7 @@ proposal cannot create false timeout penalties for its innocent participants.
The following Phase 8 slices have local implementation and verification evidence in this document: 8.29 dynamic allocated launch flags and endpoint handling; 8.30 allocator claim/reconciliation including provider-outcome recovery fencing and durable arena identity (migrations 00080009); 8.31 signed assignment/roster validation; 8.35 initial-connect no-show and casual bot policy; 8.36 controlled drain and shutdown acknowledgment; 8.398.43 client state, assignment, profile, recovery, and idempotent action retry; 8.44 structured observability and content-aware redaction; 8.45 bounded API metrics export plus optional Prometheus scrape/alert rules; 8.46 normal/race/vet/fuzz coverage; 8.478.48 offline/testkit/Compose coverage; 8.50 atomic stalled-allocation recovery notifications; 8.51 the 10,000-client API load boundary; 8.52 the opt-in per-replica plus shared PostgreSQL regional allocator quota; and 8.53 the fail-closed promotion validator. Their remaining acceptance text is infrastructure or production dependent where explicitly noted below the corresponding row.
The following are not locally certifiable from this workspace and remain open prerequisites rather than silently “done”: Valve/GodotSteam credentials and hosted SDR (7.17.8), live Agones/kind lifecycle (8.308.38, 8.49), public-network chaos/load/cost/release gates (8.508.53), and real-hardware graphics profiling (0.15b onward). `make verify-kind-agones` is the committed runner for 8.49; its response validator is unit-tested against malformed/ambiguous allocation payloads, but this machine still lacks kind and Helm. `TODO.md`s AI-training and presentation tasks remain separate from multiplayer and are not marked by this index.
The following are not locally certifiable from this workspace and remain open prerequisites rather than silently “done”: Valve/GodotSteam credentials and hosted SDR (7.17.8), live Agones/kind lifecycle (8.308.38, 8.49), public-network chaos/load/cost/release gates (8.508.53), and real-hardware graphics profiling (0.15b onward). `make verify-kind-agones` is the committed runner for 8.49; its response validator is unit-tested against malformed/ambiguous allocation payloads. On 2026-09-04, kind and Helm were installed and the runner reached its real Agones chart. That run found and repaired the chart's default 10,100 MiB `agones-extensions` ephemeral-storage request, which cannot schedule on a one-node kind cluster. The corrected extensions pod became Ready, but the Agones controller image then could not unpack because this Docker Desktop instance retains 2.71 GB of non-reclaimable BuildKit state and its internal disk filled despite pruning unused volumes, images, and cache. The live gate remains open pending Docker engine capacity; no kind/Agones success is claimed. `TODO.md`s AI-training and presentation tasks remain separate from multiplayer and are not marked by this index.
The live control-plane integration was retried on 2026-09-01 after Docker Desktop became available, but the disposable `postgres:17-alpine` container failed during `initdb` with `No space left on device`; Docker reported 10.2 GB of images and 3.3 GB of volumes. The user approved pruning the disposable volumes on 2026-09-04 (3.3 GB reclaimed), and `scripts/run_postgres_integration.sh` then passed against real PostgreSQL. That run caught and repaired a stalled-allocation outbox CTE without `RETURNING`, an untyped JSON timestamp parameter, a season-rollover scan arity mismatch, lifecycle-incompatible fixtures, and a rollback-test step count that did not actually reach migration 0006.
+6
View File
@@ -45,12 +45,18 @@ kind load docker-image "$game_server_image" --name "$cluster_name"
helm repo add agones https://agones.dev/chart/stable >/dev/null
helm repo update >/dev/null
# Agones 1.49 otherwise requests 10,100 MiB of ephemeral storage for its
# extensions pod, which exceeds a default single-node kind cluster before the
# Fleet can be exercised. These are smoke-only bounds; production resource
# sizing remains deployment-owned.
helm upgrade --install agones agones/agones \
--namespace agones-system --create-namespace \
--version "$agones_version" \
--set agones.crds.cleanup.enabled=true \
--set agones.controller.replicas=1 \
--set agones.extensions.replicas=1 \
--set agones.extensions.resources.requests.ephemeral-storage=128Mi \
--set agones.extensions.resources.limits.ephemeral-storage=512Mi \
--set agones.allocator.replicas=1 \
--wait --timeout 5m
@@ -52,6 +52,11 @@ class ComposeManifestTest(unittest.TestCase):
self.assertIn("verify_agones_allocation_response.py", runner)
self.assertNotIn("p.get(\"port\", 0) > 0", runner)
def test_kind_runner_bounds_agones_extensions_ephemeral_storage(self):
runner = (ROOT / "scripts/verify_kind_agones.sh").read_text()
self.assertIn("agones.extensions.resources.requests.ephemeral-storage=128Mi", runner)
self.assertIn("agones.extensions.resources.limits.ephemeral-storage=512Mi", runner)
if __name__ == "__main__":
unittest.main()