Skip to content

feat(ddn-workspace): Add external secrets support for HashiCorp Vault#61

Merged
tomhasura merged 4 commits into
mainfrom
feat/workspace-external-secrets
May 29, 2026
Merged

feat(ddn-workspace): Add external secrets support for HashiCorp Vault#61
tomhasura merged 4 commits into
mainfrom
feat/workspace-external-secrets

Conversation

@dliub

@dliub dliub commented May 28, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Wires the ddn-workspace chart into the same secret-refresher pattern already used by ndc-mongodb, ndc-snowflake-jdbc, and ndc-sqlserver-jdbc, so WORKSPACE_PASSWORD can be sourced from an external secret store (e.g. HashiCorp Vault) instead of a Kubernetes Secret.
  • Bumps chart version to v2026.05.28 and the common dependency to 0.0.19.
  • Adds global.externalSecrets / global.deploySecrets toggles, a local externalSecrets block, and an image.tagSuffix template that appends -env-loader when both toggles are enabled.
  • Guards templates/secrets.yaml with global.deploySecrets (in addition to the existing auth-proxy check) and adds templates/external-secrets-config.yaml which renders the common.externalsSecretsConfig helper.
  • Documents the Vault flow, prerequisites, required secret key (WORKSPACE_PASSWORD), and example overrides in the chart README.

This follows the same pattern landed in #58 / #59 for ndc-mongodb / ndc-snowflake-jdbc / ndc-sqlserver-jdbc — no behavior change unless global.externalSecrets.enabled and externalSecrets.enabled are both set to true.

Originating thread: https://prompt.ql.app/project/hasuraql/promptql-playground/thread/3c7e0165-6c4d-4e19-9a28-22405407c5dd

Test plan

  • helm template with defaults renders identical output to the current chart (no external-secrets-config resource, Secret rendered as before).
  • helm template with global.externalSecrets.enabled=true, externalSecrets.enabled=true, global.deploySecrets=false skips the Secret, renders the external-secrets config, and the deployment image is suffixed with -env-loader.
  • helm template with workspaceAuthProxy.enabled=true continues to skip the Secret as before.
  • helm lint charts/ddn-workspace passes.

🤖 Generated with Claude Code

Wires the ddn-workspace chart into the same secret-refresher pattern
used by ndc-mongodb / ndc-snowflake-jdbc / ndc-sqlserver-jdbc, so the
WORKSPACE_PASSWORD can be loaded from HashiCorp Vault (or another
external secret store) instead of a Kubernetes Secret.

- Bump chart version to v2026.05.28 and common dependency to 0.0.19
- Add global.externalSecrets / global.deploySecrets toggles
- Add local externalSecrets toggle and image.tagSuffix for env-loader
- Guard templates/secrets.yaml with global.deploySecrets
- Add templates/external-secrets-config.yaml using common helper
- Document the Vault flow and example overrides in the README

Co-authored-by: Tomasz Skawinski <tom@hasura.io>
@dliub

dliub commented May 28, 2026

Copy link
Copy Markdown
Contributor Author

/claude-review

@tomhasura tomhasura self-requested a review May 28, 2026 21:09
Aisura and others added 2 commits May 28, 2026 14:11
Storing the secret under `HASHED_PASSWORD` matches the env var name the
workspace entrypoint already expects, so the custom `env:` block that
remapped `WORKSPACE_PASSWORD` to `HASHED_PASSWORD` is no longer needed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adds the projected ServiceAccount token option to the example overrides,
nested under hashicorp.auth where common@0.0.19 actually reads it, plus
a short "How It Works" subsection describing the three things that flip
on when projectedToken.enabled=true (projected volume, mount path,
auto-switched jwt_path). Also bumps the example image.tag from 2.6.1 to
2.7.9 and notes the minimum chart release.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@tomhasura tomhasura merged commit e96a3c2 into main May 29, 2026
3 checks passed
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.

2 participants