Repository navigation
26.9.0
We are proud to announce the release of:
✨ ✨ ✨ ✨ ✨ ✨ ✨ ✨ ✨
Ryax 26.9.0
✨ ✨ ✨ ✨ ✨ ✨ ✨ ✨ ✨
Stability and security updates, plus a GitOps-ready Helm chart and a rebuilt web interface.
New features
- GitOps installs. The chart renders without a cluster connection, so ArgoCD and
Flux no longer mint fresh credentials on every sync. Setglobal.secrets.create=false
to supply the secrets yourself. - Pick the Ingress controller. Ryax's Ingresses name their class through
global.ingress.className, overridable per service or switched off with
<subchart>.ingress.enabled=false. The bundled Traefik no longer registers itself as
the cluster-wide default class. - Pod placement.
global.tolerationsandglobal.affinityapply to every Ryax pod,
with per-subchart overrides; the worker charts gainedtolerationsandnodeSelector. - Per-site action registry. A worker whose nodes cannot resolve the registry the
Runner recorded overrides it withinternalRegistryOverride. - Rebuilt web interface. Angular 16 → 21, Nx 22, TypeScript 5.9.
- Generated API reference. https://docs.ryax.tech/reference/api/ is now built from
the service sources on every release, so it cannot drift again — the 26.7.0 document
still described 26.2.0.
Bug fixes and Improvements
- Action builds no longer get stuck in "Starting". When the builder reported back before
the queue had committed the action's status, the move to "Building" was lost, and the
successful build that followed was refused as well — leaving the action in "Starting"
for good and, since builds run one at a time, blocking every action queued behind it.
The Library now also offers Cancel Build while an action is "Starting" or "Cancelling",
so a stalled build can be cleared by hand. - Prometheus keeps its metrics across restarts: the volume request sat one level too high
in the values and was silently ignored, leaving it on anemptyDir. - Kubernetes worker database upgrades work again — the PostgreSQL service name and the
database URL now agree, so the migration init container resolves its host. - IntelliScale no longer restarts on unrelated configuration changes.
- The Runner and Repository APIs moved to FastAPI and pydantic; Studio dropped
marshmallow; the Authorization service is now part of the core service. - The V1 worker protocol and the legacy worker module are removed.
- Container image publishing is reproducible again, fixing intermittent
Digest did not matchfailures. - Security fixes across the stack, including
fast-uri3.1.6 and thejs-yaml,svgo
andextract-zipadvisories, plus a repaired image CVE scan. - Observability dependencies updated: kube-prometheus-stack 88.x, Loki 7.3, Alloy 1.12,
Traefik 41.5.
Upgrade to this version
Restore your values file if you do not have it:
helm get values -n ryaxns ryax --output yaml > values.yamlAdmins should take care of the following elements when upgrading to this version:
--take-ownershipis required when upgrading from 26.7.0. Three credential
secrets used to be created as Helm hook resources, which Helm never records as part
of the release: the Studio password encryption key in the main chart, and the
PostgreSQL credentials in both worker charts. They are now ordinary chart-managed
resources, so Helm finds them un-owned and refuses the upgrade with
invalid ownership metadataunless you let it adopt them. Adoption preserves the
existing values -- the templates read the current secret before falling back -- so the
encryption key and the database passwords are unchanged.- Prometheus storage: if your values set
kube-prometheus-stack.prometheus.storage.volumeClaimTemplate, move it to
prometheus.prometheusSpec.storageSpecand add
accessModes: ["ReadWriteOnce"]. The old key was never read. There is no metric
history to preserve, since Prometheus was running on anemptyDir. - Traefik: the bundled instance no longer claims Ingresses that name no class. Name
<release-name>-traefikon your own Ingresses, or mark your controller as the cluster
default. - Workers relying on the old
internalRegistryOverridedefault: on the SLURM_SSH
chart it changed fromryax-registry:5000to empty. If you never set it yourself, set
it explicitly to keep pulling through the in-cluster registry. On a Kubernetes worker
whose nodes cannot resolve the Runner's address, use127.0.0.1:30012. - API users: the Repository V1 endpoints
/api/repository/modulesand
/api/repository/modules/{module_id}are removed; use/api/repository/v2/. - Still on the pre-26.7.0
ryax-workerchart: migrate toryax-worker-k8sor
ryax-worker-slurm-sshfirst, as the V1 worker protocol is gone.
Then run the upgrade:
helm upgrade ryax oci://registry.ryax.org/release-charts/ryax-engine:26.9.0 \
-n ryaxns \
--take-ownership \
-f values.yamlAnd each worker with its own values:
helm upgrade ryax-worker-k8s oci://registry.ryax.org/release-charts/ryax-worker-k8s:26.9.0 \
-n ryaxns \
--take-ownership \
-f worker.yaml