Release to K3s with a plan you read before anything changes

Release, scale, restart and roll back Deployments from your desktop. Every change is a server-side dry-run plan you confirm, guarded by a Lease.

A release plan waiting for confirmation: target Deployment and container, current and target image digests, and the plan expiry time.
A release plan waiting for confirmation: target Deployment and container, current and target image digests, and the plan expiry time.

What it is

Reviewed releases are the write path of the Infra console. Four actions are available on existing Deployments:

Action What changes
Release One container’s image, set to a registered digest
Scale spec.replicas, 0–1,000; the Pod template is untouched
Restart A Pod template annotation, so Pods roll according to the update strategy
Roll back One container’s image, set to the digest from an earlier successful release

Each one follows the same sequence: plan → review → confirm → apply → verify → record.

How it works

  1. Plan. DevOpsPad reads the Deployment and binds the plan to its UID, resourceVersion, container, image digest, namespace, application selector and the cluster endpoint. It then submits the change as a Kubernetes server-side dry-run, so admission and validation errors appear before anything is written.
  2. Review. The dialog shows the current and target image, or the replica change, and the plan’s expiry. Plans live only in memory, expire after 10 minutes and can be used once.
  3. Lock. On confirm, DevOpsPad takes a coordination.k8s.io/v1 Lease in the target namespace for that Deployment (300-second lease, 180-second execution limit), then checks the UID and resourceVersion again.
  4. Apply. The update is written. Image releases and restarts add a devopspad.io/release annotation; scaling leaves the template unchanged.
  5. Verify. Success means the controller observed the new generation and the updated, available and total replicas equal the desired count.
  6. Record. Every step is written to releases/<uuid>.json in the project. If the record can’t be written, execution stops.

Timeouts, lost connections and concurrent edits are recorded as incomplete. A record left by a crashed client shows 执行中 / 待核实 (running / needs verification). Nothing is retried or rolled back automatically.

Artifacts by digest

Releases use artifacts: image references pinned to @sha256: digests, registered by hand or created automatically when an AI agent reports a successful build. DevOpsPad doesn’t build or push images; your registry can live on your laptop or LAN as long as the nodes can pull from it.

Limits

The design is explained in dry-run plans and leases for desktop releases.

Help articles

Frequently asked questions

What happens if a release fails halfway?

DevOpsPad marks it as incomplete and asks you to check the cluster. It never retries or rolls back on its own, so a partial state is never hidden behind an automatic action.

Can two people release the same Deployment at the same time?

Two DevOpsPad clients cannot. Each Deployment has a Kubernetes Lease that the second client must wait for. Other tools ignore that Lease, but the resourceVersion check still stops DevOpsPad from overwriting their changes.

Why must images use a sha256 digest?

Tags such as latest can point to a different image later. A digest identifies one exact image, so release records and rollbacks always refer to what actually ran.