From 3e01376e3de8318385bcc186b08b8fb240397fb0 Mon Sep 17 00:00:00 2001 From: Renato Torres Date: Mon, 2 Nov 2026 11:21:55 +0000 Subject: [PATCH] Expose the router request parking budget as a Helm value Signed-off-by: Renato Torres --- charts/substrate/README.md | 1 + charts/substrate/templates/atenet-router.yaml | 2 ++ .../substrate/tests/control_plane_test.yaml | 20 +++++++++++++++++++ charts/substrate/values.yaml | 3 +++ 4 files changed, 26 insertions(+) diff --git a/charts/substrate/README.md b/charts/substrate/README.md index f80beb3809..7a2e93c655 100644 --- a/charts/substrate/README.md +++ b/charts/substrate/README.md @@ -60,6 +60,7 @@ See `values.yaml` for the full set; the important keys: | `postgres.schema` | `substrate` | Store the Substrate tables in this PostgreSQL schema | | `postgres.clientCertificates.enabled` | `false` | Project separate owner and runtime login certificates into the API server | | `.resources` | see `values.yaml` | Requests and limits for each container, e.g. `ateApi.resources` and `atenetRouter.agentgateway.resources` | +| `atenetRouter.requestParking.budget` | `5s` | Maximum wait for a suspended actor to become routable, e.g. `30s` for slower cold starts | | `rustfs.enabled` | `true` | Deploy an in-cluster S3-compatible RustFS bucket for snapshots | | `ateApi.snapshotLocation` | `""` | Cluster-wide snapshot URI; defaults to `gs:///` with bundled RustFS | | `atelet.storageBackend` | `s3` | Default snapshot backend, wired to RustFS when `rustfs.enabled=true` | diff --git a/charts/substrate/templates/atenet-router.yaml b/charts/substrate/templates/atenet-router.yaml index 761386f4b6..fc7b6b972a 100644 --- a/charts/substrate/templates/atenet-router.yaml +++ b/charts/substrate/templates/atenet-router.yaml @@ -109,6 +109,8 @@ data: body: Invalid ate-target-actor header substrateIngress: host: {{ include "substrate.fullname" (list "api" .) }}.{{ .Release.Namespace }}.svc:443 + requestParking: + budget: {{ .Values.atenetRouter.requestParking.budget | quote }} # AgentGateway only uses atunnel's CONNECT listener. connectTargetPort: 8443 policies: diff --git a/charts/substrate/tests/control_plane_test.yaml b/charts/substrate/tests/control_plane_test.yaml index de9b50b2fe..126e2b729d 100644 --- a/charts/substrate/tests/control_plane_test.yaml +++ b/charts/substrate/tests/control_plane_test.yaml @@ -374,3 +374,23 @@ tests: - matchRegex: path: data["config.yaml"] pattern: 'source.spiffeId in \["spiffe://cluster.local/ns/client/sa/router-client"\]' +- it: keeps the router request parking budget at five seconds by default + template: atenet-router.yaml + documentSelector: + path: kind + value: ConfigMap + asserts: + - matchRegex: + path: data["config.yaml"] + pattern: 'requestParking:\n\s+budget: "5s"' +- it: configures the router request parking budget + template: atenet-router.yaml + set: + atenetRouter.requestParking.budget: 30s + documentSelector: + path: kind + value: ConfigMap + asserts: + - matchRegex: + path: data["config.yaml"] + pattern: 'requestParking:\n\s+budget: "30s"' diff --git a/charts/substrate/values.yaml b/charts/substrate/values.yaml index 6cd8426931..c4628edde4 100644 --- a/charts/substrate/values.yaml +++ b/charts/substrate/values.yaml @@ -143,6 +143,9 @@ ateController: memory: 512Mi atenetRouter: + requestParking: + # Maximum time to wait for a suspended actor to become routable. + budget: 5s # mTLS client identities allowed to reach actors. Empty denies all ingress. ingressAllowedSPIFFEIDs: [] agentgateway: