Add official Helm chart for nuts-admin - #330
Merged
Merged
Conversation
Adds charts/nuts-admin with Deployment, Service, ConfigMap (config.yaml), optional Ingress, and NUTS_NODE_ADDRESS/NUTS_CONFIGFILE env wiring, following the same publish pattern as nuts-node-chart: versioned independently under charts/, released via chart-releaser to GitHub Pages on push to main. Lets nuts-knooppunt depend on this chart directly instead of maintaining its own copy. Also anchors the "nuts-admin" gitignore entry to the repo root so it only matches the built binary, not the new charts/nuts-admin directory. Assisted by AI
Adds oidc.existingSecret/oidc.existingSecretKey values, injected as NUTS_OIDC_CLIENT_SECRET via secretKeyRef, so the secret doesn't have to be set through config.oidc.client.secret (which lands in the ConfigMap in plaintext). Assisted by AI
Member
Author
|
Tested this as a drop-in replacement for nuts-knooppunt's own stopgap
nuts-knooppunt is holding off switching over until this merges and the chart publishes via |
JorisHeadease
requested changes
Sep 16, 2026
- Switch chart publishing from chart-releaser/GitHub Pages to pushing an OCI artifact to ghcr.io, matching nuts-knooppunt's own chart publishing pattern and avoiding the manual Pages setup step. - Add checksum/config pod annotation so pods restart when config.yaml changes. - Fix containerPort: it was tied to service.port, so changing the Service's exposed port silently broke health checks and routing since the app still listens on its own configured port. Derive it from config.port (default 1305) instead. - Fail fast when autoscaling.enabled and config.oidc.enabled are both set: nuts-admin keeps OIDC sessions in memory, which breaks across replicas. Assisted by AI
Drop the HPA template and autoscaling values entirely instead of just checking autoscaling.enabled: as pointed out in review, replicaCount could be bumped directly with autoscaling disabled and OIDC enabled, bypassing the earlier guard. nuts-admin's in-memory sessions don't support running more than one replica at all, so there's no scenario where autoscaling makes sense for this chart. The fail-fast check now guards replicaCount > 1 combined with config.oidc.enabled directly. Assisted by AI
JorisHeadease
approved these changes
Sep 16, 2026
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
charts/nuts-admin: a Helm chart with Deployment, Service, ConfigMap (renderingconfig.yaml), optional Ingress, andNUTS_NODE_ADDRESS/NUTS_CONFIGFILEenv wiring..github/workflows/helm-chart-release.yaml: publishes the chart as an OCI artifact toghcr.ioon push tomainwhencharts/changes, same pattern as nuts-knooppunt's chart publishing. Nohelm repo add/GitHub Pages needed — install viahelm install oci://ghcr.io/nuts-foundation/nuts-admin-chart --version <VERSION>..gitignore: thenuts-adminentry (meant for the built binary at the repo root) was unanchored and also matchedcharts/nuts-admin/; anchored it to/nuts-admin.oidc.existingSecret/oidc.existingSecretKeyvalues: when set, the OIDC client secret is injected asNUTS_OIDC_CLIENT_SECRETfrom an existing KubernetesSecretinstead of going throughconfig.oidc.client.secret, which would land in theConfigMapin plaintext. The rest of the OIDC config (enabled,metadata,client.id,scope) still goes throughconfig.oidc.checksum/configpod annotation so pods restart whenconfig.yamlchanges.containerPort: it was tied toservice.port, so changing the Service's exposed port silently broke health checks/routing since the app still listens on its own configured port. Now derived fromconfig.port(default1305).replicaCount > 1andconfig.oidc.enabledare both set.Once merged and released, nuts-knooppunt's ad-hoc
helm/nutsadmincopy can depend on this chart directly instead of maintaining its own.Closes #329
Test plan
helm lint charts/nuts-adminhelm templatewith default values, and withingress.enabled=true,config.credentialprofiles[0].*, andoidc.existingSecretoverrides — all render valid manifestshelm template --set replicaCount=2 --set config.oidc.enabled=truefails as intended;replicaCount=1with OIDC enabled succeedsRelease Chartworkflow publishes correctly toghcr.ioafter mergeAssisted by AI