mirror of
https://github.com/dani-garcia/vaultwarden.git
synced 2026-03-09 04:32:44 -05:00
[PR #6844] feat: add official Helm chart #7488
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/dani-garcia/vaultwarden/pull/6844
Author: @Rohmilchkaese
Created: 2/17/2026
Status: 🔄 Open
Base:
main← Head:helm-chart📝 Commits (2)
761d406feat: add official Helm chart834a194feat(helm): add env, secretEnv maps for flexible env var configuration📊 Changes
14 files changed (+1508 additions, -0 deletions)
View changed files
➕
helm/vaultwarden/.helmignore(+12 -0)➕
helm/vaultwarden/Chart.yaml(+18 -0)➕
helm/vaultwarden/README.md(+437 -0)➕
helm/vaultwarden/templates/NOTES.txt(+52 -0)➕
helm/vaultwarden/templates/_helpers.tpl(+133 -0)➕
helm/vaultwarden/templates/configmap.yaml(+40 -0)➕
helm/vaultwarden/templates/deployment.yaml(+228 -0)➕
helm/vaultwarden/templates/ingress.yaml(+45 -0)➕
helm/vaultwarden/templates/pvc.yaml(+33 -0)➕
helm/vaultwarden/templates/secret.yaml(+81 -0)➕
helm/vaultwarden/templates/service.yaml(+32 -0)➕
helm/vaultwarden/templates/serviceaccount.yaml(+14 -0)➕
helm/vaultwarden/templates/tests/test-connection.yaml(+16 -0)➕
helm/vaultwarden/values.yaml(+367 -0)📄 Description
Summary
Adds a production-ready Helm chart under
helm/vaultwarden/. Closes #316.Vaultwarden has no official Helm chart — issue #316 from 2019 only linked community charts, all of which are outdated or unmaintained. This chart provides a first-party, maintained deployment option for Kubernetes users.
Highlights
DATABASE_URLfrom a secret and composing the URL from parts via separatesecretKeyRef(ideal for Zalano Postgres Operator, CloudNativePG, etc.)readOnlyRootFilesystem: true,capabilities.drop: ["ALL"],seccompProfile: RuntimeDefault,runAsNonRoot: true,automountServiceAccountToken: false, tmpfs/tmpmountsecretKeyRef: Admin token, SMTP, SSO/OIDC, database, push notifications, Yubico — all supportexistingSecretfor external secret management (ExternalSecrets, Sealed Secrets, etc.)ingressClassName(not deprecated annotation), annotations, labels, multi-host TLShelm.sh/resource-policy: keep(prevents data loss on uninstall),storageClassName3-way handling (nil=cluster default,"-"=disable dynamic provisioning,"name"=explicit class), custom annotations/labelsfailon misconfiguration (e.g. admin enabled without token, postgresql without credentials)extraEnv,extraVolumes,extraVolumeMounts,initContainers,topologySpreadConstraints,priorityClassName,startupProbeChart structure
All env var names verified against source
Every environment variable in the chart was verified against
src/config.rsin the vaultwarden source.Test plan
helm lint --strict— passeshelm template— tested with 6 configurations (SQLite default, PostgreSQL URL, PostgreSQL compose-from-parts, Ingress+TLS, SSO+SMTP, all existingSecret refs)failtriggers for: admin without token, postgresql without credentials, postgresql without any DB config1/1 Running, 0 restartsreadOnlyRootFilesystem: trueworks (with/tmptmpfs and/dataPVC)helm testpasses (busybox wget to/alive)helm uninstall(resource-policy: keep)🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.