feat(helm): wire dashboard.* values + Secret-mounted session secret into chart#153
Closed
debsahu wants to merge 2 commits intowind-c:mainfrom
Closed
feat(helm): wire dashboard.* values + Secret-mounted session secret into chart#153debsahu wants to merge 2 commits intowind-c:mainfrom
debsahu wants to merge 2 commits intowind-c:mainfrom
Conversation
Wires the embedded web dashboard (PR wind-c#151) into the Helm chart shipped in wind-c#137/wind-c#150. Operators can now: - Toggle the dashboard via `dashboard.enabled` (default: true, matching the broker default). - Tune password expiry via `dashboard.passwordExpiryDays`. - Pin the HMAC session secret across pod restarts by either referencing an existing Secret (`dashboard.sessionSecret.existingSecret`) or providing an inline value rendered into a chart-managed `<release>-dashboard` Secret. - Seed the initial admin password via the same Secret-or-inline pattern. Both fields are exported into the broker container via the existing broker env contract (`COMQTT_DASHBOARD_SESSION_SECRET`, `DASHBOARD_INITIAL_PASSWORD`) for both single-mode Deployment and cluster-mode StatefulSet. The rendered config gains a `dashboard:` block (enabled + expiry days) in the ConfigMap. The session-secret stays out of the ConfigMap and flows only via the env reference, so the value never lands in plaintext-rendered manifests. In cluster mode the broker still prefers the redis-backed shared secret automatically; the env reference acts as a fallback when redis is unreachable on boot. Schema, README values table, and three render paths (default, inline secret + existingSecret, disabled) verified via helm template.
This was referenced May 6, 2026
Contributor
Author
|
Closing per the agreed plan on #151: the dashboard work moves to a separate add-on module ( #154 (Gateway API) stays open since it is independent of the dashboard. |
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.
Follow-up to #150 (chart) and #151 (dashboard). Adds the
dashboard.*values block + Secret-mounted session secret + initial admin password wiring that #151's PR description marked as deferred.What's in
values.yaml— newdashboard:blockWiring
dashboard:block (enabled,password-expiry-days) injected into the rendered broker config for both single and cluster modes. The session secret deliberately stays out of the ConfigMap so it never lands in plaintext-rendered manifests.env:block via a newcomqtt.dashboardEnvhelper that wiresCOMQTT_DASHBOARD_SESSION_SECRETandDASHBOARD_INITIAL_PASSWORDfrom the configured Secret (existing or chart-managed).templates/dashboard-secret.yamlrenders a chart-managed<release>-dashboardSecret only when at least one inline value is provided. If everything points at existing Secrets, no chart-managed Secret is created.values.schema.jsongains adashboardschema with a reusablesecretRef$def.Cluster-mode note
The broker auto-shares an HMAC secret across cluster nodes via Redis (
comqtt:dashboard:secret) when Redis is configured. The env-mountedCOMQTT_DASHBOARD_SESSION_SECRETthen acts as a fallback if Redis is unreachable on boot. So in normal cluster operation the chart-side Secret is optional; in single-mode it's the only way to keep login cookies surviving a pod restart.Verification (
helm template ci .)dashboard:block in ConfigMap, noenv:block, no chart Secret renderedsessionSecret.value=...,initialPassword.existingSecret=my-existingsession-secretkey; env wires session to managed, initial password tomy-existing/admin-pwmode=cluster, replicaCount=3, initialPassword.value=...dashboard.enabled=falsedashboard: { enabled: false }only, no env, no Secrethelm lint .clean.Out of scope