Repository navigation
Remove the substrate version label from the install - #1812
Dmitry Berkovich (dberkov) merged 1 commit into
Conversation
967b5a1 to
a5ec7e4
Compare
a5ec7e4 to
2bac536
Compare
|
Since this is breaking for anyone coming from v0.4, could we add the |
Yes they will be merged at the same moment. #1844's table says upgrade cross major version is not supported, which matches our designed compatibility policy now. |
2bac536 to
bd4c75f
Compare
The install labeled every node with ate.dev/substrate-version, named the atelet DaemonSet atelet-<version suffix> and pinned it to nodes carrying its version. This let two substrate versions run side by side on disjoint sets of nodes, which the clone-WorkerPool upgrade runbook relied on. The GA upgrade does not split nodes by version. atelet rolls in place and worker pools roll as ordinary Deployment updates. The label breaks that flow: deploying a new atelet creates a second DaemonSet pinned to a version no node carries, so it schedules nowhere.
bd4c75f to
ee7a832
Compare
Rewrites the upgrade runbook for an `in-place` roll by K8s deployment. Each component is upgraded where it runs, in order: podcertificate-controller, atelet, the workers, ate-api-server, the CRDs and ate-controller, atenet, then the default SandboxConfig. ate-controller follows the API server because it is a client of it, and new workers start from the pod template the old ate-controller renders. The old runbook ran the old and new dataplane side by side instead. This deliberately gives up two things the old runbook had. The first is zero loss. Workers are replaced through the eviction path: `SIGTERM`, then 30 minutes for the actor to be suspended before `SIGKILL`. Actors already need to handle this for node upgrades and preemption. An actor that is suspended in time loses nothing. One that isn't crashes and loses the work since its last snapshot. The old runbook avoided this by having the operator suspend every actor on a node before moving it. The second is instant rollback. Rollback is the same roll in reverse, from the old release, instead of flipping a node label back. Keeping both versions running needs spare capacity and the version label. ## TODOs Some places are marked TODO because they depend on unfinished work: 1. [DONE] The install record `ate-setup` writes (agent-substrate#1887, implemented in agent-substrate#2223) 2. The compatibility policy and the version skew policy. The runbook links both, while both poclies are still in design. 3. Per-release SandboxConfig names > Part of agent-substrate#1686 Merges together with agent-substrate#1812
ate-setupno longer labels nodes withate.dev/substrate-version. The atelet DaemonSet is now namedateletand runs on every node, instead ofatelet-<version suffix>pinned to nodes carrying its version.The label let two Substrate versions run side by side on disjoint sets of nodes, which the clone-WorkerPool upgrade runbook relied on. The GA upgrade doesn't split nodes by version: atelet rolls in place and worker pools roll as ordinary Deployment updates. With the label, deploying a new atelet creates a second DaemonSet pinned to a version no node carries, so it schedules nowhere.
This merges together with #1844, which replaces the label-based runbook in
docs/upgrade.md.Breaking change
Due to the removal of version label system. An install from v0.4 or earlier can't be upgraded in place. Reinstall it, as with every pre-GA minor release.
Part of #1686