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

Kubernetes/Helm部署HashiCorp Vault出现HTTP发往HTTPS服务错误

问题根因定位

当前核心矛盾是Kubernetes集群内置的健康检查探针、服务端口转发逻辑和Vault开启TLS后的监听配置不匹配,同时存在HA存储配置冲突、端口映射混乱的问题,具体如下:

  • 同时开启了raft和consul两种存储,Vault启动时会随机选择存储加载,直接导致部署不稳定、偶发正常的情况
  • 服务配置端口映射混乱:service的port是8200,targetPort是443,但是Vault的TCP监听器两个配置分别监听8200和443且都开启了TLS,健康探针默认用HTTP请求访问127.0.0.1:8200,自然触发HTTP请求发送到HTTPS服务的报错
  • Ingress未配置后端转发协议规则,导致域名无法正常访问
排查&解决步骤

第一步:清理冲突配置

删除ha.raft.config完整配置段,仅保留你需要的consul存储配置即可,避免多存储逻辑冲突。

第二步:修正健康检查探针配置

在server段下添加如下配置,让探针改用HTTPS协议请求,适配Vault的TLS配置:

server:
  readinessProbe:
    enabled: true
    path: "/v1/sys/health?standbyok=true&sealedcode=200&uninitcode=200"
    scheme: HTTPS
    failureThreshold: 2
    initialDelaySeconds: 5
    periodSeconds: 5
    successThreshold: 1
    timeoutSeconds: 3
  livenessProbe:
    enabled: true
    path: "/v1/sys/health?standbyok=true"
    scheme: HTTPS
    failureThreshold: 2
    initialDelaySeconds: 60
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 3

第三步:统一端口映射逻辑

修正service和listener的端口配置,避免映射混乱:

server:
  service:
    enabled: true
    port: 8200
    targetPort: 8200 # 和listener的监听端口对齐
  ha:
    config: |
      ui = true
      listener "tcp" {
        tls_disable = false
        address = "[::]:8200" # 统一监听8200端口
        cluster_address = "[::]:8201"
        tls_cert_file = "/vault/userconfig/vault-server-tls/tls.crt"
        tls_key_file = "/vault/userconfig/vault-server-tls/tls.key"
        tls_client_ca_file = "/vault/userconfig/vault-server-tls/vault.ca"
        tls_require_and_verify_client_cert = false
      }
      storage "consul" {
        path = "vault"
        address = "HOST_IP:8500"
      }
      disable_mlock = true

第四步:修正Ingress配置,解决域名无法访问问题

补充Ingress转发规则和后端协议配置:

ingress:
  enabled: true
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # 告知Ingress用HTTPS协议转发到后端Vault服务
    # 保留原有cert、dns相关的annotation配置
  hosts:
    - host: "vault.<hostname>"
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: vault
              port:
                number: 8200

第五步:重新部署验证

卸载原有Vault release,删除遗留的PVC(避免残留封存数据影响),用修正后的values.yaml重新部署,完成后手动解封Vault即可恢复正常。

内容的提问来源于stack exchange,提问作者anonymousmonkey339

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:03