Skip to content

feat(chart): expose httpRoute.tlsSecretName for pre-provisioned TLS secrets - #105

Merged
viniciusdc merged 1 commit into
mainfrom
fix/nebariapp-tls-secretname-101
May 28, 2026
Merged

feat(chart): expose httpRoute.tlsSecretName for pre-provisioned TLS secrets#105
viniciusdc merged 1 commit into
mainfrom
fix/nebariapp-tls-secretname-101

Conversation

@viniciusdc

Copy link
Copy Markdown
Collaborator

Summary

Closes #101.

The NebariApp template (charts/nebari-landing/templates/nebariapp.yaml) only emitted routing.tls.enabled, and values.yaml exposed no secretName under httpRoute. So on a cluster that already has a pre-provisioned wildcard TLS secret (e.g. an enterprise-CA-signed cert in the gateway namespace), there was no values path to point the landing page at it — the operator fell back to its cert-manager flow, which on a selfsigned-issuer cluster yields a browser-untrusted cert or wedges the Certificate in SecretMismatch.

The operator has supported spec.routing.tls.secretName since v0.1.0-alpha.20 (nebari-dev/nebari-operator#114), already in use by NIC — the chart just didn't surface it.

What changes

This is option 2 from the issue — the surgical, non-breaking fix. An optional httpRoute.tlsSecretName value, emitted under routing.tls only when set:

     tls:
       enabled: {{ .Values.httpRoute.tls }}
+      {{- with .Values.httpRoute.tlsSecretName }}
+      secretName: {{ . | quote }}
+      {{- end }}

plus the documented value in values.yaml (defaults to "").

I deliberately did not take option 1 (full toYaml passthrough on the routing block). Unlike the sibling data-science-pack chart — whose template is a thin passthrough — this chart hand-renders an opinionated NebariApp spec (keycloak protocol mappers, spaClient PKCE config) and sources routing from a separate httpRoute.* values shape. A true passthrough would mean restructuring httpRoute.*nebariApp.routing.*, a breaking values change, for no benefit to this specific fix.

Verification

helm template with nebariApp.enabled=true:

  • tlsSecretName unset (default): routing block renders byte-for-byte identical to before — routing.tls carries only enabled. Existing deployments unaffected.
  • tlsSecretName: my-wildcard-tls: renders secretName: "my-wildcard-tls" under routing.tls, landing in NebariApp.spec.routing.tls.secretName.

helm lint passes.

Acceptance criteria (from #101)

  • Setting a secretName value renders into NebariApp.spec.routing.tls.secretName.
  • When unset, behavior is unchanged from today.
  • Documented in values.yaml, pointing at the enterprise-CA / pre-provisioned-secret use case.

Related

…ecrets

The NebariApp template only emitted routing.tls.enabled, so there was no
values path to set routing.tls.secretName. On clusters with a pre-provisioned
wildcard TLS secret (e.g. an enterprise-CA-signed cert in the gateway
namespace), the operator had no choice but to fall back to its cert-manager
flow — which on a selfsigned-issuer cluster produces a browser-untrusted cert
or wedges the Certificate in SecretMismatch.

Add an optional httpRoute.tlsSecretName value, emitted under routing.tls only
when set. Unset renders identically to before (verified with helm template),
so existing deployments are unaffected. Requires the operator's
routing.tls.secretName support (>= v0.1.0-alpha.20).
@github-actions

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Docker images built for this PR

Branch tag: fix-nebariapp-tls-secretname-101

Component Image Platforms
webapi quay.io/nebari/nebari-webapi:fix-nebariapp-tls-secretname-101 linux/amd64 · linux/arm64
frontend quay.io/nebari/nebari-landing:fix-nebariapp-tls-secretname-101 linux/amd64 · linux/arm64

To deploy this PR locally:

helm upgrade --install nebari-landing charts/nebari-landing \
  --namespace nebari-system \
  --set webapi.image.tag=fix-nebariapp-tls-secretname-101 \
  --set frontend.image.tag=fix-nebariapp-tls-secretname-101

@viniciusdc
viniciusdc merged commit 9203a50 into main May 28, 2026
20 checks passed
@viniciusdc
viniciusdc deleted the fix/nebariapp-tls-secretname-101 branch May 28, 2026 00:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Chart doesn't expose routing.tls.secretName for pre-provisioned TLS secrets

2 participants