vault

Version: 0.25.0-bb.4 AppVersion: 1.14.2

Official HashiCorp Vault Chart

Upstream References

Learn More

Pre-Requisites

  • Kubernetes Cluster deployed
  • Kubernetes config installed in ~/.kube/config
  • Helm installed

Kubernetes: >= 1.20.0-0

Install Helm

https://helm.sh/docs/intro/install/

Deployment

  • Clone down the repository
  • cd into directory
helm install vault chart/

Values

Key Type Default Description
global.enabled bool true
global.imagePullSecrets[0].name string "private-registry"
global.tlsDisable bool true
global.externalVaultAddr string ""
global.openshift bool false
global.psp.enable bool false
global.psp.annotations string "seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default,runtime/default\napparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default\nseccomp.security.alpha.kubernetes.io/defaultProfileName: runtime/default\napparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default\n"
global.serverTelemetry.prometheusOperator bool false
injector.enabled string "-"
injector.replicas int 1
injector.port int 8080
injector.leaderElector.enabled bool false
injector.metrics.enabled bool true
injector.externalVaultAddr string ""
injector.image.repository string "registry1.dso.mil/ironbank/hashicorp/vault/vault-k8s"
injector.image.tag string "1.3.0"
injector.image.pullPolicy string "IfNotPresent"
injector.agentImage.repository string "registry1.dso.mil/ironbank/hashicorp/vault"
injector.agentImage.tag string "1.14.2"
injector.agentDefaults.cpuLimit string "500m"
injector.agentDefaults.cpuRequest string "500m"
injector.agentDefaults.memLimit string "250Mi"
injector.agentDefaults.memRequest string "250Mi"
injector.agentDefaults.template string "map"
injector.agentDefaults.templateConfig.exitOnRetryFailure bool true
injector.agentDefaults.templateConfig.staticSecretRenderInterval string ""
injector.livenessProbe.failureThreshold int 2
injector.livenessProbe.initialDelaySeconds int 5
injector.livenessProbe.periodSeconds int 2
injector.livenessProbe.successThreshold int 1
injector.livenessProbe.timeoutSeconds int 5
injector.readinessProbe.failureThreshold int 2
injector.readinessProbe.initialDelaySeconds int 5
injector.readinessProbe.periodSeconds int 2
injector.readinessProbe.successThreshold int 1
injector.readinessProbe.timeoutSeconds int 5
injector.startupProbe.failureThreshold int 12
injector.startupProbe.initialDelaySeconds int 5
injector.startupProbe.periodSeconds int 5
injector.startupProbe.successThreshold int 1
injector.startupProbe.timeoutSeconds int 5
injector.authPath string "auth/kubernetes"
injector.logLevel string "info"
injector.logFormat string "standard"
injector.revokeOnShutdown bool false
injector.webhook.failurePolicy string "Ignore"
injector.webhook.matchPolicy string "Exact"
injector.webhook.timeoutSeconds int 30
injector.webhook.namespaceSelector object {}
injector.webhook.objectSelector string "matchExpressions:\n- key: app.kubernetes.io/name\n operator: NotIn\n values:\n - {{ template \"vault.name\" . }}-agent-injector\n"
injector.webhook.annotations object {}
injector.failurePolicy string "Ignore"
injector.namespaceSelector object {}
injector.objectSelector object {}
injector.webhookAnnotations object {}
injector.certs.secretName string nil
injector.certs.caBundle string ""
injector.certs.certName string "tls.crt"
injector.certs.keyName string "tls.key"
injector.securityContext.pod object {}
injector.securityContext.container.capabilities.drop[0] string "ALL"
injector.resources.requests.memory string "256Mi"
injector.resources.requests.cpu string "250m"
injector.resources.limits.memory string "256Mi"
injector.resources.limits.cpu string "250m"
injector.extraEnvironmentVars object {}
injector.affinity string "podAntiAffinity:\n requiredDuringSchedulingIgnoredDuringExecution:\n - labelSelector:\n matchLabels:\n app.kubernetes.io/name: {{ template \"vault.name\" . }}-agent-injector\n app.kubernetes.io/instance: \"{{ .Release.Name }}\"\n component: webhook\n topologyKey: kubernetes.io/hostname\n"
injector.topologySpreadConstraints list []
injector.tolerations list []
injector.nodeSelector object {}
injector.priorityClassName string ""
injector.annotations object {}
injector.extraLabels object {}
injector.hostNetwork bool false
injector.service.annotations object {}
injector.serviceAccount.annotations object {}
injector.podDisruptionBudget object {}
injector.strategy object {}
server.enabled bool true
server.extraSecretEnvironmentVars[0].envName string "AWS_ACCESS_KEY_ID"
server.extraSecretEnvironmentVars[0].secretName string "eks-creds"
server.extraSecretEnvironmentVars[0].secretKey string "AWS_ACCESS_KEY_ID"
server.extraSecretEnvironmentVars[1].envName string "AWS_SECRET_ACCESS_KEY"
server.extraSecretEnvironmentVars[1].secretName string "eks-creds"
server.extraSecretEnvironmentVars[1].secretKey string "AWS_SECRET_ACCESS_KEY"
server.enterpriseLicense.secretName string ""
server.enterpriseLicense.secretKey string "license"
server.image.repository string "registry1.dso.mil/ironbank/hashicorp/vault"
server.image.tag string "1.14.2"
server.image.pullPolicy string "IfNotPresent"
server.updateStrategyType string "OnDelete"
server.logLevel string ""
server.logFormat string ""
server.resources.requests.memory string "256Mi"
server.resources.requests.cpu string "250m"
server.resources.limits.memory string "256Mi"
server.resources.limits.cpu string "250m"
server.ingress.enabled bool false
server.ingress.labels object {}
server.ingress.annotations object {}
server.ingress.ingressClassName string ""
server.ingress.pathType string "Prefix"
server.ingress.activeService bool true
server.ingress.hosts[0].host string "chart-example.local"
server.ingress.hosts[0].paths list []
server.ingress.extraPaths list []
server.ingress.tls list []
server.route.enabled bool false
server.route.activeService bool true
server.route.labels object {}
server.route.annotations object {}
server.route.host string "chart-example.local"
server.route.tls.termination string "passthrough"
server.authDelegator.enabled bool true
server.extraInitContainers string nil
server.extraContainers string nil
server.shareProcessNamespace bool false
server.extraArgs string ""
server.extraPorts string nil
server.readinessProbe.enabled bool true
server.readinessProbe.port int 8200
server.readinessProbe.failureThreshold int 2
server.readinessProbe.initialDelaySeconds int 5
server.readinessProbe.periodSeconds int 5
server.readinessProbe.successThreshold int 1
server.readinessProbe.timeoutSeconds int 3
server.livenessProbe.enabled bool false
server.livenessProbe.path string "/v1/sys/health?standbyok=true"
server.livenessProbe.port int 8200
server.livenessProbe.failureThreshold int 2
server.livenessProbe.initialDelaySeconds int 60
server.livenessProbe.periodSeconds int 5
server.livenessProbe.successThreshold int 1
server.livenessProbe.timeoutSeconds int 3
server.terminationGracePeriodSeconds int 10
server.preStopSleepSeconds int 5
server.postStart list []
server.extraEnvironmentVars object {}
server.extraSecretEnvironmentVars list []
server.extraVolumes list []
server.volumes string nil
server.volumeMounts string nil
server.affinity string "podAntiAffinity:\n requiredDuringSchedulingIgnoredDuringExecution:\n - labelSelector:\n matchLabels:\n app.kubernetes.io/name: {{ template \"vault.name\" . }}\n app.kubernetes.io/instance: \"{{ .Release.Name }}\"\n component: server\n topologyKey: kubernetes.io/hostname\n"
server.topologySpreadConstraints list []
server.tolerations list []
server.nodeSelector object {}
server.networkPolicy.enabled bool false
server.networkPolicy.egress list []
server.priorityClassName string ""
server.extraLabels object {}
server.annotations object {}
server.service.enabled bool true
server.service.active.enabled bool true
server.service.standby.enabled bool true
server.service.instanceSelector.enabled bool true
server.service.publishNotReadyAddresses bool true
server.service.externalTrafficPolicy string "Cluster"
server.service.port int 8200
server.service.targetPort int 8200
server.service.annotations object {}
server.dataStorage.enabled bool true
server.dataStorage.size string "10Gi"
server.dataStorage.mountPath string "/vault/data"
server.dataStorage.storageClass string nil
server.dataStorage.accessMode string "ReadWriteOnce"
server.dataStorage.annotations object {}
server.auditStorage.enabled bool true
server.auditStorage.size string "10Gi"
server.auditStorage.mountPath string "/vault/audit"
server.auditStorage.storageClass string nil
server.auditStorage.accessMode string "ReadWriteOnce"
server.auditStorage.annotations object {}
server.dev.enabled bool false
server.dev.devRootToken string "root"
server.standalone.enabled string "-"
server.standalone.config string "ui = true\n\nlistener \"tcp\" {\n tls_disable = 1\n address = \"[::]:8200\"\n cluster_address = \"[::]:8201\"\n # Enable unauthenticated metrics access (necessary for Prometheus Operator)\n #telemetry {\n # unauthenticated_metrics_access = \"true\"\n #}\n}\n\ntelemetry {\n prometheus_retention_time = \"24h\"\n disable_hostname = true\n unauthenticated_metrics_access = true\n}\n\n{{- if .Values.server.dataStorage.enabled }}\nstorage \"raft\" {\n path = \"/vault/data\"\n}\n{{- end }}\n\n{{- if and (not .Values.server.dataStorage.enabled) .Values.minio.enabled }}\nstorage \"s3\" {\n access_key = \"{{ .Values.minio.accessKey }}\"\n secret_key = \"{{ .Values.minio.secretKey }}\"\n endpoint = \"{{ .Values.minio.endpoint }}\"\n bucket = \"{{ .Values.minio.bucketName }}\"\n s3_force_path_style = \"true\"\n disable_ssl = \"{{ .Values.minio.disableSSL }}\"\n}\n{{- end }}\n\n# Example configuration for using auto-unseal, using Google Cloud KMS. The\n# GKMS keys must already exist, and the cluster must have a service account\n# that is authorized to access GCP KMS.\n#seal \"gcpckms\" {\n# project = \"vault-helm-dev\"\n# region = \"global\"\n# key_ring = \"vault-helm-unseal-kr\"\n# crypto_key = \"vault-helm-unseal-key\"\n#}\n\n# Example configuration for enabling Prometheus metrics in your config.\n#telemetry {\n# prometheus_retention_time = \"30s\"\n# disable_hostname = true\n#}\n"
server.ha.enabled bool false
server.ha.replicas int 3
server.ha.apiAddr string nil
server.ha.clusterAddr string nil
server.ha.raft.enabled bool true
server.ha.raft.setNodeId bool true
server.ha.raft.config string "ui = true\n\nlistener \"tcp\" {\n tls_disable = 1\n address = \"[::]:8200\"\n cluster_address = \"[::]:8201\"\n # Enable unauthenticated metrics access (necessary for Prometheus Operator)\n #telemetry {\n # unauthenticated_metrics_access = \"true\"\n #}\n}\n\nstorage \"raft\" {\n path = \"/vault/data\"\n}\n\ntelemetry {\n prometheus_retention_time = \"24h\"\n disable_hostname = true\n unauthenticated_metrics_access = true\n}\n\n\nservice_registration \"kubernetes\" {}\n"
server.ha.config string "ui = true\n\nlistener \"tcp\" {\n tls_disable = 1\n address = \"[::]:8200\"\n cluster_address = \"[::]:8201\"\n}\nstorage \"consul\" {\n path = \"vault\"\n address = \"HOST_IP:8500\"\n}\n\nservice_registration \"kubernetes\" {}\n\n# Example configuration for using auto-unseal, using Google Cloud KMS. The\n# GKMS keys must already exist, and the cluster must have a service account\n# that is authorized to access GCP KMS.\n#seal \"gcpckms\" {\n# project = \"vault-helm-dev-246514\"\n# region = \"global\"\n# key_ring = \"vault-helm-unseal-kr\"\n# crypto_key = \"vault-helm-unseal-key\"\n#}\n\n# Example configuration for enabling Prometheus metrics.\n# If you are using Prometheus Operator you can enable a ServiceMonitor resource below.\n# You may wish to enable unauthenticated metrics in the listener block above.\n#telemetry {\n# prometheus_retention_time = \"30s\"\n# disable_hostname = true\n#}\n"
server.ha.disruptionBudget.enabled bool true
server.ha.disruptionBudget.maxUnavailable string nil
server.serviceAccount.create bool true
server.serviceAccount.name string ""
server.serviceAccount.annotations object {}
server.serviceAccount.extraLabels object {}
server.serviceAccount.serviceDiscovery.enabled bool true
server.statefulSet.annotations object {}
server.statefulSet.securityContext.pod object {}
server.statefulSet.securityContext.container.capabilities.drop[0] string "ALL"
server.hostNetwork bool false
ui.enabled bool true
ui.publishNotReadyAddresses bool true
ui.activeVaultPodOnly bool false
ui.serviceType string "ClusterIP"
ui.serviceNodePort string nil
ui.externalPort int 8200
ui.targetPort int 8200
ui.externalTrafficPolicy string "Cluster"
ui.annotations object {}
csi.enabled bool false
csi.image.repository string "registry1.dso.mil/ironbank/hashicorp/vault-csi-provider"
csi.image.tag string "v1.4.0"
csi.image.pullPolicy string "IfNotPresent"
csi.volumes string nil
csi.volumeMounts string nil
csi.resources.requests.cpu string "50m"
csi.resources.requests.memory string "128Mi"
csi.resources.limits.cpu string "50m"
csi.resources.limits.memory string "128Mi"
csi.hmacSecretName string ""
csi.daemonSet.updateStrategy.type string "RollingUpdate"
csi.daemonSet.updateStrategy.maxUnavailable string ""
csi.daemonSet.annotations object {}
csi.daemonSet.providersDir string "/etc/kubernetes/secrets-store-csi-providers"
csi.daemonSet.kubeletRootDir string "/var/lib/kubelet"
csi.daemonSet.extraLabels object {}
csi.daemonSet.securityContext.pod object {}
csi.daemonSet.securityContext.container.capabilities.drop[0] string "ALL"
csi.pod.annotations object {}
csi.pod.tolerations list []
csi.pod.nodeSelector object {}
csi.pod.affinity object {}
csi.pod.extraLabels object {}
csi.agent.enabled bool true
csi.agent.extraArgs list []
csi.agent.image.repository string "registry1.dso.mil/ironbank/hashicorp/vault"
csi.agent.image.tag string "1.14.2"
csi.agent.image.pullPolicy string "IfNotPresent"
csi.agent.logFormat string "standard"
csi.agent.logLevel string "info"
csi.agent.resources.requests.memory string "256Mi"
csi.agent.resources.requests.cpu string "250m"
csi.agent.resources.limits.memory string "256Mi"
csi.agent.resources.limits.cpu string "250m"
csi.priorityClassName string ""
csi.serviceAccount.annotations object {}
csi.serviceAccount.extraLabels object {}
csi.readinessProbe.failureThreshold int 2
csi.readinessProbe.initialDelaySeconds int 5
csi.readinessProbe.periodSeconds int 5
csi.readinessProbe.successThreshold int 1
csi.readinessProbe.timeoutSeconds int 3
csi.livenessProbe.failureThreshold int 2
csi.livenessProbe.initialDelaySeconds int 5
csi.livenessProbe.periodSeconds int 5
csi.livenessProbe.successThreshold int 1
csi.livenessProbe.timeoutSeconds int 3
csi.debug bool false
csi.extraArgs list []
domain string "bigbang.dev"
monitoring.enabled bool false
monitoring.namespace string "monitoring"
networkPolicies.enabled bool false
networkPolicies.controlPlaneCidr string "0.0.0.0/0"
networkPolicies.vpcCidr string "0.0.0.0/0"
networkPolicies.ingressLabels.app string "istio-ingressgateway"
networkPolicies.ingressLabels.istio string "ingressgateway"
autoInit.enabled bool true
autoInit.image.repository string "registry1.dso.mil/ironbank/big-bang/base"
autoInit.image.tag string "2.0.0"
autoInit.storage.size string "2Gi"
istio.enabled bool false
istio.vault.gateways[0] string "istio-system/main"
istio.vault.hosts[0] string "vault.{{ .Values.domain }}"
istio.vault.tls.cert string ""
istio.vault.tls.key string ""
istio.mtls.mode string "STRICT"
minio.enabled bool false
customAppIngressSelector.key string "vault-ingress"
customAppIngressSelector.value bool true
bbtests.enabled bool false
bbtests.cypress.artifacts bool true
bbtests.cypress.envs.cypress_vault_url string "http://vault.vault.svc:8200"
serverTelemetry.serviceMonitor.enabled bool false
serverTelemetry.serviceMonitor.selectors object {}
serverTelemetry.serviceMonitor.interval string "30s"
serverTelemetry.serviceMonitor.scrapeTimeout string "10s"
serverTelemetry.prometheusRules.enabled bool false
serverTelemetry.prometheusRules.selectors object {}
serverTelemetry.prometheusRules.rules list []

Contributing

Please see the contributing guide if you are interested in contributing.