docs(registries): the codeberg fallback does not cover zot being down #252
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/registry-mirror-fallback"
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?
The comment on the codeberg.org mirror claimed the second endpoint covers
zot down or empty. Only empty was ever true, and the difference cost ~20 minutes of total CI outage on 2026-09-04.containerd walks the endpoint list on a 404 and treats any other status as fatal without trying the next endpoint. A zot with no ready backend is a 503 from the gateway, not a 404.
It bites because zot's own image is on codeberg.org and is therefore mirrored through zot. While any node still holds that image spegel serves the replacement pod and nothing shows. Lose it on every node at once (wiping containerd content fleet-wide: a repartition, a cold rebuild) and the cluster cannot start the one service that could serve it.
Records the break-glass
k3s ctrpull, including the two things that were actually needed live: tag as well as pull, and do not delete the zot pod.No rendered config changes — mirror list, endpoints and configs are byte-identical. But the k3s-registries DaemonSet hashes whole file bytes, so merging this still takes the serialized fleet-wide k3s restart while rendering identical containerd config. Worth timing deliberately.
https://claude.ai/code/session_01MdSbMhzabSbpG8TtP9Ur3H