Fixed
- The
appandvoicecontainers could not be created: they setrunAsNonRoot: truewithout a numeric user, and the image declares a named user (USER ragleap), so the kubelet refused with "container has runAsNonRoot and image has non-numeric user (ragleap)". They now setrunAsUser: 10001, the UID the Dockerfile gives that user. In the chart it is a value (app.runAsUser,voice.runAsUser); the rawk8s/manifests carry the number. Found by running the chart'sappandvoicepods on kind with theghcr.io/ragleap/ragleap-app:0.11.0image on 2026-10-21; earlier CI runs scaled these pods to zero, so the problem had not been seen.
Known limitations
- The chart does not create the Secret
ragleap-app-env, which both pods read throughenvFrom. Create it yourself, or the pods stay inCreateContainerConfigError. - Whether the pods then start and become Ready was not verified when this entry was written; see the repository's
ops-app-pods-testworkflow for the diagnostic.
Verified on PyPI: the 0.6.1 wheel has 26 files under helm/; 21 files under k8s/; and the project Source URL is https://github.com/ragleap/ragleap-core/tree/main/packages/ragleap-ops
pip install ragleap-ops==0.6.1
Verified after release
On kind (GitHub runner), with chart 0.6.1 and ghcr.io/ragleap/ragleap-app:0.11.0 and a placeholder ragleap-app-env Secret, both the app and voice pods became Ready (1/1 Running). Readiness is a TCP check on the port, so this shows the image starts and listens, not that the application works. Run: ops-app-pods-test, 39823387574.
Note: the Dependabot check on this commit was red (a Pillow security update that cannot be applied because the fix needs Python 3.11 or newer; it concerns packages/ragleap-rag, not this package). The release gate was run with that one check explicitly ignored.