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
Adopt the kubernetes-sigs/agent-sandbox model (as packaged in awslabs/ai-on-eks) to give each tenant a declarative, lifecycle-managed, kernel-isolatable workspace. Today tenants are plain Deployments isolated only at the namespace + NetworkPolicy level. This migrates the per-tenant workload to the Sandbox CRD model and adds a gVisor runtime tier as a follow-up.
Why
The Sandbox CRD is purpose-built for "a long-running, stateful, singleton container with a stable identity" — exactly the per-tenant persistent workspace model used here.
Its target architecture includes hibernation + resume-on-incoming-connection (native scale-to-zero for the agent tier). This is not yet available on the pinned v0.4.5 and lands incrementally — tracked upstream in Auto Suspend/Resume kubernetes-sigs/agent-sandbox#968 (see Scope below).
gVisor is delivered as a SandboxTemplateruntimeClassName field, not a standalone layer — so adopting the Sandbox control plane first is the architecturally correct order.
Built on AWS-native + OSS SIG primitives.
Scope (phased)
PR chore(deps): bump actions/setup-node from 6.3.0 to 6.4.0 #1 — Sandbox control plane + tenant migration (runc): deploy the agent-sandbox controller + CRDs as an ArgoCD-managed addon; add a per-tenant runcSandboxTemplate; migrate the per-tenant workload from Deployment to SandboxClaim; route the Gateway HTTPRoute to the controller-owned Service. Runtime stays runc. The pinned controller (v0.4.5 / v1alpha1) has no connection-triggered resume, so this PR runs always-on; scale-to-zero is deferred (see PR chore(deps): bump actions/setup-node from 6.3.0 to 6.4.0 #1.5). Design doc docs/agent-sandbox.md (included in this PR).
gVisor supports ARM64, so the all-Graviton (Graviton/arm64) cluster needs no x86 migration.
On v0.4.5 v1alpha1, SandboxClaim.spec.sandboxTemplateRef links directly to the SandboxTemplate; the controller deletes the pod at Replicas==0 (no native wake), which is why scale-to-zero is split into PR chore(deps): bump actions/setup-node from 6.3.0 to 6.4.0 #1.5 and tracked against the upstream auto suspend/resume work.
Summary
Adopt the kubernetes-sigs/agent-sandbox model (as packaged in awslabs/ai-on-eks) to give each tenant a declarative, lifecycle-managed, kernel-isolatable workspace. Today tenants are plain
Deployments isolated only at the namespace +NetworkPolicylevel. This migrates the per-tenant workload to theSandboxCRD model and adds a gVisor runtime tier as a follow-up.Why
SandboxCRD is purpose-built for "a long-running, stateful, singleton container with a stable identity" — exactly the per-tenant persistent workspace model used here.SandboxTemplateruntimeClassNamefield, not a standalone layer — so adopting the Sandbox control plane first is the architecturally correct order.Scope (phased)
runcSandboxTemplate; migrate the per-tenant workload fromDeploymenttoSandboxClaim; route the GatewayHTTPRouteto the controller-owned Service. Runtime staysrunc. The pinned controller (v0.4.5 /v1alpha1) has no connection-triggered resume, so this PR runs always-on; scale-to-zero is deferred (see PR chore(deps): bump actions/setup-node from 6.3.0 to 6.4.0 #1.5). Design docdocs/agent-sandbox.md(included in this PR).sandbox-routerand idle hibernation once the upstream resume mechanism is available. Gated on upstream Auto Suspend/Resume (Auto Suspend/Resume kubernetes-sigs/agent-sandbox#968).gvisorRuntimeClass, a gVisor-capable ARM64 Karpenter NodePool (AL2023 +runscshim via user-data), agvisorSandboxTemplate, and flip the tenant claim to the gVisor template (a single field).Verified design notes
arm64) cluster needs no x86 migration.v1alpha1,SandboxClaim.spec.sandboxTemplateReflinks directly to theSandboxTemplate; the controller deletes the pod atReplicas==0(no native wake), which is why scale-to-zero is split into PR chore(deps): bump actions/setup-node from 6.3.0 to 6.4.0 #1.5 and tracked against the upstream auto suspend/resume work.