Summary
The chart's templates/nebariapp.yaml auth: block passes through some but not all of the operator's AuthConfig fields. Helm values set under nebariapp.auth.* for the missing fields are silently dropped before reaching the NebariApp CR.
The current template renders:
enabled, provider, provisionClient, redirectURI, scopes
enforceAtGateway, forwardAccessToken (via hasKey checks — good)
tokenExchange (via toYaml — good)
Missing relative to the operator's AuthConfig (in api/v1/nebariapp_types.go):
denyRedirect
clientSecretRef
groups
issuerURL
spaClient
deviceFlowClient
keycloakConfig
This is the best-of-three chart coverage but still leaks the long-tail OIDC fields (group gating, generic-OIDC providers, public SPA clients, device flow, fine-grained Keycloak config) — none of which can be configured from helm values today.
Proposed fix
Same pattern recommended in nebari-nebi-pack#20 — replace the hand-curated subset with a toYaml passthrough, matching the pattern already used for routing: higher in the same template:
{{- with .Values.nebariapp.auth }}
auth:
{{- toYaml . | nindent 4 }}
{{- end }}
Move the chart-side defaults (enabled: true, provider: keycloak, provisionClient: true, redirectURI: /oauth2/callback) into values.yaml so they still apply.
This eliminates the drift risk: new fields the operator adds to AuthConfig are immediately deployer-controllable without chart updates.
Definition of Done
Related
Summary
The chart's
templates/nebariapp.yamlauth:block passes through some but not all of the operator'sAuthConfigfields. Helm values set undernebariapp.auth.*for the missing fields are silently dropped before reaching theNebariAppCR.The current template renders:
enabled,provider,provisionClient,redirectURI,scopesenforceAtGateway,forwardAccessToken(viahasKeychecks — good)tokenExchange(viatoYaml— good)Missing relative to the operator's
AuthConfig(inapi/v1/nebariapp_types.go):denyRedirectclientSecretRefgroupsissuerURLspaClientdeviceFlowClientkeycloakConfigThis is the best-of-three chart coverage but still leaks the long-tail OIDC fields (group gating, generic-OIDC providers, public SPA clients, device flow, fine-grained Keycloak config) — none of which can be configured from helm values today.
Proposed fix
Same pattern recommended in nebari-nebi-pack#20 — replace the hand-curated subset with a
toYamlpassthrough, matching the pattern already used forrouting:higher in the same template:Move the chart-side defaults (
enabled: true,provider: keycloak,provisionClient: true,redirectURI: /oauth2/callback) intovalues.yamlso they still apply.This eliminates the drift risk: new fields the operator adds to
AuthConfigare immediately deployer-controllable without chart updates.Definition of Done
templates/nebariapp.yamlrenders allnebariapp.auth.*helm values without dropping fieldsenabled: true,provider: keycloak,provisionClient: true,redirectURI: /oauth2/callback) preserved viavalues.yamlNebariApp.spec.authRelated