如何通过Helm在开发模式下为HashiCorp Vault配置TLS
如何通过Helm在开发模式下为HashiCorp Vault配置TLS
我明白你现在卡在用Helm部署开发模式的Vault并启用TLS这个点上了——dev模式默认是纯HTTP的,直接改环境变量确实容易踩坑,我来帮你梳理下正确的配置思路和步骤。
首先得明确:Vault的dev模式默认不会启用TLS,光靠设置VAULT_ADDR或者VAULT_CACERT这类环境变量没用,必须通过启动参数明确告诉它要启用TLS并指定证书文件。结合你的配置,我整理了一套可行的修正方案:
修正后的Helm Values配置(test-values.yaml)
injector: enabled: false global: enabled: true tlsDisable: false # 全局禁用TLS的开关,必须设为false server: # 开启dev模式,同时添加TLS相关的启动参数 dev: enabled: true extraArgs: - -dev-tls # 核心参数:让dev模式启用TLS - -dev-tls-cert=/vault/userconfig/test-certs/server.crt # 指定服务器证书路径 - -dev-tls-key=/vault/userconfig/test-certs/server.key # 指定服务器密钥路径 extraEnvironmentVars: VAULT_ADDR: https://0.0.0.0:8200 # 让Vault自身的CLI/API调用使用HTTPS VAULT_CACERT: /vault/userconfig/test-certs/ca.crt # 指定CA证书用于验证 # 挂载你的证书文件到容器内 extraVolumes: - name: test-certs secret: secretName: vault-test-certs # 这里替换成你存证书的Secret名称 extraVolumeMounts: - name: test-certs mountPath: /vault/userconfig/test-certs readOnly: true # 证书文件只读即可
关键配置说明
-dev-tls是核心:没有这个参数,dev模式只会启动HTTP服务,你之前设置的环境变量自然不会生效。- 证书挂载必须到位:要把你的CA证书、服务器证书、密钥通过K8s Secret挂载到容器里,并且在
extraArgs里指定正确的文件路径,Vault才能读取到这些证书。 - 不要乱改
VAULT_DEV_LISTEN_ADDRESS:默认的8200端口就可以,改了反而容易导致端口不匹配或者暴露问题,之前的“connection refused”大概率是因为改了端口但没正确配置TLS监听导致的。
测试步骤
- 创建证书Secret:先把你的证书文件(ca.crt、server.crt、server.key)打包成K8s Secret:
kubectl create secret generic vault-test-certs --from-file=ca.crt=./path/to/your/ca.crt --from-file=server.crt=./path/to/your/server.crt --from-file=server.key=./path/to/your/server.key
- 部署/更新Vault:用Helm应用你的配置:
helm upgrade --install vault hashicorp/vault -f test-values.yaml
- 验证TLS连接:进入容器测试Vault状态,确认HTTPS连接正常:
kubectl exec -it vault-0 -- vault status
这样配置后,你的开发模式Vault就会通过TLS提供服务,测试也能正常用HTTPS连接了。
备注:内容来源于stack exchange,提问作者Marcus Ruddick
相关产品推荐
相关产品推荐

