Git, CI/CD & GitOpsXCIX · Artifact Registry FailureRegistryFail
Impact on deployment — what stops working, what keeps working
What you'll learn
- Identify the four deployment paths that depend on the registry (image pull, Helm chart pull, signature verify, GitOps sync)
- Distinguish the paths that fail (new deploys, signature verification, GitOps reconciliation) from the paths that keep working (in-flight pods, cached images, source repos)
- Recognise the partial-degradation model: a registry outage is not all-or-nothing; cached images continue, signature verification fails, new deploys block
- Map the impact to severity tiers and identify the tier that triggers the failover decision
Prerequisites
Verified against Git 2.55.x teaching target; 2.40+ minimum · GitHub Actions continuous service; Aug 2026 documentation baseline · Argo CD v3.5.x teaching target; v3.0+ minimum · Flux v2.9.x · Sigstore Cosign v3.1.x · SLSA v1.2 · OCI Distribution Specification v1.1 · Git LFS v3.7.1 · Kubernetes (cross-course target) 1.36.x
A registry outage cascades into the deployment pipeline along four paths: image pull, Helm chart pull, signature verification, and GitOps reconciliation. Not all four paths fail at once, and not all four paths have the same criticality. The impact is a partial degradation, not an all-or-nothing outage. The production discipline is to distinguish what stops working from what keeps working, because the answer determines whether the failover decision is taken or the team waits out the outage.
flowchart LR
A["registry outage"] --> B["image pull fails"]
A --> C["Helm chart pull fails"]
A --> D["signature verify fails"]
A --> E["GitOps sync fails"]
B --> F["new pods blocked"]
C --> G["Helm installs fail"]
D --> H["cosign rejects image"]
E --> I["drift detection pauses"]
F --> J["in-flight pods survive"]
I --> K["source repo unaffected"]
The four paths that depend on the registry
A deployment pipeline touches the registry at four points. Each point has a different criticality, a different recovery behaviour, and a different signature in the log.
- Image pull. Every new pod that references the
registry must pull the image. A failure here blocks new
pods with
ImagePullBackOfforErrImagePull. The blast radius is every new pod and every restart that needs to re-pull the image. - Helm chart pull. Helm installations that pull the
chart from an OCI-based registry fail at the chart-pull
step. The blast radius is every Helm release that uses an
OCI chart and every
helm upgradethat re-pulls. - Signature verification. The admission controller that verifies cosign signatures against the registry’s signature store fails open (accepting unsigned images) or fails closed (rejecting every image), depending on the policy. The blast radius is the chain of trust.
- GitOps reconciliation. The Argo CD or Flux controller that reads the manifests from Git and reconciles the cluster still works — the manifests come from Git, not the registry — but a controller that references the registry to resolve image tags to digests pauses reconciliation until the registry returns.
What keeps working
A registry outage is partial, not total. The paths that keep working are the ones that do not depend on a fresh fetch from the registry.
- In-flight pods. A pod that has already pulled its
image and is running continues to run. The kubelet does
not re-pull an image unless the image pull policy is
Alwaysor the pod is restarted with a new generation. - Cached layers on the node. The kubelet’s image cache holds every image the node has ever pulled. A pod that requests an image the node has pulled before resolves from the cache without touching the registry. The trade-off is that the cache is per-node; a new node that has never pulled the image has nothing to fall back on.
- Source repositories. Git is not the registry. The GitOps controller reads manifests from Git, and the source-of-truth repositories are unaffected by a registry outage. The manifests, the values files, the Kustomize overlays are all reachable through the Git path.
- Drift detection. A GitOps controller that detects drift between the manifests in Git and the cluster state can still detect drift — the diff is computed from Git, not the registry. The reconciliation that applies the fix may fail, but the detection works.
# Inspect a node's image cache
crictl images | grep registry.example.com/app
The partial-degradation model
The production discipline is to treat a registry outage as a partial degradation with tiers, not as a single binary state.
- Tier 1 — minor. New deploys on existing nodes with
warm caches succeed. New nodes or restarted pods that
need to re-pull fail. The deploy log shows intermittent
ImagePullBackOff. No page. - Tier 2 — significant. New deploys fail cluster-wide. In-flight pods continue. Helm releases fail at the chart-pull step. The cluster is functional but cannot roll forward. The page fires.
- Tier 3 — critical. Signature verification fails. GitOps reconciliation pauses. Cached images continue but no new artifact can be admitted. The cluster is frozen at its last good state. The failover decision is taken.
The failover trigger is tier 3, not tier 2. A tier-2 outage can be absorbed by the existing buffer (in-flight pods continue, cached images serve) for the duration of the registry RTO. A tier-3 outage cannot.
Production discipline
- Cached images keep working; new pulls do not. A registry outage freezes new deploys, not in-flight pods.
- The failover trigger is tier 3, not tier 2. Tier 2 is absorbed by the buffer; tier 3 requires failover.
- Signature verification fails closed when the registry is unreachable. Failing open during an outage admits unsigned images.
- The cluster is only as warm as its coldest node. A pre-warmed image cache is the per-node defence.
Cross-course references
- Git, CI/CD & GitOps — Part XLV-02 (Digests and Content-Addressing) covers the digest pin that the tier-3 escalation depends on.
- Git, CI/CD & GitOps — Part XCVII-05 (Recovering the Artifact Registry) covers the recovery that the tier-3 failover triggers.
- Container Security for Production Sysadmins — Part VII (Registry Backup) covers the signature-store recovery the verification depends on.
Quiz
Knowledge check · 4 questions
Q1. A registry outage takes down the manifest endpoint. A pod that was running before the outage is restarted by a liveness probe failure. What is the most likely outcome?
Q2. A signature verification policy that fails open during a registry outage accepts every image, including images that the registry would have rejected.
Q3. Name the four deployment paths that depend on the registry and state which paths keep working during a registry outage.
Q4. Diagnose the deployment impact of a registry outage and recommend the failover decision.
A team's private Harbor registry is unreachable from the cluster. Existing pods across three clusters continue to run. New pods scheduled since the outage began enter ImagePullBackOff. A Helm release upgrade fails at the chart-pull step. The team's admission controller rejects every image whose cosign signature it cannot verify against the registry's signature store. The Argo CD controllers in each cluster report `Unable to resolve image digest` for applications that reference the registry. The team's RTO is 60 minutes; the outage has lasted 25 minutes.
Passing score: 75%. Answers are checked in this browser.