--plain-http, Registry-Auth und Retry-Backoff, eine kopierbare Befehlsliste sowie FAQ zu HTTP 429/401 und TLS. Vertiefung: Technisches Blog, GHCR- vs. Registry-Pull-Matrix (Container), Harbor-Webhook & Image-Prefetch, Nix-Substituter-CI-Matrix und die MacPull-Startseite.
Strukturierte Daten: BlogPosting, BreadcrumbList, HowTo und FAQPage (JSON-LD) sind im Kopfbereich hinterlegt.
Szenarien & Risiken: Helm/OCI-Pulls scheitern in der CI so
Seit Helm 3 können Charts als OCI-Artefakte in einer Container-Registry liegen. Auf grenzüberschreitenden Pfaden treten dieselben Klassen von Störungen auf wie bei Image-Pulls – nur mit Helm-spezifischen Schwerpunkten: mehrere aufeinanderfolgende HTTP-Runden für Manifest und Blobs, Abhängigkeitsbäume in Chart.yaml, und oft gemeinsame Rate-Limits mit Docker-Workflows auf derselben Registry.
Typische Fehlermodi im Jahr 2026: (1) 429/Quota, wenn viele Jobs gleichzeitig helm pull oci:// oder helm dependency build ausführen; (2) 401/403, wenn CI-Tokens kürzer leben als der längste Schritt oder der falsche Registry-Pfad in oci:// steht; (3) TLS/x509, wenn Firmen-CAs auf dem Runner fehlen oder der Hostname nicht zum Zertifikat passt; (4) Timeouts durch schmale Uplinks oder aggressive parallele helm upgrade --install-Matrix-Jobs, die sich gegenseitig I/O und Registry-Slots nehmen.
--plain-http „repariert“ schnell Lab-Setups, verschiebt aber Compliance-Risiko und MITM-Angriffsfläche – in Produktions-CI vermeiden.Klassifizieren Sie Vorfälle intern als rate, auth, tls oder capacity – dann lässt sich die Matrix unten gezielt anwenden, statt willkürlich Flags zu drehen.
Entscheidungsmatrix: Parallelität, --plain-http, Auth, Backoff
Die Tabelle fasst Startwerte zusammen: Sie sind für Remote-Mac-CI gedacht und sollten nach einer Messwoche (429-Rate, Pull-p95, freier Speicher) feinjustiert werden.
| Runner-Profil | Parallele Helm-Operationen / Release-Jobs | --plain-http |
Registry-Auth & Token-Rotation | Backoff (429 / 5xx / Connect) |
|---|---|---|---|---|
| Konservativ (geteilter Pool, instabiles WAN) | max. 1 gleichzeitiger helm pull pro Job; Matrix-Beine seriell oder 2 mit Semaphor |
Nein – TLS + Firmen-CA | helm registry login pro Stage; Token-TTL > längster Schritt; Rotation bei 50 % der TTL planen |
429: 4→8→16→32→64 s (max. 120); 5xx: 1→3→9→27→60 (max. 300) |
| Ausgewogen (dedizierter Mac, stabiles Egress) | 2 parallele Pulls oder 2 Matrix-Worker mit globalem Limit | nur isoliertes Lab | Robot/OIDC; getrennte read-Tokens für Charts vs. Images; Mitternachts-Refresh + Alarm bei Drift | 429: 2→4→8→16→32 (max. 90); 5xx: 1→2→6→18→45 (max. 180) |
| Aggressiv (eigener Cache, gleiche Region) | 3–4 nur mit regionalem Pull-Through und genug freier SSD | Nein in Prod | Kurz-TTL (12–24 h) + automatisierte Ausstellung; kein PAT in Welt-lesbarer Config | 429: 1→2→4→8→16 (max. 60); 5xx: 0,5→1→3→9 (max. 60) |
Leitplanken: Steigt die 429-Rate nach Erhöhung der Parallelität, eine Stufe zurück und Jitter auf den Backoff legen – nicht zusätzliche blinde Retries. Bei 401 zuerst Token/Scopes prüfen, nicht die Retry-Treppe verlängern.
Hinweis zu „parallelem Install“: Unterscheiden Sie bewusst zwischen (a) mehreren helm upgrade --install-Prozessen, die jeweils Charts nachziehen, und (b) einem einzelnen Release mit vielen Subcharts. In Fall (a) begrenzen Sie die Anzahl gleichzeitiger Helm-Prozesse im Orchestrator; in Fall (b) hilft ein vorgeschalteter helm pull/helm dependency build mit Cache-Verzeichnis mehr als das Hochdrehen von CI-Worker-Zählern. So vermeiden Sie, dass zwei Ebenen Parallelität dieselbe Registry-Quota doppelt belasten.
Ausführbare Checkliste: Login, helm pull oci://, Umgebungsvariablen
Platzhalter in GROSSBUCHSTABEN an Ihre Secrets anpassen. Helm 3 unterstützt OCI nativ; ältere Umgebungen benötigen ggf. HELM_EXPERIMENTAL_OCI=1 – prüfen Sie die Helm-Minor-Version im Runner-Image.
1) Registry-Anmeldung (stdin-sicher, isoliertes Config-Verzeichnis pro Job):
export HELM_CONFIG_HOME="${CI_PROJECT_DIR:-$PWD}/.helm-ci-config"
mkdir -p "$HELM_CONFIG_HOME"
echo "$REGISTRY_TOKEN" | helm registry login REGISTRY_HOST \
--username REGISTRY_USER --password-stdin
2) Chart als OCI ziehen und optional entpacken:
helm pull oci://REGISTRY_HOST/NAMESPACE/CHART --version X.Y.Z \
--destination ./charts --untar
3) Abhängigkeiten mit lokalem Cache (weniger wiederholte Blobs):
export HELM_CACHE_HOME="${CI_PROJECT_DIR:-$PWD}/.helm-cache"
mkdir -p "$HELM_CACHE_HOME"
helm dependency build ./PATH_TO_CHART
4) TLS / Proxy (grenzüberschreitend konsistent):
export SSL_CERT_FILE="/etc/ssl/certs/ca-bundle.pem"
export HTTPS_PROXY="${HTTPS_PROXY:-}"
export NO_PROXY="${NO_PROXY:-127.0.0.1,localhost,.internal.company}"
5) Parallele CI-Jobs deckeln (Beispiel Semaphor mit GNU parallel oder xargs):
# maximal 2 gleichzeitige pulls
printf '%s\n' "${RELEASE_LIST[@]}" | xargs -I{} -P 2 bash -c 'helm pull oci://.../{} ...'
Nach Abschluss: helm registry logout REGISTRY_HOST in einer Trap, wenn keine Folge-Jobs dieselbe Session brauchen. Für die Container-Seite derselben Pipeline bleibt die GHCR-/Docker-Matrix die passende Ergänzung.
FAQ: HTTP 429, 401, Zertifikatsfehler
429 Too Many Requests. Parallelität laut Matrix senken; Retry-After befolgen; wenn möglich regionalen Mirror näher am Runner einsetzen. Mehrere Teams auf dieselbe OCI-URL: gemeinsames Budget im Orchestrator vereinbaren.
401 Unauthorized. Token-Laufzeit mit der längsten Helm-Phase abgleichen; oci://-Host exakt wie in der Registry-UI; Scopes für OCI-Lesezugriff prüfen. Kein endloses Retry ohne frische Credentials.
x509: certificate signed by unknown authority / Hostname mismatch. Unternehmens-CA installieren, SSL_CERT_FILE setzen, Hostnamen mit SAN abstimmen. --plain-http ist kein Ersatz für sauberes PKI in Produktion.
Fazit & nächste Schritte
Zusammenfassung: OCI-Charts in der CI sind wartbar, wenn Sie TLS-first bleiben, Token-Rotation kürzer als die längste Pipeline halten, Parallelität bewusst begrenzen und 429/5xx-Backoff zentral vorgeben. Die Matrix oben liefert reproduzierbare Startwerte für Remote-Mac-Runner; messen Sie eine Woche lang, bevor Sie zur aggressiven Zeile springen.
Knotenwahl für grenzüberschreitende Pulls: Wählen Sie einen dedizierten Apple-Silicon-Knoten mit ausreichend SSD-Puffer für HELM_CACHE_HOME und – wo möglich – geografische Nähe zu Ihrer Chart-Registry oder einen Pull-Through dazwischen; geteilte Pools konservativ parametrisieren. Öffentliche Informationen zu Plänen und Kaufmöglichkeiten: Preise, Kaufen, Hilfe, Technisches Blog, Startseite – alles ohne Anmeldung lesbar.
Wer bereits Harbor- oder GHCR-Prozesse fährt, verknüpft Helm-OCI mit den bestehenden Registry-Runbooks: Harbor-Prefetch-Artikel und GHCR-Pull-Matrix ergänzen diese Seite praktisch.
Remote-Mac-CI mit planbarer Registry-Last
Apple-Silicon-Knoten für Helm-OCI, Docker und Builds – Pläne vergleichen oder im Blog vertiefen.