You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

部署于EKS集群(S3后端)的Vault UI浏览器访问报404求助

排查Vault UI 404错误的解决方案

我来帮你梳理下这个问题的排查方向,结合你提供的values.yaml配置,咱们一步步来定位原因:

1. 先确认服务端口映射是否正确

你配置了UI用LoadBalancer暴露,但得先检查Service是否把请求正确转发到Vault Pod的8200端口(Vault默认的API/UI端口)。执行以下命令查看Service细节:

kubectl get svc -n <你的命名空间>
kubectl describe svc <vault-ui-service-name> -n <你的命名空间>

重点看targetPort是否设置为8200,以及LoadBalancer的外部IP是否正常分配。如果端口映射错了,外部请求根本到不了Pod,自然会返回404。

2. 检查Vault Pod的启动状态与日志

如果Pod没正常启动,或者后端存储连接失败,UI肯定访问不了。先看Pod状态和日志:

kubectl get pods -n <你的命名空间>
kubectl logs <vault-pod-name> -n <你的命名空间>
  • 日志里应该能看到UI enabled: true的提示,说明UI模块已加载;
  • 如果日志里有S3连接错误(比如权限不足、bucket不存在),那Vault启动失败,UI自然无法访问。这时候要确认S3的access_keysecret_key、bucket名称、region是否正确,另外在EKS里更推荐用IRSA(IAM角色绑定Pod)代替硬编码密钥,避免权限问题;
  • 还要验证Vault是否初始化:执行kubectl exec -it <vault-pod-name> -n <你的命名空间> -- vault status,如果显示Sealed: trueInitialized: false,必须先完成初始化和unseal操作,UI才会显示登录界面。

3. 验证Listener配置的正确性

你的server配置里的listener块:

listener "tcp" {
  tls_disable = 1
  address = "[::]:8200"
  cluster_address = "[::]:8201"
}

这里tls_disable=1禁用了TLS,所以访问时必须用http://而不是https://,用https访问会直接报错或返回404。另外,address="[::]:8200"是监听IPv6和IPv4,你可以尝试改成address="0.0.0.0:8200",确保监听所有IPv4地址,避免端口监听范围的问题。

4. 内部测试UI服务是否正常

直接进入Pod内部,用curl测试本地UI路径,确认服务本身是否正常:

kubectl exec -it <vault-pod-name> -n <你的命名空间> -- curl http://localhost:8200/ui

如果返回正常的HTML内容,说明Pod内部的UI服务没问题,问题出在外部访问的网络链路(比如EKS安全组是否允许8200端口的入站流量、LoadBalancer的转发规则是否正确)。如果内部curl也返回404,那说明UI模块没正确加载,检查ui=true配置是否生效,或者重新部署Pod。

5. HA模式配置的小提示

你启用了HA模式但只设置了replicas:1,单节点HA虽然能运行,但Vault的HA模式推荐至少3个节点保证高可用性。不过这不是导致404的直接原因,后续扩展节点时要注意集群通信的配置。


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

火山引擎 最新活动