Repository navigation
What's Changed
⚠️ Breaking Changes
- SandboxConfig now holds multiple named versions with a default by Zoe Zhao (@zoez7) in #2333
- Replace SnapshotContentScope with the SnapshotFidelity ladder and preferred_fidelity by Dmitry Berkovich (@dberkov) in #2364
- Add sandboxClasses with an optional SandboxConfig ref to WorkerPool by Zoe Zhao (@zoez7) in #2332
- gvisor: move the sandbox asset to release 20260907.0 by Yuan Gao (@ygao-g) in #2413
- Health probes move to their own server on :9091, and :9090 serves only /metrics by Jeff Luo (@JeffLuoo) in #2424
- Rename ContainerWakeupProbe to WakeupProbe by Luiz Oliveira (@laoj2) in #2575
- Remove the substrate version label from the install by Haven Xia (@HavenXia) in #1812
- Block link local egress in atunnel by Keith Mattix II (@keithmattix) in #2319
- stop naming every cached sandbox asset runsc- by Benjamin Elder (@BenTheElder) in #2627
- Changed SandboxClass from enum to string to allow extensibility by Luiz Oliveira (@laoj2) in #2586
Bug Fixes
- objectstore: finish snapshot cleanup when the bucket is missing by Luomu (@cloudonly) in #1973
- Components honor OTEL_TRACES_EXPORTER=none and treat OTEL_METRICS_EXPORTER=prometheus as none where they serve /metrics by Quentin Bisson (@QuentinBisson) in #2190
- Return the caller's context error when an atelet call fails by Eren Akbulut (@eren23) in #2236
- ateom-gvisor: attribute runsc output for the pause container by Luomu (@cloudonly) in #2330
- Benchmark automation runners can reach ate-api-server again under ate-system's default-deny ingress by haiyanmeng in #2637
- ateapi: fail /readyz while the store is unreachable by Eric Curtin (@ericcurtin) in #1989
- run ateom under minimal init by Benjamin Elder (@BenTheElder) in #2626
- atunnel: bound the tunnel open by a deadline by Yuan Gao (@ygao-g) in #2654
Features: Networking and Egress
- atenet: keep the router pod unready until its Envoy is serving by Lior Lieberman (@LiorLieberman) in #2325
- Egress gateway can mint and cache actor JWTs by Max Thompson (@thompsonmax) in #2135
- Egress policies can inject actor JWTs by Max Thompson (@thompsonmax) in #2141
- More robust Actor DNS Relay by Bowei Du (@bowei) in #2370
- Add E2E HTTPS egress tests and reject WebSocket upgrades by Adhita Selvaraj (@swiftdiaries) in #1634
- Add actor egress benchmarking tool by yanavlasov in #2505
- Reduce number of egress atunnels by multiplexing CONNECTs over H/2 by yanavlasov in #2425
- atenet-router: reach atunnel through mTLS CONNECT tunnels by default by Lior Lieberman (@LiorLieberman) in #2618
- Router status private by Lior Lieberman (@LiorLieberman) in #2573
- Block DNS if there is no egress policy configured by Bowei Du (@bowei) in #2524
Features: Security and Identity
- atespace isolation tests by Siyan Shen (@siyanshen) in #1966
- security: prevent path traversal in snapshot storage locations by Benjamin Elder (@BenTheElder) in #2372
- atelet: introduce declarative validation for the AteomHerder RPCs by shrutiyam-glitch in #1997
- ate-system now denies ingress by default; in-cluster API clients must label their namespace ate.dev/api-access=true by Greg Castle (@destijl) in #2522
- add support for connect from atenet (envoy) to atunnel by Lior Lieberman (@LiorLieberman) in #2531
Features: Observability
- ateom-gvisor: emit actor usage records by Tim Bai (@baizhenyu) in #2194
- ateom-microvm: emit actor usage records by Tim Bai (@baizhenyu) in #2195
- atelet: drop its actor usage records and count each activation's CPU once by Tim Bai (@baizhenyu) in #1984
- benchmarking/analysis: aggregate suspend/resume phase breakdown log r… by Lucky Abolorunke (@Oneimu) in #2009
- Drop per-pod server.address label from rpc.client.call.duration metrics by Jeff Luo (@JeffLuoo) in #2576
Features: Workers and Actors
- fake-dataplane: let the fake data plane host actors by haiyanmeng in #2300
- Build the OCI spec in ateom instead of atelet by Haven Xia (@HavenXia) in #2293
- Allow ActorTemplates to disable golden snapshot creation by Luomu (@cloudonly) in #2328
- Benchmark external volumes with the DurDir load by anishgang in #2057
- ateom-microvm: boot the guest image over virtio-pmem with DAX by jiayimeow in #2218
- microvm: evict snapshot page cache on restore to prevent cgroup memory pressure by Chenyi Wang (@chw120) in #2030
- Move static runsc flags to configuration file by Fabricio Voznika (@fvoznika) in #2281
- drop wall-clock TestWaitForSocketReturnsPromptly, it flakes on loaded ci runners by Benjamin Elder (@BenTheElder) in #2625
- fix kind cluster delete hanging when nfs volumes are mounted by Benjamin Elder (@BenTheElder) in #2621
Features: Install and Operations
- benchmarking: pace boomer to a target rate and add the resumepaused user class by haiyanmeng in #2350
- ate-setup: have EnsureCRDs create only the missing CRDs by Haven Xia (@HavenXia) in #2585
- Add --fake-data-plane to install a fake data plane for control-plane benchmarks by haiyanmeng in #2469
Dependencies
- Envoy, Alpine and dev-tool dependency bumps clear pre-GA CVEs by Anna Pendleton (@annapendleton) in #2568
Documentation
- Lifecycle metrics omit empty template labels, and a crash during a delete reports the delete operation by Jeff Luo (@JeffLuoo) in #2356
- Upgrade Runbook GA by Haven Xia (@HavenXia) in #1844
Other Changes
- Build the JWK set that publishes actor JWT verification keys by Max Thompson (@thompsonmax) in #2132
- ate-setup: do not record demo and benchmark deploys by Haven Xia (@HavenXia) in #2320
- ate-setup should record the Substrate version an install used by Haven Xia (@HavenXia) in #2321
- Volume E2E tests wait for actor restoration before checking mounts by Luomu (@cloudonly) in #2294
- docs(router): fix the request parking guide link by ktsoator (@ktsoator) in #2327
- Authenticate bundled PostgreSQL logins with separate pod certificates by Jeremy Alvis (@iplay88keys) in #2266
- ateapi: record one scheduler assignment for each resume by Jeff Luo (@JeffLuoo) in #2244
- Delete unused
actor_template_reffromActorAssigmentsub-resource by Julian Gutierrez Oschmann (@juli4n) in #2322 - benchmark(ateom-gvisor): log per-actor checkpoint and restore phase b… by Lucky Abolorunke (@Oneimu) in #2302
- Don't default name in store layer. by Julian Gutierrez Oschmann (@juli4n) in #2359
- kubectl ate admin can rotate the actor JWT signing key by Max Thompson (@thompsonmax) in #2140
- cdiinject: confine device paths and host mounts to allowed roots by Benjamin Elder (@BenTheElder) in #2315
- Add sections about sub-resources and singletons to the API style guide. by Julian Gutierrez Oschmann (@juli4n) in #2354
- ate-setup: choose the StorageClass of the bundled PostgreSQL by Eric Curtin (@ericcurtin) in #2314
- Move snapshot transfers behind the object-store snapshot plugin by ILLUM1N0X in #2224
- Fail snapshot plugin calls with Unavailable after 30s when the plugin is down by Anish Ramasekar (@aramase) in #2380
- docs(api): fix systeminfo volume examples by ktsoator (@ktsoator) in #2346
- ateom-gvisor logs a warning when a running actor's sandbox dies by Da Huang (@git286) in #2258
- Update Snapshots API to support Actor Lifecycle v2 by Michelle Au (@msau42) in #2289
- Reject requests with duplicate ate-target-actor headers across HTTP and CONNECT by Greg Castle (@destijl) in #2308
- docs: add substrate security guide and principles by Greg Castle (@destijl) in #2326
- Rename some
ExternalVolumefields by Julian Gutierrez Oschmann (@juli4n) in #2404 - kubectl-ate: add --source to select container or lifecycle log lines by Yu YI (@erain) in #2337
- ate-setup sets the actor JWT issuer (ACTOR_JWT_ISSUER), and ate-api-server requires it by Max Thompson (@thompsonmax) in #2257
- Rename target_ateom_uid to worker_pod_uid by Luiz Oliveira (@laoj2) in #2423
- Rename
MintActorJWTRequest.audiencetoaudiences. by Julian Gutierrez Oschmann (@juli4n) in #2421 - Remove makefile by Taahir Ahmed (@ahmedtd) in #2374
- Rename the object-store plugin proto package to objectstore.v1 by Anish Ramasekar (@aramase) in #2432
- podcertcontroller: do not rate-limit PCRs assigned to other replicas by Chenyi Wang (@chw120) in #2353
- Add an eviction section to the API guide by Haven Xia (@HavenXia) in #2417
- Worker Self-Reported Sandbox & Hardware Compatibility by shrutiyam-glitch in #2381
- Update COLLABORATING.md to reflect our stronger processes by Taahir Ahmed (@ahmedtd) in #2437
- atenet-router no longer exposes its plaintext xDS server on the pod IP by Greg Castle (@destijl) in #2443
- cmd/atenet: Remove the router's "all" mode by Taahir Ahmed (@ahmedtd) in #2441
- test: Fix macos unit test failures by Tim Flannagan (@timflannagan) in #2429
- Update x/net to v0.60.0 to fix govulncheck failures by Luomu (@cloudonly) in #2401
- ROOTFS snapshot fidelity: micro-VM capture and restore, API opened for micro-VM templates by Dmitry Berkovich (@dberkov) in #2448
- fix(kubectl-ate): validate atespace flags before connecting by ktsoator (@ktsoator) in #2464
- atunnel: strip X-Ate-Assignment-Stale from upstream actor responses by Pancho Trujillo (@panchoruy) in #2410
- WorkerPools resolve their SandboxConfig and protect it from deletion by Zoe Zhao (@zoez7) in #2393
- Simplify Snapshot API for Actor Lifecycle v2 by Michelle Au (@msau42) in #2449
- Singleton subresource Get and Delete requests take a name by Eric Curtin (@ericcurtin) in #2452
- Fix a couple issues with plural commands in kubectl-ate by Tim Hockin (@thockin) in #2509
- e2e: skip the egress credential injection test by Yufan Su (@yufan-su) in #2518
- atecontroller: add --worker-sync-concurrency flag by Chenyi Wang (@chw120) in #2334
- ate-api-server no longer links the GCS and S3 SDKs by Eric Curtin (@ericcurtin) in #2398
- Make
DrainWorkerreturnDrainWorkerResponseby Julian Gutierrez Oschmann (@juli4n) in #2501 ate-setup delete ate-systemnow deletes the ClusterTrustBundles Substrate published by Anish Ramasekar (@aramase) in #2418- Update gVisor to 2026-10-10 nightly and use fs/ split checkpoint for durable dirs by nybidari in #2455
- ate-setup: roll ate-api-server once when its environment changes by Haven Xia (@HavenXia) in #2371
- e2e: update credential injection e2e to call an in-cluster echo server by Yufan Su (@yufan-su) in #2535
- Fetch private sandbox assets through the object-store plugin by Anish Ramasekar (@aramase) in #2439
- router authn/z part 1: Add simple mTLS client authentication to the ingress router by Taahir Ahmed (@ahmedtd) in #2387
- ateapi: [Part 3] authorize actor lifecycle, egress policy, and worker RPCs with OpenFGA by Shruti Nair (@SHRUTI6991) in #2185
- Move the OIDC JWT verifier to internal/ so binaries other than ate-api-server can use it by ILLUM1N0X in #2519
- Rename the snapshot-plugin sidecar, image and flag to objectstore-plugin by Anish Ramasekar (@aramase) in #2540
- Report missing Kind and control-plane prerequisites before deployment by Luomu (@cloudonly) in #2403
- fix(objectstorage): handle download reader close errors by ktsoator (@ktsoator) in #2446
- atecontroller: the :8080 metrics listener follows OTEL_METRICS_EXPORTER by Eric Curtin (@ericcurtin) in #1976
- Use TitleCase for initialisms in API proto names. by Julian Gutierrez Oschmann (@juli4n) in #2520
- hack: warn when the host's neighbor table is at the kernel default by Davanum Srinivas (@dims) in #2497
- Credential provider tests no longer fail with text file busy by Eric Curtin (@ericcurtin) in #2549
- benchmarking: append the suspend/resume phase percentiles to stats.jsonl from the runner by Lucky Abolorunke (@Oneimu) in #2148
- Align timestamp fields with AIP-142 naming conventions by Ganeshkumar Ashokavardhanan (@ganeshkumarashok) in #2438
- e2e: fetch in-cluster echo origins in the egress MITM suite by Davanum Srinivas (@dims) in #2561
- cmd/atelet: Join the pause-image pull in the prewarm download test by Davanum Srinivas (@dims) in #2564
- Fix ETXTBSY test flake in credentialprovider by Benjamin Elder (@BenTheElder) in #2365
- ate-setup: refuse to point an external-database install at the bundled one by Haven Xia (@HavenXia) in #2588
- ateapi: include actor identity in ateom certificates by Christian Posta (@christian-posta) in #2582
- Add and use a CLI verbosity flag by Tim Hockin (@thockin) in #2475
- docs: document demo & benchmark install settings with their demos by Steven Shriver (@stshrive) in #2572
- Update atelet Snapshot API for to support asynchronous uploads by Michelle Au (@msau42) in #2592
- atelet: preserve tar entry mtimes when unpacking image layers by jiayimeow in #2216
- e2e: Update egress e2e to use in-cluster test server and remove every external dependencies by Yufan Su (@yufan-su) in #2590
- Add WorkerService.ReportActorSnapshotState API for atelet snapshot reports by igooch in #2612
- ateapi: grant system component roles to Substrate's own components by Shruti Nair (@SHRUTI6991) in #2220
- Wrap page size and next page token in a
ListOptionsmessage. by Julian Gutierrez Oschmann (@juli4n) in #2593 - atelet prepares each local worker's sandbox assets and versions file by Zoe Zhao (@zoez7) in #2521
- Define a paused actor by its snapshots and delete the PAUSED and PAUSING states by Zoe Zhao (@zoez7) in #2620
- benchmarking: add the personal-assistant-light agent-session script by Aditya Shantanu (@aditya-shantanu) in #2583
- Mark workers unavailable if it's pod status changes by Scott Funkenhauser (@sfunkenhauser) in #2055
- Stamp snapshots with SandboxRuntime and schedule restores on runtime-compatible workers by shrutiyam-glitch in #2536
- csi: require serverName when TLS is enabled. by Vu Le (@lekhoavu2909) in #2603
- WorkerService.MintAteomActorJwt mints ateom-for-actor JWTs for atelet; actor JWT claims move from ate.dev to actor.ate.dev by ILLUM1N0X in #2523
- Move nighthawk benchmark server out of ate-system namespace by yanavlasov in #2656
- Add proto message options to attach resource metadata. by Julian Gutierrez Oschmann (@juli4n) in #2454
- benchmarking: full request history, histogram restore/checkpoint, active_actors by Nishanth Kotla (@Nishanth29) in #2221
- fix(atelet): fall back to anonymous GCS read with objectstore-plugin Internal by Anna Pendleton (@annapendleton) in #2614
- atelet: Prefer local snapshot on Restore by Michelle Au (@msau42) in #2658
- Fix macOS DNS relay tests by Adhita Selvaraj (@swiftdiaries) in #2667
- ateapi: [Part 4] deny RPCs without an authz rule and authorize tags by Shruti Nair (@SHRUTI6991) in #2562
- Consolidate API validation for sandbox class across services by Luiz Oliveira (@laoj2) in #2587
New Contributors
- Eren Akbulut (@eren23) made their first contribution in #2236
- Siyan Shen (@siyanshen) made their first contribution in #1966
- Yu YI (@erain) made their first contribution in #2337
- Pancho Trujillo (@panchoruy) made their first contribution in #2410
- Ganeshkumar Ashokavardhanan (@ganeshkumarashok) made their first contribution in #2438
- Christian Posta (@christian-posta) made their first contribution in #2582
- jiayimeow made their first contribution in #2218
- Fabricio Voznika (@fvoznika) made their first contribution in #2281
- Vu Le (@lekhoavu2909) made their first contribution in #2603
Full Changelog: v0.4.0...v0.5.0
Committers in this release
- Aditya Shantanu (@aditya-shantanu)
- Taahir Ahmed (@ahmedtd)
- aiqubits
- anishgang
- Anna Pendleton (@annapendleton)
- Anish Ramasekar (@aramase)
- Tim Bai (@baizhenyu)
- Benjamin Elder (@BenTheElder)
- Bowei Du (@bowei)
- Christian Posta (@christian-posta)
- Chenyi Wang (@chw120)
- Luomu (@cloudonly)
- Dmitry Berkovich (@dberkov)
- Greg Castle (@destijl)
- Davanum Srinivas (@dims)
- Yu YI (@erain)
- Eren Akbulut (@eren23)
- Eric Curtin (@ericcurtin)
- Fabricio Voznika (@fvoznika)
- Ganeshkumar Ashokavardhanan (@ganeshkumarashok)
- Da Huang (@git286)
- haiyanmeng
- hajiler
- Haven Xia (@HavenXia)
- igooch
- ILLUM1N0X
- Jeremy Alvis (@iplay88keys)
- Jeff Luo (@JeffLuoo)
- jiayimeow
- Julian Gutierrez Oschmann (@juli4n)
- Keith Mattix II (@keithmattix)
- ktsoator (@ktsoator)
- Luiz Oliveira (@laoj2)
- Vu Le (@lekhoavu2909)
- Lior Lieberman (@LiorLieberman)
- Michelle Au (@msau42)
- Nishanth Kotla (@Nishanth29)
- nybidari
- Lucky Abolorunke (@Oneimu)
- Pancho Trujillo (@panchoruy)
- Quentin Bisson (@QuentinBisson)
- Scott Funkenhauser (@sfunkenhauser)
- Shruti Nair (@SHRUTI6991)
- shrutiyam-glitch
- Siyan Shen (@siyanshen)
- Steven Shriver (@stshrive)
- Adhita Selvaraj (@swiftdiaries)
- Tim Hockin (@thockin)
- Max Thompson (@thompsonmax)
- Tim Flannagan (@timflannagan)
- yanavlasov
- Yuan Gao (@ygao-g)
- Yufan Su (@yufan-su)
- Zoe Zhao (@zoez7)