You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 6be3d50
Browse filesBrowse the repository at this point in the historyBrowse files
fix(atenet,ateom): let an actor's egress through while it resumes — the golden boot fetches before readyz (#4)
* Let an actor's egress through while it resumes
An actor's tunneled egress was armed only after every container served
readyz, and atenet's egress gateway refused a CONNECT from any actor that
was not RUNNING — a state the control plane commits only after the
worker's Run returned, that is, after readyz. A workload that fetches
what it needs to become ready — a model, a skill repository, packages —
therefore could not: atunnel dropped the intercepted connection on the
floor, the fetch died with "Broken pipe", readyz never came, and the
actor was re-run every minute with one worker pinned to it. Nothing was
logged at either hop; the workload's own error was the only trace. An
ActorTemplate whose workload fetches at start-up never got its golden
snapshot.
The certificate the tunnel authenticates with is minted for exactly this
placement before the workload starts (prepareActorEgress; the credential
broker mints only for a worker's current assignment), so the identity is
there from the first packet. Readiness gates ingress, not egress.
* ateom (gVisor and micro-VM): arm egress right after the actor
network is set up and the failure cleanup is registered, before the
first container starts; ingress still waits for readyz.
* atenet egress: a RESUMING actor is placed on a worker and may
tunnel. SUSPENDED, PAUSED, CRASHED and DELETING are still refused: a
certificate within its lifetime must not tunnel for an actor that
has left its worker. The refusal is logged with the actor, its
state and the destination.
* atunnel: a dropped egress connection (no active egress, expired
certificate) is logged with the peer address.
* docs(fork): ledger row for the egress-while-resuming patch (#4)
(cherry picked from commit 05de980)
Copy file name to clipboardExpand all lines: FORK.md
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,10 +37,13 @@ Everything on `giantswarm` that is not in the pin (`git log v0.0.26..giantswarm`
37
37
| Patch | Purpose | Fork commit | Upstream |
38
38
|---|---|---|---|
39
39
| Grant atelet cluster-wide read access to sandbox configs | atelet's sandbox-asset prewarm degraded on the second test cluster without the RBAC ([#37742](https://github.com/giantswarm/giantswarm/issues/37742) row 10) |`74b45f9e` (`git cherry-pick -x a7505e9c`) |[kagent-dev/substrate#33](https://github.com/kagent-dev/substrate/pull/33), merged 2026-09-08, not in v0.0.26 — falls away at the re-pin onto the first tag that contains it |
40
+
| Let an actor's egress through while it resumes (ateom arms tunneled egress before the first container starts, atenet admits `RESUMING` actors, both hops log a refusal) | an actor whose workload fetches what it needs to become ready — kagent's Go ADK and Claude harnesses materialise git skills before readyz — never got its golden snapshot: atunnel dropped the fetch (`Broken pipe`), atenet would have refused a non-`RUNNING` actor, nothing was logged ([#37742](https://github.com/giantswarm/giantswarm/issues/37742) rows 8 and 13; acceptance test `agentlab skills-test`, [agentlab#137](https://github.com/giantswarm/agentlab/issues/137)) | [#4](https://github.com/giantswarm/substrate/pull/4) (squash; `git log --grep '(#4)'`) | to file: the upstream-shaped patch is branch [`upstream/atenet-egress-during-resume`](https://github.com/giantswarm/substrate/tree/upstream/atenet-egress-during-resume) here, rebased on the mirror `main`; a team member opens the kagent-dev/substrate pull request with DCO sign-off once #37742 has reviewed it |
40
41
| Fork infrastructure: this file, the README pointer, `CODEOWNERS`, `.github/workflows/publish.yaml`, `.github/workflows/sync-upstream.yaml`, `.trivyignore`, and the branch triggers of `pr-workflow.yaml`, `helm-e2e.yaml`, `govulncheck.yaml` (`main` → `giantswarm`, govulncheck also on pull requests) | the line's CI, publishing and sync | the `giantswarm` branch history | not for upstream |
41
42
42
-
Nothing in the line changes Substrate's behaviour beyond what upstream has already merged. Giant Swarm
43
-
specific wiring lives elsewhere: the CA/JWT pool bootstrap (`kubectl-ate admin make-ca-pool`/`make-jwt-pool`
43
+
One patch changes Substrate's behaviour ahead of upstream — egress for an actor while it resumes, without
44
+
which no skill-carrying agent of the platform boots; it is written for upstream and leaves at the first
45
+
release that carries it. Everything else is what upstream has already merged. Giant Swarm specific wiring
46
+
lives elsewhere: the CA/JWT pool bootstrap (`kubectl-ate admin make-ca-pool`/`make-jwt-pool`
44
47
and the `ate-api-authentication` ConfigMap) is created by [agentlab](https://github.com/giantswarm/agentlab)
45
48
and by meta chart 4.0; the `WorkerPool` the platform's Harnesses run on comes with the kagent chart
46
49
(`kagent.substrateWorkerPool`); feature gates, Kyverno exceptions and network policies are cluster
// TODO: this can cause heavy load on ate api server. Change it based on https://github.com/agent-substrate/substrate/issues/592.
0 commit comments