使用Kong Ingress暴露K8s Dashboard时出现HTTP 400错误求助
问题排查与修复方案
核心问题:协议不匹配触发400错误
Kubernetes Dashboard的kubernetes-dashboard Service 443端口是HTTPS服务,但Kong Ingress默认会以HTTP协议向后端发送请求,这种协议不匹配会直接返回400错误。
具体修复步骤
- 修改Ingress配置,添加指定后端协议的注解,同时修正强制HTTPS的注解用法:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: dev-dashboard namespace: kubernetes-dashboard annotations: kubernetes.io/ingress.class: "kong" konghq.com/strip-path: "true" konghq.com/force-https: "true" # 替换原错误注解,实现HTTP转HTTPS重定向 konghq.com/backend-protocol: "HTTPS" # 关键配置:告诉Kong用HTTPS访问后端 spec: rules: - host: dev.dashboard.com http: paths: - path: / pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 443 - 若Kong Ingress未配置全局证书,需为Ingress添加TLS配置(否则HTTPS访问会出现证书错误):
spec: # 保留原有rules部分 tls: - hosts: - dev.dashboard.com secretName: your-tls-secret # 替换为你已创建的证书Secret名称
额外验证项
- 确认Dashboard Service端口配置:执行
kubectl describe service kubernetes-dashboard -n kubernetes-dashboard,检查TargetPort是否指向容器的443端口(HTTPS服务端口)。 - 测试网络连通性:在Kong Pod内部执行
curl -v https://kubernetes-dashboard.kubernetes-dashboard.svc.cluster.local:443,确认能收到后端响应(忽略证书警告即可)。
内容的提问来源于stack exchange,提问作者Ajinkya Bapat
相关产品推荐
相关产品推荐

