You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes微服务YAML中使用HashiCorp Vault注入的密钥

在微服务YAML中使用Vault注入的密钥

方式1:通过环境变量直接引用

Vault注入密钥后会在K8s集群中生成对应的Secret资源,你可以在微服务的Deployment/StatefulSet配置里,直接通过secretKeyRef把password密钥映射成环境变量:

containers:
  - name: 你的微服务容器名
    image: 你的服务镜像:版本
    env:
      - name: DB_PASSWORD  # 自定义环境变量名,服务代码里用这个名字取值
        valueFrom:
          secretKeyRef:
            name: <Vault生成的Secret名称>  # 可通过`kubectl get secrets`查询,通常和Pod名关联
            key: password  # 对应Vault里的password密钥

方式2:通过卷挂载读取文件

如果Vault采用卷挂载模式注入密钥,密钥会被写入Pod内的/vault/secrets目录(默认路径),每个密钥对应一个同名文件。你可以让服务代码直接读取/vault/secrets/password文件的内容,也可以在YAML里把文件内容转成环境变量:

containers:
  - name: 你的微服务容器名
    image: 你的服务镜像:版本
    env:
      - name: DB_PASSWORD
        valueFrom:
          secretKeyRef:
            name: <Vault生成的Secret名称>
            key: password
    # 如果需要手动挂载(通常Vault Injector会自动处理),可添加以下配置
    volumeMounts:
      - name: vault-secrets
        mountPath: /vault/secrets
        readOnly: true
volumes:
  - name: vault-secrets
    secret:
      secretName: <Vault生成的Secret名称>

Helm Chart里的统一配置建议

因为你用Helm管理8个微服务,建议把Vault相关配置抽离到values.yaml中,方便统一维护:

# values.yaml
vault:
  secretName: "app-vault-secret"  # 所有服务共用的Vault Secret名称,也可按服务单独配置

然后在微服务的Deployment模板中引用:

# templates/deployment.yaml
env:
  - name: DB_PASSWORD
    valueFrom:
      secretKeyRef:
        name: {{ .Values.vault.secretName }}
        key: password

确认Vault生成的Secret名称

如果不知道Secret名称,可在集群中执行命令查询:

kubectl get secrets | grep <你的Pod名称前缀>

内容的提问来源于stack exchange,提问作者Veli Şenol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:46:02