1# Copyright IBM Corp. 2018, 2025
2# SPDX-License-Identifier: MPL-2.0
4# Available parameters and their default values for the Vault chart.
7 # enabled is the master enabled switch. Setting this to true or false
8 # will enable or disable all the components within this chart by default.
10 # The namespace to deploy to. Defaults to the `helm` installation namespace.
12 # Image pull secret to use for registry authentication.
13 # Alternatively, the value may be specified as an array of strings.
16 # - name: image-pull-secret
18 # TLS for end-to-end encrypted transport
20 # External vault server address for the injector and CSI provider to use.
21 # Setting this will disable deployment of a vault server.
23 # If deploying to OpenShift
25 # Create PodSecurityPolicy for pods
28 # Annotation for PodSecurityPolicy.
29 # This is a multi-line templated string map, and can also be set as YAML.
31 seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default,runtime/default
32 apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default
33 seccomp.security.alpha.kubernetes.io/defaultProfileName: runtime/default
34 apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default
36 # Enable integration with the Prometheus Operator
37 # See the top level serverTelemetry section below before enabling this feature.
38 prometheusOperator: false
40 # True if you want to enable vault agent injection.
41 # @default: global.enabled
44 # Configures the port the injector should listen on
46 # If multiple replicas are specified, by default a leader will be determined
47 # so that only one injector attempts to create TLS certificates.
50 # If true, will enable a node exporter metrics endpoint at /metrics.
53 # Deprecated: Please use global.externalVaultAddr instead.
55 # image sets the repo and tag of the vault-k8s image to use for the injector.
57 repository: cgr.dev/chainguard-private/vault-k8s
58 tag: latest@sha256:49ee19340687ccd0b749b23eb8ed5bffe03b504692879fcd927b46054dfc4451
59 pullPolicy: IfNotPresent
60 # agentImage sets the repo and tag of the Vault image to use for the Vault Agent
61 # containers. This should be set to the official Vault image. Vault 1.3.1+ is
64 repository: cgr.dev/chainguard-private/vault
65 tag: latest@sha256:df045aea7f18e4451ad669461387e271fbf30530a7832802c5db5b59fe76eeb7
66 # The default values for the injected Vault Agent containers.
68 # For more information on configuring resources, see the K8s documentation:
69 # https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
74 # ephemeralLimit: "128Mi"
75 # ephemeralRequest: "64Mi"
77 # Default template type for secrets when no custom template is specified.
78 # Possible values include: "json" and "map".
80 # Default values within Agent's template_config stanza.
82 exitOnRetryFailure: true
83 staticSecretRenderInterval: ""
84 # Used to define custom livenessProbe settings
86 # When a probe fails, Kubernetes will try failureThreshold times before giving up
88 # Number of seconds after the container has started before probe initiates
89 initialDelaySeconds: 5
90 # How often (in seconds) to perform the probe
92 # Minimum consecutive successes for the probe to be considered successful after having failed
94 # Number of seconds after which the probe times out.
96 # Used to define custom readinessProbe settings
98 # When a probe fails, Kubernetes will try failureThreshold times before giving up
100 # Number of seconds after the container has started before probe initiates
101 initialDelaySeconds: 5
102 # How often (in seconds) to perform the probe
104 # Minimum consecutive successes for the probe to be considered successful after having failed
106 # Number of seconds after which the probe times out.
108 # Used to define custom startupProbe settings
110 # When a probe fails, Kubernetes will try failureThreshold times before giving up
112 # Number of seconds after the container has started before probe initiates
113 initialDelaySeconds: 5
114 # How often (in seconds) to perform the probe
116 # Minimum consecutive successes for the probe to be considered successful after having failed
118 # Number of seconds after which the probe times out.
120 # Mount Path of the Vault Kubernetes Auth Method.
121 authPath: "auth/kubernetes"
122 # Configures the log verbosity of the injector.
123 # Supported log levels include: trace, debug, info, warn, error
125 # Configures the log format of the injector. Supported log formats: "standard", "json".
126 logFormat: "standard"
127 # Configures all Vault Agent sidecars to revoke their token when shutting down
128 revokeOnShutdown: false
130 # Configures failurePolicy of the webhook. The "unspecified" default behaviour depends on the
131 # API Version of the WebHook.
132 # To block pod creation while the webhook is unavailable, set the policy to `Fail` below.
133 # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#failure-policy
135 failurePolicy: Ignore
136 # matchPolicy specifies the approach to accepting changes based on the rules of
137 # the MutatingWebhookConfiguration.
138 # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-matchpolicy
142 # timeoutSeconds is the amount of seconds before the webhook request will be ignored
144 # If it is ignored or fails depends on the failurePolicy
145 # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#timeouts
149 # namespaceSelector is the selector for restricting the webhook to only
150 # specific namespaces.
151 # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-namespaceselector
156 # sidecar-injector: enabled
157 namespaceSelector: {}
158 # objectSelector is the selector for restricting the webhook to only
160 # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-objectselector
165 # vault-sidecar-injector: enabled
168 - key: app.kubernetes.io/name
171 - {{ template "vault.name" . }}-agent-injector
172 # Extra annotations to attach to the webhook
174 # Deprecated: please use 'webhook.failurePolicy' instead
175 # Configures failurePolicy of the webhook. The "unspecified" default behaviour depends on the
176 # API Version of the WebHook.
177 # To block pod creation while webhook is unavailable, set the policy to `Fail` below.
178 # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#failure-policy
180 failurePolicy: Ignore
181 # Deprecated: please use 'webhook.namespaceSelector' instead
182 # namespaceSelector is the selector for restricting the webhook to only
183 # specific namespaces.
184 # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-namespaceselector
189 # sidecar-injector: enabled
190 namespaceSelector: {}
191 # Deprecated: please use 'webhook.objectSelector' instead
192 # objectSelector is the selector for restricting the webhook to only
194 # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-objectselector
199 # vault-sidecar-injector: enabled
201 # Deprecated: please use 'webhook.annotations' instead
202 # Extra annotations to attach to the webhook
203 webhookAnnotations: {}
205 # secretName is the name of the secret that has the TLS certificate and
206 # private key to serve the injector webhook. If this is null, then the
207 # injector will default to its automatic management mode that will assign
208 # a service account to the injector to generate its own certificates.
210 # caBundle is a base64-encoded PEM-encoded certificate bundle for the CA
211 # that signed the TLS certificate that the webhook serves. This must be set
212 # if secretName is non-null unless an external service like cert-manager is
213 # keeping the caBundle updated.
215 # certName and keyName are the names of the files within the secret for
216 # the TLS cert and private key, respectively. These have reasonable
217 # defaults but can be customized if necessary.
220 # Security context for the pod template and the injector container
221 # The default pod securityContext is:
223 # runAsGroup: {{ .Values.injector.gid | default 1000 }}
224 # runAsUser: {{ .Values.injector.uid | default 100 }}
225 # fsGroup: {{ .Values.injector.gid | default 1000 }}
226 # and for container is
227 # allowPrivilegeEscalation: false
243 # extraEnvironmentVars is a list of extra environment variables to set in the
244 # injector deployment.
245 extraEnvironmentVars: {}
246 # KUBERNETES_SERVICE_HOST: kubernetes.default.svc
248 # Affinity Settings for injector pods
249 # This can either be a multi-line string or YAML matching the PodSpec's affinity field.
250 # Commenting out or setting as empty the affinity variable, will allow
251 # deployment of multiple replicas to single node services such as Minikube.
254 requiredDuringSchedulingIgnoredDuringExecution:
257 app.kubernetes.io/name: {{ template "vault.name" . }}-agent-injector
258 app.kubernetes.io/instance: "{{ .Release.Name }}"
260 topologyKey: kubernetes.io/hostname
261 # Topology settings for injector pods
262 # ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
263 # This should be either a multi-line string or YAML matching the topologySpreadConstraints array
265 topologySpreadConstraints: []
266 # Toleration Settings for injector pods
267 # This should be either a multi-line string or YAML matching the Toleration array
270 # nodeSelector labels for server pod assignment, formatted as a multi-line string or YAML map.
271 # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
274 # beta.kubernetes.io/arch: amd64
276 # Priority class for injector pods
277 priorityClassName: ""
278 # Extra annotations to attach to the injector pods
279 # This can either be YAML or a YAML-formatted multi-line templated string map
280 # of the annotations to apply to the injector pods
282 # Extra labels to attach to the agent-injector
283 # This should be a YAML map of the labels to apply to the injector
285 # Should the injector pods run on the host network (useful when using
286 # an alternate CNI in EKS)
288 # Injector service specific config
290 # Extra annotations to attach to the injector service
292 # Injector serviceAccount specific config
294 # Extra annotations to attach to the injector serviceAccount
296 # A disruption budget limits the number of pods of a replicated application
297 # that are down simultaneously from voluntary disruptions
298 podDisruptionBudget: {}
299 # podDisruptionBudget:
302 # strategy for updating the deployment. This can be a multi-line string or a
308 # maxUnavailable: 25%
309 # type: RollingUpdate
311 # If true, or "-" with global.enabled true, Vault server will be installed.
312 # See vault.mode in _helpers.tpl for implementation details.
314 # [Enterprise Only] This value refers to a Kubernetes secret that you have
315 # created that contains your enterprise license. If you are not using an
316 # enterprise image or if you plan to introduce the license key via another
317 # route, then leave secretName blank ("") or set it to null.
318 # Requires Vault Enterprise 1.8 or later.
320 # The name of the Kubernetes secret that holds the enterprise license. The
321 # secret must be in the same namespace that Vault is installed into.
323 # The key within the Kubernetes secret that holds the enterprise license.
325 # OpenShift service-ca operator integration
326 # Automates TLS certificate generation via the service-ca operator
328 # Enable service-ca operator annotations and ConfigMap creation
329 # Requires: global.openshift=true
331 # Secret name where service-ca will store the generated certificate
332 # IMPORTANT: Must match the secret name in server.volumes below
333 secretName: "vault-tls"
334 # ConfigMap name for service-ca CA bundle injection
335 # IMPORTANT: Must match the ConfigMap name in server.volumes below
336 configMapName: "service-ca-bundle"
337 # IMPORTANT: Configure server.volumes, server.volumeMounts, AND server config to use service-ca
339 # Step 1: Mount the service-ca resources as volumes
343 # secretName: vault-tls # Must match serviceCA.secretName above
344 # - name: service-ca-bundle
346 # name: service-ca-bundle # Must match serviceCA.configMapName above
350 # mountPath: /vault/userconfig/vault-tls
352 # - name: service-ca-bundle
353 # mountPath: /vault/userconfig/service-ca-bundle
356 # Step 2: Configure Vault listener to use the certificates (in server.ha.config or server.ha.raft.config)
359 # address = "[::]:8200"
360 # cluster_address = "[::]:8201"
361 # tls_cert_file = "/vault/userconfig/vault-tls/tls.crt"
362 # tls_key_file = "/vault/userconfig/vault-tls/tls.key"
363 # tls_client_ca_file = "/vault/userconfig/service-ca-bundle/service-ca.crt"
366 repository: cgr.dev/chainguard-private/vault
367 tag: latest@sha256:df045aea7f18e4451ad669461387e271fbf30530a7832802c5db5b59fe76eeb7
368 # Overrides the default Image Pull Policy
369 pullPolicy: IfNotPresent
370 # Configure the Update Strategy Type for the StatefulSet
371 # See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
372 updateStrategyType: "OnDelete"
373 # Configure the logging verbosity for the Vault server.
374 # Supported log levels include: trace, debug, info, warn, error
376 # Configure the logging format for the Vault server.
377 # Supported log formats include: standard, json
379 # Resource requests, limits, etc. for the server cluster placement. This
380 # should map directly to the value of the resources field for a PodSpec.
381 # By default no direct resource request is made.
391 # Ingress allows ingress services to be created to allow external access
392 # from Kubernetes to access Vault pods.
393 # If deployment is on OpenShift, the following block is ignored.
394 # In order to expose the service, use the route section below
401 # kubernetes.io/ingress.class: nginx
402 # kubernetes.io/tls-acme: "true"
404 # kubernetes.io/ingress.class: nginx
405 # kubernetes.io/tls-acme: "true"
407 # Optionally use ingressClassName instead of deprecated annotation.
408 # See: https://kubernetes.io/docs/concepts/services-networking/ingress/#deprecated-annotation
410 # As of Kubernetes 1.19, all Ingress Paths must have a pathType configured. The default value below should be sufficient in most cases.
411 # See: https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types for other possible values.
413 # When HA mode is enabled and K8s service registration is being used,
414 # configure the ingress to point to the Vault active service.
417 - host: chart-example.local
419 ## Extra paths to prepend to the host configuration. This is useful when working with annotation based services.
426 # number: use-annotation
428 # - secretName: chart-example-tls
430 # - chart-example.local
431 # hostAliases is a list of aliases to be added to /etc/hosts. Specified as a YAML list.
435 # - chart-example.local
437 # OpenShift only - create a route to expose the service
438 # By default the created route will be of type passthrough
441 # When HA mode is enabled and K8s service registration is being used,
442 # configure the route to point to the Vault active service.
446 host: chart-example.local
447 # tls will be passed directly to the route's TLS config, which
448 # can be used to configure other termination methods that terminate
451 termination: passthrough
452 # authDelegator enables a cluster role binding to be attached to the service
453 # account. This cluster role binding can be used to setup Kubernetes auth
454 # method. See https://developer.hashicorp.com/vault/docs/auth/kubernetes
457 # extraInitContainers is a list of init containers. Specified as a YAML list.
458 # This is useful if you need to run a script to provision TLS certificates or
459 # write out configuration files in a dynamic way.
460 extraInitContainers: null
461 # # This example installs a plugin pulled from github into the /usr/local/libexec/vault/oauthapp folder,
462 # # which is defined in the volumes value.
468 # wget https://github.com/puppetlabs/vault-plugin-secrets-oauthapp/releases/download/v1.2.0/vault-plugin-secrets-oauthapp-v1.2.0-linux-amd64.tar.xz -O oauthapp.xz &&
469 # tar -xf oauthapp.xz &&
470 # mv vault-plugin-secrets-oauthapp-v1.2.0-linux-amd64 /usr/local/libexec/vault/oauthapp &&
471 # chmod +x /usr/local/libexec/vault/oauthapp
474 # mountPath: /usr/local/libexec/vault
476 # extraContainers is a list of sidecar containers. Specified as a YAML list.
477 extraContainers: null
478 # shareProcessNamespace enables process namespace sharing between Vault and the extraContainers
479 # This is useful if Vault must be signaled, e.g. to send a SIGHUP for a log rotation
480 shareProcessNamespace: false
481 # extraArgs is a string containing additional Vault server arguments.
483 # extraPorts is a list of extra ports. Specified as a YAML list.
484 # This is useful if you need to add additional ports to the statefulset in dynamic way.
486 # - containerPort: 8300
487 # name: http-monitoring
489 # Used to define custom readinessProbe settings
492 # If you need to use a http path instead of the default exec
493 # path: /v1/sys/health?standbyok=true
495 # Port number on which readinessProbe will be checked.
497 # When a probe fails, Kubernetes will try failureThreshold times before giving up
499 # Number of seconds after the container has started before probe initiates
500 initialDelaySeconds: 5
501 # How often (in seconds) to perform the probe
503 # Minimum consecutive successes for the probe to be considered successful after having failed
505 # Number of seconds after which the probe times out.
507 # Used to enable a livenessProbe for the pods
510 # Used to define a liveness exec command. If provided, exec is preferred to httpGet (path) as the livenessProbe handler.
514 # - /vault/userconfig/mylivenessscript/run.sh
515 # Path for the livenessProbe to use httpGet as the livenessProbe handler
516 path: "/v1/sys/health?standbyok=true"
517 # Port number on which livenessProbe will be checked if httpGet is used as the livenessProbe handler
519 # When a probe fails, Kubernetes will try failureThreshold times before giving up
521 # Number of seconds after the container has started before probe initiates
522 initialDelaySeconds: 60
523 # How often (in seconds) to perform the probe
525 # Minimum consecutive successes for the probe to be considered successful after having failed
527 # Number of seconds after which the probe times out.
529 # Optional duration in seconds the pod needs to terminate gracefully.
530 # See: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
531 terminationGracePeriodSeconds: 10
532 # Used to set the sleep time during the preStop step, if custom preStop
533 # commands are not set.
534 preStopSleepSeconds: 5
535 # Used to define custom preStop exec commands to run before the pod is
536 # terminated. If not set, this will default to:
540 # - "sleep {{ .Values.server.preStopSleepSeconds }} && kill -SIGTERM $(pidof vault)"
542 # Used to define commands to run after the pod is ready.
543 # This can be used to automate processes such as initialization
544 # or boostrapping auth methods.
548 # - /vault/userconfig/myscript/run.sh
550 # extraEnvironmentVars is a list of extra environment variables to set with the stateful set. These could be
551 # used to include variables required for auto-unseal.
552 extraEnvironmentVars: {}
553 # GOOGLE_REGION: global
554 # GOOGLE_PROJECT: myproject
555 # GOOGLE_APPLICATION_CREDENTIALS: /vault/userconfig/myproject/myproject-creds.json
557 # extraSecretEnvironmentVars is a list of extra environment variables to set with the stateful set.
558 # These variables take value from existing Secret objects.
559 extraSecretEnvironmentVars: []
560 # - envName: AWS_SECRET_ACCESS_KEY
562 # secretKey: AWS_SECRET_ACCESS_KEY
564 # Deprecated: please use 'volumes' instead.
565 # extraVolumes is a list of extra volumes to mount. These will be exposed
566 # to Vault in the path `/vault/userconfig/<name>/`. The value below is
567 # an array of objects, examples are shown below.
569 # - type: secret (or "configMap")
571 # path: null # default is `/vault/userconfig`
573 # volumes is a list of volumes made available to all containers. These are rendered
574 # via toYaml rather than pre-processed like the extraVolumes value.
575 # The purpose is to make it easy to share volumes between containers.
580 # volumeMounts is a list of volumeMounts for the main server container. These are rendered
581 # via toYaml rather than pre-processed like the extraVolumes value.
582 # The purpose is to make it easy to share volumes between containers.
584 # - mountPath: /usr/local/libexec/vault
589 # Commenting out or setting as empty the affinity variable, will allow
590 # deployment to single node services such as Minikube
591 # This should be either a multi-line string or YAML matching the PodSpec's affinity field.
594 requiredDuringSchedulingIgnoredDuringExecution:
597 app.kubernetes.io/name: {{ template "vault.name" . }}
598 app.kubernetes.io/instance: "{{ .Release.Name }}"
600 topologyKey: kubernetes.io/hostname
601 # Topology settings for server pods
602 # ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
603 # This should be either a multi-line string or YAML matching the topologySpreadConstraints array
605 topologySpreadConstraints: []
606 # Toleration Settings for server pods
607 # This should be either a multi-line string or YAML matching the Toleration array
610 # nodeSelector labels for server pod assignment, formatted as a multi-line string or YAML map.
611 # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
614 # beta.kubernetes.io/arch: amd64
616 # Enables network policy for server pods
629 - namespaceSelector: {}
635 # Priority class for server pods
636 priorityClassName: ""
637 # Extra labels to attach to the server pods
638 # This should be a YAML map of the labels to apply to the server pods
640 # Extra annotations to attach to the server pods
641 # This can either be YAML or a YAML-formatted multi-line templated string map
642 # of the annotations to apply to the server pods
644 # Add an annotation to the server configmap and the statefulset pods,
645 # vaultproject.io/config-checksum, that is a hash of the Vault configuration.
646 # This can be used together with an OnDelete deployment strategy to help
647 # identify which pods still need to be deleted during a deployment to pick up
648 # any configuration changes.
649 includeConfigAnnotation: false
650 # Enables a headless service to be used by the Vault Statefulset
653 # Enable or disable the vault-active service, which selects Vault pods that
654 # have labeled themselves as the cluster leader with `vault-active: "true"`.
657 # Extra annotations for the service definition. This can either be YAML or a
658 # YAML-formatted multi-line templated string map of the annotations to apply
659 # to the active service.
661 # Enable or disable the vault-standby service, which selects Vault pods that
662 # have labeled themselves as a cluster follower with `vault-active: "false"`.
665 # Extra annotations for the service definition. This can either be YAML or a
666 # YAML-formatted multi-line templated string map of the annotations to apply
667 # to the standby service.
669 # If enabled, the service selectors will include `app.kubernetes.io/instance: {{ .Release.Name }}`
670 # When disabled, services may select Vault pods not deployed from the chart.
671 # Does not affect the headless vault-internal service with `ClusterIP: None`
674 # clusterIP controls whether a Cluster IP address is attached to the
675 # Vault service within Kubernetes. By default, the Vault service will
676 # be given a Cluster IP address, set to None to disable. When disabled
677 # Kubernetes will create a "headless" service. Headless services can be
678 # used to communicate with pods directly through DNS instead of a round-robin
682 # Configures the service type for the main Vault service. Can be ClusterIP
686 # The IP family and IP families options are to set the behaviour in a dual-stack environment.
687 # Omitting these values will let the service fall back to whatever the CNI dictates the defaults
689 # These are only supported for kubernetes versions >=1.23.0
691 # Configures the service's supported IP family policy, can be either:
692 # SingleStack: Single-stack service. The control plane allocates a cluster IP for the Service, using the first configured service cluster IP range.
693 # PreferDualStack: Allocates IPv4 and IPv6 cluster IPs for the Service.
694 # RequireDualStack: Allocates Service .spec.ClusterIPs from both IPv4 and IPv6 address ranges.
696 # Sets the families that should be supported and the order in which they should be applied to ClusterIP as well.
697 # Can be IPv4 and/or IPv6.
699 # Do not wait for pods to be ready before including them in the services'
700 # targets. Does not apply to the headless service, which is used for
701 # cluster-internal communication.
702 publishNotReadyAddresses: true
703 # The externalTrafficPolicy can be set to either Cluster or Local
704 # and is only valid for LoadBalancer and NodePort service types.
705 # The default value is Cluster.
706 # ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-traffic-policy
707 externalTrafficPolicy: Cluster
708 # If type is set to "NodePort", a specific nodePort value can be configured,
709 # will be random if left blank.
712 # When HA mode is enabled
713 # If type is set to "NodePort", a specific nodePort value can be configured,
714 # will be random if left blank.
715 #activeNodePort: 30001
717 # When HA mode is enabled
718 # If type is set to "NodePort", a specific nodePort value can be configured,
719 # will be random if left blank.
720 #standbyNodePort: 30002
722 # Port on which Vault server is listening
724 # Target port to which the service should be mapped to
726 # Extra annotations for the service definition. This can either be YAML or a
727 # YAML-formatted multi-line templated string map of the annotations to apply
730 # This configures the Vault Statefulset to create a PVC for data
731 # storage when using the file or raft backend storage engines.
732 # See https://developer.hashicorp.com/vault/docs/configuration/storage to know more
735 # Size of the PVC created
737 # Location where the PVC will be mounted.
738 mountPath: "/vault/data"
739 # Name of the storage class to use. If null it will use the
740 # configured default Storage Class.
742 # Access Mode of the storage device being used for the PVC
743 accessMode: ReadWriteOnce
744 # Annotations to apply to the PVC
746 # Labels to apply to the PVC
748 # Persistent Volume Claim (PVC) retention policy
749 # ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention
751 # persistentVolumeClaimRetentionPolicy:
752 # whenDeleted: Retain
754 persistentVolumeClaimRetentionPolicy: {}
755 # This configures the Vault Statefulset to create a PVC for audit
756 # logs. Once Vault is deployed, initialized, and unsealed, Vault must
757 # be configured to use this for audit logs. This will be mounted to
759 # See https://developer.hashicorp.com/vault/docs/audit to know more
762 # Size of the PVC created
764 # Location where the PVC will be mounted.
765 mountPath: "/vault/audit"
766 # Name of the storage class to use. If null it will use the
767 # configured default Storage Class.
769 # Access Mode of the storage device being used for the PVC
770 accessMode: ReadWriteOnce
771 # Annotations to apply to the PVC
773 # Labels to apply to the PVC
775 # Run Vault in "dev" mode. This requires no further setup, no state management,
776 # and no initialization. This is useful for experimenting with Vault without
777 # needing to unseal, store keys, et. al. All data is lost on restart - do not
778 # use dev mode for anything other than experimenting.
779 # See https://developer.hashicorp.com/vault/docs/concepts/dev-server to know more
782 # Set VAULT_DEV_ROOT_TOKEN_ID value
784 # Run Vault in "standalone" mode. This is the default mode that will deploy if
785 # no arguments are given to helm. This requires a PVC for data storage to use
786 # the "file" backend. This mode is not highly available and should not be scaled
787 # past a single replica.
790 # config is a raw string of default configuration when using a Stateful
791 # deployment. Default is to use a PersistentVolumeClaim mounted at /vault/data
792 # and store data there. This is only used when using a Replica count of 1, and
793 # using a stateful set. Supported formats are HCL and JSON.
795 # Note: Configuration files are stored in ConfigMaps so sensitive data
796 # such as passwords should be either mounted through extraSecretEnvironmentVars
797 # or through a Kube secret. For more information see:
798 # https://developer.hashicorp.com/vault/docs/platform/k8s/helm/run#protecting-sensitive-vault-configurations
804 address = "[::]:8200"
805 cluster_address = "[::]:8201"
806 # Enable unauthenticated metrics access (necessary for Prometheus Operator)
808 # unauthenticated_metrics_access = "true"
815 # Example configuration for using auto-unseal, using Google Cloud KMS. The
816 # GKMS keys must already exist, and the cluster must have a service account
817 # that is authorized to access GCP KMS.
819 # project = "vault-helm-dev"
821 # key_ring = "vault-helm-unseal-kr"
822 # crypto_key = "vault-helm-unseal-key"
825 # Example configuration for enabling Prometheus metrics in your config.
827 # prometheus_retention_time = "30s"
828 # disable_hostname = true
830 # Run Vault in "HA" mode. There are no storage requirements unless the audit log
831 # persistence is required. In HA mode Vault will configure itself to use Consul
832 # for its storage backend. The default configuration provided will work the Consul
833 # Helm project by default. It is possible to manually configure Vault to use a
834 # different HA backend.
838 # Set the api_addr configuration for Vault HA
839 # See https://developer.hashicorp.com/vault/docs/configuration#api_addr
840 # If set to null, this will be set to the Pod IP Address
842 # Set the cluster_addr configuration for Vault HA
843 # See https://developer.hashicorp.com/vault/docs/configuration#cluster_addr
844 # If set to null, this will be set to https://$(HOSTNAME).{{ template "vault.fullname" . }}-internal:8201
846 # Enables Vault's integrated Raft storage. Unlike the typical HA modes where
847 # Vault's persistence is external (such as Consul), enabling Raft mode will create
848 # persistent volumes for Vault to store data according to the configuration under server.dataStorage.
849 # The Vault cluster will coordinate leader elections and failovers internally.
851 # Enables Raft integrated storage
853 # Set the Node Raft ID to the name of the pod
855 # Note: Configuration files are stored in ConfigMaps so sensitive data
856 # such as passwords should be either mounted through extraSecretEnvironmentVars
857 # or through a Kube secret. For more information see:
858 # https://developer.hashicorp.com/vault/docs/platform/k8s/helm/run#protecting-sensitive-vault-configurations
859 # Supported formats are HCL and JSON.
865 address = "[::]:8200"
866 cluster_address = "[::]:8201"
867 # Enable unauthenticated metrics access (necessary for Prometheus Operator)
869 # unauthenticated_metrics_access = "true"
877 service_registration "kubernetes" {}
878 # config is a raw string of default configuration when using a Stateful
879 # deployment. Default is to use a Consul for its HA storage backend.
880 # Supported formats are HCL and JSON.
882 # Note: Configuration files are stored in ConfigMaps so sensitive data
883 # such as passwords should be either mounted through extraSecretEnvironmentVars
884 # or through a Kube secret. For more information see:
885 # https://developer.hashicorp.com/vault/docs/platform/k8s/helm/run#protecting-sensitive-vault-configurations
891 address = "[::]:8200"
892 cluster_address = "[::]:8201"
896 address = "HOST_IP:8500"
899 service_registration "kubernetes" {}
901 # Example configuration for using auto-unseal, using Google Cloud KMS. The
902 # GKMS keys must already exist, and the cluster must have a service account
903 # that is authorized to access GCP KMS.
905 # project = "vault-helm-dev-246514"
907 # key_ring = "vault-helm-unseal-kr"
908 # crypto_key = "vault-helm-unseal-key"
911 # Example configuration for enabling Prometheus metrics.
912 # If you are using Prometheus Operator you can enable a ServiceMonitor resource below.
913 # You may wish to enable unauthenticated metrics in the listener block above.
915 # prometheus_retention_time = "30s"
916 # disable_hostname = true
918 # A disruption budget limits the number of pods of a replicated application
919 # that are down simultaneously from voluntary disruptions
922 # maxUnavailable will default to (n/2)-1 where n is the number of
923 # replicas. If you'd like a custom value, you can specify an override here.
925 # Definition of the serviceAccount used to run Vault.
926 # These options are also used when using an external Vault server to validate
929 # Specifies whether a service account should be created
931 # The name of the service account to use.
932 # If not set and create is true, a name is generated using the fullname template
934 # Create a Secret API object to store a non-expiring token for the service account.
935 # Prior to v1.24.0, Kubernetes used to generate this secret for each service account by default.
936 # Kubernetes now recommends using short-lived tokens from the TokenRequest API or projected volumes instead if possible.
937 # For more details, see https://kubernetes.io/docs/concepts/configuration/secret/#service-account-token-secrets
938 # serviceAccount.create must be equal to 'true' in order to use this feature.
940 # Extra annotations for the serviceAccount definition. This can either be
941 # YAML or a YAML-formatted multi-line templated string map of the
942 # annotations to apply to the serviceAccount.
944 # Extra labels to attach to the serviceAccount
945 # This should be a YAML map of the labels to apply to the serviceAccount
947 # Enable or disable a service account role binding with the permissions required for
948 # Vault's Kubernetes service_registration config option.
949 # See https://developer.hashicorp.com/vault/docs/configuration/service-registration/kubernetes
952 # Settings for the statefulSet used to run Vault.
954 # Extra annotations for the statefulSet. This can either be YAML or a
955 # YAML-formatted multi-line templated string map of the annotations to apply
956 # to the statefulSet.
958 # Set the pod and container security contexts.
959 # If not set, these will default to, and for *not* OpenShift:
962 # runAsGroup: {{ .Values.server.gid | default 1000 }}
963 # runAsUser: {{ .Values.server.uid | default 100 }}
964 # fsGroup: {{ .Values.server.gid | default 1000 }}
966 # allowPrivilegeEscalation: false
968 # If not set, these will default to, and for OpenShift:
974 # Should the server pods run on the host network
978 # True if you want to create a Service entry for the Vault UI.
980 # serviceType can be used to control the type of service created. For
981 # example, setting this to "LoadBalancer" will create an external load
982 # balancer (for supported K8S installations) to access the UI.
984 publishNotReadyAddresses: true
985 # The service should only contain selectors for active Vault pod
986 activeVaultPodOnly: false
987 serviceType: "ClusterIP"
988 serviceNodePort: null
991 # The IP family and IP families options are to set the behaviour in a dual-stack environment.
992 # Omitting these values will let the service fall back to whatever the CNI dictates the defaults
994 # These are only supported for kubernetes versions >=1.23.0
996 # Configures the service's supported IP family, can be either:
997 # SingleStack: Single-stack service. The control plane allocates a cluster IP for the Service, using the first configured service cluster IP range.
998 # PreferDualStack: Allocates IPv4 and IPv6 cluster IPs for the Service.
999 # RequireDualStack: Allocates Service .spec.ClusterIPs from both IPv4 and IPv6 address ranges.
1000 serviceIPFamilyPolicy: ""
1001 # Sets the families that should be supported and the order in which they should be applied to ClusterIP as well
1002 # Can be IPv4 and/or IPv6.
1003 serviceIPFamilies: []
1004 # The externalTrafficPolicy can be set to either Cluster or Local
1005 # and is only valid for LoadBalancer and NodePort service types.
1006 # The default value is Cluster.
1007 # ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-traffic-policy
1008 externalTrafficPolicy: Cluster
1009 #loadBalancerSourceRanges:
1015 # Extra annotations to attach to the ui service
1016 # This can either be YAML or a YAML-formatted multi-line templated string map
1017 # of the annotations to apply to the ui service
1019# secrets-store-csi-driver-provider-vault
1021 # True if you want to install a secrets-store-csi-driver-provider-vault daemonset.
1023 # Requires installing the secrets-store-csi-driver separately, see:
1024 # https://github.com/kubernetes-sigs/secrets-store-csi-driver#install-the-secrets-store-csi-driver
1026 # With the driver and provider installed, you can mount Vault secrets into volumes
1027 # similar to the Vault Agent injector, and you can also sync those secrets into
1028 # Kubernetes secrets.
1031 repository: cgr.dev/chainguard-private/vault-csi-provider
1032 tag: latest@sha256:c59e391483ad57ab78faa4b52cd90a116883c0ec62426f980787d47f573b9acc
1033 pullPolicy: IfNotPresent
1034 # volumes is a list of volumes made available to all containers. These are rendered
1035 # via toYaml rather than pre-processed like the extraVolumes value.
1036 # The purpose is to make it easy to share volumes between containers.
1040 # secretName: vault-tls
1042 # volumeMounts is a list of volumeMounts for the main server container. These are rendered
1043 # via toYaml rather than pre-processed like the extraVolumes value.
1044 # The purpose is to make it easy to share volumes between containers.
1047 # mountPath: "/vault/tls"
1059 # Override the default secret name for the CSI Provider's HMAC key used for
1060 # generating secret versions.
1062 # Allow modification of the hostNetwork parameter to avoid the need of a
1065 # Settings for the daemonSet used to run the provider.
1070 # Extra annotations for the daemonSet. This can either be YAML or a
1071 # YAML-formatted multi-line templated string map of the annotations to apply
1074 # Provider host path (must match the CSI provider's path)
1075 providersDir: "/var/run/secrets-store-csi-providers"
1077 kubeletRootDir: "/var/lib/kubelet"
1078 # Extra labels to attach to the vault-csi-provider daemonSet
1079 # This should be a YAML map of the labels to apply to the csi provider daemonSet
1081 # Security context for the pod template and container in the csi provider
1082 # daemonSet. For OpenShift, the container securityContext defaults to
1083 # `privileged: true`.
1088 # Extra annotations for the provider pods. This can either be YAML or a
1089 # YAML-formatted multi-line templated string map of the annotations to apply
1092 # Toleration Settings for provider pods
1093 # This should be either a multi-line string or YAML matching the Toleration array
1096 # nodeSelector labels for csi pod assignment, formatted as a multi-line string or YAML map.
1097 # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
1100 # beta.kubernetes.io/arch: amd64
1103 # This should be either a multi-line string or YAML matching the PodSpec's affinity field.
1105 # Extra labels to attach to the vault-csi-provider pod
1106 # This should be a YAML map of the labels to apply to the csi provider pod
1112 repository: cgr.dev/chainguard-private/vault
1113 tag: latest@sha256:df045aea7f18e4451ad669461387e271fbf30530a7832802c5db5b59fe76eeb7
1114 pullPolicy: IfNotPresent
1126 # Security context for the vault agent sidecar container
1129 allowPrivilegeEscalation: false
1133 readOnlyRootFilesystem: true
1137 # Priority class for csi pods
1138 priorityClassName: ""
1140 # Extra annotations for the serviceAccount definition. This can either be
1141 # YAML or a YAML-formatted multi-line templated string map of the
1142 # annotations to apply to the serviceAccount.
1144 # Extra labels to attach to the vault-csi-provider serviceAccount
1145 # This should be a YAML map of the labels to apply to the csi provider serviceAccount
1147 # Used to configure readinessProbe for the pods.
1149 # When a probe fails, Kubernetes will try failureThreshold times before giving up
1151 # Number of seconds after the container has started before probe initiates
1152 initialDelaySeconds: 5
1153 # How often (in seconds) to perform the probe
1155 # Minimum consecutive successes for the probe to be considered successful after having failed
1157 # Number of seconds after which the probe times out.
1159 # Used to configure livenessProbe for the pods.
1161 # When a probe fails, Kubernetes will try failureThreshold times before giving up
1163 # Number of seconds after the container has started before probe initiates
1164 initialDelaySeconds: 5
1165 # How often (in seconds) to perform the probe
1167 # Minimum consecutive successes for the probe to be considered successful after having failed
1169 # Number of seconds after which the probe times out.
1171 # Configures the log level for the Vault CSI provider.
1172 # Supported log levels include: trace, debug, info, warn, error, and off
1174 # Deprecated, set logLevel to debug instead.
1175 # If set to true, the logLevel will be set to debug.
1177 # Pass arbitrary additional arguments to vault-csi-provider.
1178 # See https://developer.hashicorp.com/vault/docs/platform/k8s/csi/configurations#command-line-arguments
1179 # for the available command line flags.
1181# Vault is able to collect and publish various runtime metrics.
1182# Enabling this feature requires setting adding `telemetry{}` stanza to
1183# the Vault configuration. There are a few examples included in the `config` sections above.
1185# For more information see:
1186# https://developer.hashicorp.com/vault/docs/configuration/telemetry
1187# https://developer.hashicorp.com/vault/docs/internals/telemetry
1189 # Enable support for the Prometheus Operator. If authorization is not set for authenticating
1190 # to Vault's metrics endpoint, the following Vault server `telemetry{}` config must be included
1191 # in the `listener "tcp"{}` stanza
1193 # unauthenticated_metrics_access = "true"
1196 # See the `standalone.config` for a more complete example of this.
1198 # In addition, a top level `telemetry{}` stanza must also be included in the Vault configuration:
1202 # prometheus_retention_time = "30s"
1203 # disable_hostname = true
1206 # Configuration for monitoring the Vault server.
1208 # The Prometheus operator *must* be installed before enabling this feature,
1209 # if not the chart will fail to install due to missing CustomResourceDefinitions
1210 # provided by the operator.
1212 # Instructions on how to install the Helm chart can be found here:
1213 # https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
1214 # More information can be found here:
1215 # https://github.com/prometheus-operator/prometheus-operator
1216 # https://github.com/prometheus-operator/kube-prometheus
1218 # Enable deployment of the Vault Server ServiceMonitor CustomResource.
1220 # Selector labels to add to the ServiceMonitor.
1221 # When empty, defaults to:
1222 # release: prometheus
1224 # Interval at which Prometheus scrapes metrics
1226 # Timeout for Prometheus scrapes
1228 # tlsConfig used for scraping the Vault metrics API.
1229 # See API reference: https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.TLSConfig
1234 # name: vault-metrics-client
1237 # authorization used for scraping the Vault metrics API.
1238 # See API reference: https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.SafeAuthorization
1242 # name: vault-metrics-client
1245 # metricRelabelings configures the relabeling rules to apply to the samples before ingestion.
1246 # See API reference: https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.RelabelConfig
1248 # metricRelabelings:
1249 # - sourceLabels: [cluster]
1250 # targetLabel: vault_cluster
1251 metricRelabelings: []
1252 # matchLabels configures the service selector labels for the ServiceMonitor.
1253 # By default, the ServiceMonitor targets services with:
1254 # - HA mode: vault-active: "true" (scrapes the raft leader only)
1255 # - Standalone mode: vault-internal: "true"
1257 # To scrape metrics from all Vault pods including standbys (Enterprise only):
1258 # 1. Enable unauthenticated_metrics_access in your Vault listener telemetry config
1259 # 2. Set matchLabels to target the vault-internal headless service
1260 # See: https://developer.hashicorp.com/vault/docs/configuration/telemetry#prometheus
1264 # vault-internal: "true"
1267 # The Prometheus operator *must* be installed before enabling this feature,
1268 # if not the chart will fail to install due to missing CustomResourceDefinitions
1269 # provided by the operator.
1271 # Deploy the PrometheusRule custom resource for AlertManager based alerts.
1272 # Requires that AlertManager is properly deployed.
1274 # Selector labels to add to the PrometheusRules.
1275 # When empty, defaults to:
1276 # release: prometheus
1278 # Some example rules.
1280 # - alert: vault-HighResponseTime
1282 # message: The response time of Vault is over 500ms on average over the last 5 minutes.
1283 # expr: vault_core_handle_request{quantile="0.5", namespace="mynamespace"} > 500
1287 # - alert: vault-HighResponseTime
1289 # message: The response time of Vault is over 1s on average over the last 5 minutes.
1290 # expr: vault_core_handle_request{quantile="0.5", namespace="mynamespace"} > 1000
1293 # severity: critical