feat(registry): let a rollout replace a zot-v2 pod that is not Ready #27
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/zot-parallel-pod-management"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Link 5 of the 2026-09-02 outage chain: the GitOps revert could not roll the Pending
zot-v2-0pod. With the defaultpodManagementPolicy: OrderedReadythe StatefulSet controller returns fromprocessReplicabefore the update loop when a pod exists but is not Running and Ready (stateful_set_control.go:if !isRunningAndReady(replicas[i]) && monotonic { return true, nil }). A human had to delete the pod.What
StatefulSet/zot-v2:podManagementPolicy: Parallel. The update loop then runs and deletes the pod whose revision differs from the update revision. One replica has no other pod to order.tests/zot-pod-management.sh: pins the policy and the replica count (red before the manifest change, green after).docs/REGISTRY-AVAILABILITY.md: new section "Pod management policy" with the controller code path and the one-time migration procedure.Migration (one-time, break glass)
The field is immutable. The first sync attempt of this commit fails on the StatefulSet apply and the automated operation retries (limit 5). While that operation runs,
kubectl -n registry delete statefulset zot-v2 --cascade=orphanremoves only the StatefulSet object; the pod, the ControllerRevisions andPersistentVolumeClaim/data-zot-v2-0lose their owner reference and stay. The next attempt creates the StatefulSet, which adopts the pod (same ControllerRevision hash, the hash covers the pod template only) and restores the PVC owner reference. No pod restart.--cascade=orphanis mandatory:whenDeleted: Deleteputs an owner reference on the PVC, so a cascading delete would remove the local index.Proof
bash tests/check.shgreen on5601928.https://claude.ai/code/session_01LeVatedQ4sCA1u6LHjo7B5