部署于EKS集群(S3后端)的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_key、secret_key、bucket名称、region是否正确,另外在EKS里更推荐用IRSA(IAM角色绑定Pod)代替硬编码密钥,避免权限问题; - 还要验证Vault是否初始化:执行
kubectl exec -it <vault-pod-name> -n <你的命名空间> -- vault status,如果显示Sealed: true或Initialized: 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




