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

启用HA时,如何通过Ingress指向Vault-UI服务访问UI界面?

解决Vault HA模式下Ingress访问UI的问题

问题分析

  1. 同一主机名Ingress冲突:Nginx Ingress Controller不允许同一主机名存在多个独立Ingress资源,会直接拒绝配置。
  2. 独立Ingress的502错误:vault-ui服务本质是反向代理,需要正确转发请求到vault-active,同时Ingress路径配置可能未适配vault-ui的代理逻辑,导致后端通信失败。

方案1:复用原有Server Ingress(推荐)

直接修改Chart的values.yaml,在默认的server Ingress中添加UI路径规则,既避免主机名冲突,又能统一访问入口:

server:
  ha:
    enabled: true
    replicas: 3
    config: |
      ui = true
      storage "consul" {
        path = "vault"
        address = "myconsul.mywebsite.com:8500"
      }
  ingress:
    enabled: true
    # 添加UI路径映射,适配extensions/v1beta1格式(对应你的K8s 1.21版本)
    paths:
      - path: /
        backend:
          serviceName: vault-active
          servicePort: 8200
      - path: /ui
        backend:
          serviceName: vault-ui
          servicePort: 80
ui:
  enabled: true

更新Chart应用配置:

helm upgrade vault hashicorp/vault -n vault -f values.yaml

之后访问myvault.mywebsite.com/ui即可直接进入Vault UI。

方案2:修复独立Ingress配置

若坚持使用独立Ingress,需解决主机名冲突和502问题:

  1. 使用不同子域名(如vault-ui.mywebsite.com)避免冲突
  2. 添加Nginx注解适配代理逻辑,确保请求正确转发到vault-ui

修改后的Ingress配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: vault-ingress
  namespace: vault
  annotations:
    # 路径重写适配vault-ui的代理规则
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    # 延长超时时间,避免UI加载超时
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
spec:
  ingressClassName: nginx
  rules:
  - host: vault-ui.mywebsite.com
    http:
      paths:
      - path: /(.*)
        backend:
          serviceName: vault-ui
          servicePort: 80

应用配置后,执行以下步骤排查:

  • 确认vault-ui Pod运行正常:kubectl get pods -n vault | grep vault-ui
  • 验证vault-ui能访问vault-active:kubectl exec -n vault <vault-ui-pod-name> -- curl http://vault-active.vault.svc.cluster.local:8200/v1/sys/health,返回200/429状态即为正常
  • 查看Ingress Controller日志定位错误:kubectl logs -n ingress-nginx <ingress-controller-pod-name> -f

额外验证

确认Vault服务已启用UI:

kubectl exec -n vault <vault-active-pod-name> -- vault status

输出中应包含UI Enabled: true。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:30:51