You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Seit dem 2026-09-29 scheitert push-kustomize-base (Modul kcl, v0.132.0) reproduzierbar beim Rendern, noch vor dem Push. KCL lädt seine Abhängigkeiten anonym aus ghcr, und ghcr antwortet mit 429:
failed to get package with '1.31' from 'ghcr.io/kcl-lang/k8s'
failed to resolve 1.31: GET "https://ghcr.io/v2/kcl-lang/k8s/manifests/1.31":
response status code 429: toomanyrequests: retry-after: 1.014828ms, allowed: 44000/minute
Die Folge: Die Preview-Umgebungen aus stuttgart-things/stuttgart-things#3065 (app-dev) bekommen ihr Kustomize-Artefakt pr-<n>-<sha> nicht. Die Applications für light-catcher und wled-mock bleiben auf Sync „Unknown“. Heute Morgen (05:54 UTC) lief derselbe Workflow noch durch.
Das KCL-Rendern scheitert aber davor. Seine Ausgabe (das 429) zeigt Dagger nicht, erst --progress plain lokal macht sie sichtbar. Auf die Zeile mit dem Push schaut man zuerst, sie ist aber die falsche Fährte.
Ursache im Modul
kcl/kustomize.go, PushKustomizeBase: Die Zugangsdaten (user/password) kommen herein, genutzt werden sie aber erst nach dem Rendern für oras login. Das Rendern selbst (kcl run über Run) läuft anonym. Anonyme Pulls von ghcr sind gedrosselt, angemeldete haben deutlich höhere Grenzen.
Vorschlag
Vor dem Rendern bei der Registry anmelden:kcl registry login <registry> -u $USER -p $PASSWORD, mit denselben Secrets, die der Push ohnehin bekommt. Wie in kcl/push.go schon für kcl mod push. Für ghcr-Abhängigkeiten reicht das Workflow-Token (packages: read).
Bei 429 wiederholen: ein paar Versuche mit Backoff um den Abhängigkeits-Pull bzw. kcl run. retry-after liegt im Millisekundenbereich; KCL selbst wiederholt nicht.
Die Fehlerausgabe des Renderns sichtbar machen: Der Exit-Code des KCL-Schritts sollte mit seiner stderr hochkommen, nicht als Container.stdout ERROR am Push.
Danach das Modul releasen und dagger-kcl-module in stuttgart-things/github-workflow-templates (call-push-kustomize.yaml, heute v0.132.0) anheben. Das betrifft jedes Repo, das Kustomize-Basen per PR pusht, also alle homerun2-Komponenten und schmetterpause.
Nachtrag nach Messung: Die 429 treffen gezielt viel gezogene kcl-lang-Pakete (k8s:1.30, k8s:1.31, crossplane:1.17.3), mit und ohne Anmeldung, sporadisch: dieselbe Manifest-URL antwortet innerhalb einer Minute mal 200, mal 429. stuttgart-things/*-Pakete antworten 200, githubstatus.com meldet keine Störung. Die Anmeldung allein löst es also nicht. Der PR bringt Anmeldung, Wiederholung und eine lesbare Fehlermeldung. Gegen einen längeren Block hilft nur ein Spiegel der kcl-lang-Abhängigkeiten in einer eigenen Registry oder vendorte Abhängigkeiten.
Ausgerollt und belegt: v0.133.1 (#392) über stuttgart-things/github-workflow-templates#194. In stuttgart-things/homerun2-light-catcher#78 lief ein frischer Lauf mit kcl@v0.133.1. Die Wiederholungen bei 429 und der lesbare Fehler kcl run failed: … waren im CI-Log zu sehen, solange ghcr sperrte. Nachdem ghcr kcl-lang/k8s wieder auslieferte, gingen beide Pushes durch, und die Preview auf app-dev ist komplett. Gegen eine längere Sperre bleibt stuttgart-things/kcl#323.
Fixed by #392 (f49f635): kcl/auth.go logs in to the registry, retries rate limits (429), and PushKustomizeBase renders with the push credentials (kcl/kustomize.go). Tests are in kcl/auth_test.go. If needed, check the module pin in call-push-kustomize.yaml (github-workflow-templates).
Activity
patrick-hermann-sva commentedon Sep 29, 2026
Nachtrag nach Messung: Die 429 treffen gezielt viel gezogene
kcl-lang-Pakete (k8s:1.30,k8s:1.31,crossplane:1.17.3), mit und ohne Anmeldung, sporadisch: dieselbe Manifest-URL antwortet innerhalb einer Minute mal 200, mal 429.stuttgart-things/*-Pakete antworten 200, githubstatus.com meldet keine Störung. Die Anmeldung allein löst es also nicht. Der PR bringt Anmeldung, Wiederholung und eine lesbare Fehlermeldung. Gegen einen längeren Block hilft nur ein Spiegel derkcl-lang-Abhängigkeiten in einer eigenen Registry oder vendorte Abhängigkeiten.fix(kcl): render with the push's credentials, retry registry rate lim…
chore(release): 0.133.1 [skip ci]
fix(kcl): dagger kcl module v0.132.0 -> v0.133.1 -- render with crede…
patrick-hermann-sva commentedon Sep 29, 2026
Ausgerollt und belegt: v0.133.1 (#392) über stuttgart-things/github-workflow-templates#194. In stuttgart-things/homerun2-light-catcher#78 lief ein frischer Lauf mit
kcl@v0.133.1. Die Wiederholungen bei 429 und der lesbare Fehlerkcl run failed: …waren im CI-Log zu sehen, solange ghcr sperrte. Nachdem ghcrkcl-lang/k8swieder auslieferte, gingen beide Pushes durch, und die Preview auf app-dev ist komplett. Gegen eine längere Sperre bleibt stuttgart-things/kcl#323.patrick-hermann-sva commentedon Oct 7, 2026
Fixed by #392 (f49f635):
kcl/auth.gologs in to the registry, retries rate limits (429), andPushKustomizeBaserenders with the push credentials (kcl/kustomize.go). Tests are inkcl/auth_test.go. If needed, check the module pin incall-push-kustomize.yaml(github-workflow-templates).