Install, Upgrade, and Rollback
Source-pinned installation and cautious upgrade and rollback procedures for the 0.1.0 integration snapshot.
Install, Upgrade, and Rollback
Status: Experimental
Snapshot: cloud-0.1.0
Cloud 0.1.0 has no published production package. The supported evidence path builds from the exact compatibility lock. Do not replace revision pins with a moving branch in an operational environment.
Prerequisites
- Linux, Rust 1.88 or later, Docker, and PostgreSQL 17;
- Gateway
1.0.12and Runtime0.2.0at the locked revisions; - write access to persistent PostgreSQL, artifact, log, and node-state paths;
- separate environment variables for database, bootstrap, Gateway, and provider credentials; and
- a tested backup and a maintenance window before an upgrade.
NATS JetStream is optional when events.provider = "memory". S3-compatible
storage is optional for the local log profile and required when the configured
production policy selects it.
Build and start the pinned snapshot
From a recursive checkout of the root repository at the snapshot revision:
docker compose \
--env-file apps/cloud/deploy/dev/.env.example \
--file apps/cloud/deploy/dev/compose.yaml \
up --detach --wait
export A3S_CLOUD_POSTGRES_URL="postgres://a3s_cloud:a3s_cloud@127.0.0.1:54320/a3s_cloud"
export A3S_CLOUD_BOOTSTRAP_TOKEN="replace-with-at-least-32-random-characters"
export A3S_CLOUD_GITHUB_WEBHOOK_SECRET="replace-with-32-to-512-random-bytes"
cargo build --manifest-path apps/cloud/Cargo.toml --locked --release \
-p a3s-cloud-control-plane -p a3s-cloud-node-agent
apps/cloud/target/release/a3s-cloud-control-plane apps/cloud/config/cloud.aclStartup applies the checked-in migrations. Keep the complete
cloud.acl
and
node.example.acl
as the starting point; both are parsed by the docs gate and by Cloud's typed
configuration tests.
Verify liveness and dependency readiness before admitting traffic:
curl --fail http://127.0.0.1:8080/api/v1/health/live
curl --fail http://127.0.0.1:8080/api/v1/health/ready
curl --fail http://127.0.0.1:8080/api/v1/openapi.json > /dev/nullUpgrade sequence
- Record the current root revision, compatibility lock, binary digests, and database migration level.
- Take and verify the backups in Recovery.
- Stop new mutations at the ingress and wait for in-flight operations to become terminal. Do not stop workers while operations still own leases.
- Build the new exact lock in a separate directory. Run its tests before touching the active binaries.
- Stop the affected control-plane roles, install the candidate binaries and configuration atomically, then start workers before reopening API traffic.
- Require live, ready, OpenAPI, PostgreSQL, event-relay, Gateway, and node observation checks to pass. Keep the old binaries and backup until then.
Workload A-to-B update and cloned-revision rollback are Verified E0
operations. Control-plane binary packaging and unattended fleet rollout are
not. The current a3s-updater source supplies an Experimental signed, health-gated
node-agent/Gateway transaction, but this snapshot does not wire it to Cloud
fleet scheduling and exposes no operator command for it.
Rollback decision
If no migration ran, restore the prior binaries and configuration, start the previous role set, and repeat every health check. If a migration ran, do not assume downgrade compatibility. Restore the verified pre-upgrade PostgreSQL backup into an isolated database first, start the old binary against it, and promote only after authoritative queries and node observations match.
Never declare rollback complete only because a process started. Gateway revision acknowledgement, Runtime health, operation terminal state, and the exact applied component version are the completion evidence.