Skip to content

docs: manual rolling upgrade runbook (clone workerpool approach) - #1392

Merged
Anna Pendleton (annapendleton) merged 2 commits into
agent-substrate:mainfrom
HavenXia:runbook
Sep 3, 2026
Merged

docs: manual rolling upgrade runbook (clone workerpool approach)#1392
Anna Pendleton (annapendleton) merged 2 commits into
agent-substrate:mainfrom
HavenXia:runbook

Conversation

@HavenXia

Copy link
Copy Markdown
Collaborator

The runbook for moving a running substrate to a new build without losing actor state. An user runs the roll by hand with kubectl, kubectl ate, ate-setup, jq, and grpcurl, and every piece of upgrade state lives in cluster objects, so the roll can stop and resume at any point.

The order follows the upgrade design: CRDs, then ate-controller, then the dataplane node by node, then ate-api-server and atenet.

The dataplane moves by version label. The new atelet DaemonSet sits next to the old one, each serving WorkerPool is cloned with the new worker image and the new version pin, and each node is drained (workers marked DRAINING through the DrainWorker RPC), emptied by suspending its actors, relabeled, and cleared of old worker pods. The old objects stay untouched until a separate retire step, so rollback is one label flip per node.

Tested end to end locally on a GKE cluster: install at one build, run counter actors, upgrade to a second build following the document, and confirm the actors resume on the new pool with their state intact. Rollback and retire were exercised the same way.

Fix #1272, fix #1273.

@HavenXia Haven Xia (HavenXia) changed the title docs: manual rolling upgrade runbook for cloned worker pools docs: manual rolling upgrade runbook (clone workerpool approach) Sep 2, 2026
Comment thread docs/upgrade.md Outdated
node at a time, so no actor loses state and at most one node's worth
of capacity is out of service while the rest of the fleet keeps
serving. It needs `kubectl`, `kubectl ate`, `go run ./cmd/ate-setup`,
`jq`, `grpcurl`, and on GKE `gcloud`. All of its state lives in

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"GKE gcloud." - should this be more agnostic? does this only work on GKE or does it work for all substrate components?

Comment thread docs/upgrade.md
| name | what it is | how to get it |
|---|---|---|
| `$CLUSTER`, `$ZONE` | the GKE cluster and its location | `gcloud container clusters list` |
| `$NODEPOOL` | the GKE node pool | `gcloud container node-pools list --cluster $CLUSTER --zone $ZONE` |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these gcloud commands - possibly should be kind commands (eg. assume kind is our base provider in substrate repo)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not worth blocking review on - but we likely need to revisit some of the wording here so it's more cloud generic

@annapendleton
Anna Pendleton (annapendleton) merged commit 2cd4943 into agent-substrate:main Sep 3, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Upgrade] Rollback support for system upgrade CLI/binary/script [Upgrade] System upgrade runbook

2 participants