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

Kubernetes Dashboard搭配Nginx Ingress报错“Client sent http request over HTTPS Server”求助

问题解决:Kubernetes Dashboard + NGINX Ingress 报"Client sent http request over HTTPS Server"

核心问题分析

你遇到的问题本质是Ingress Controller未正确使用HTTPS协议转发请求到Dashboard后端,且你使用的是NGINX官方维护的Ingress Controller(nginx-stable chart),而非Kubernetes社区的ingress-nginx项目,导致注解用错;同时配置中的冲突项也让注解无法生效。

具体修正步骤

1. 替换错误的Ingress注解

NGINX官方Ingress Controller不识别nginx.ingress.kubernetes.io/backend-protocol注解,需使用其专属注解nginx.org/backend-protocol: "HTTPS";同时移除ssl-passthrough注解(你需要Ingress终止SSL后反向代理到后端HTTPS,而非透传TLS流量)。

2. 修正Ingress配置中的错误项

  • 移除secretName: admin-user(该字段在此处无效,admin-user是认证用Secret,而非Ingress证书Secret)
  • 确保后端端口配置使用Dashboard服务的端口名称https(可通过kubectl get svc kubernetes-dashboard -n kubernetes-dashboard确认)

修正后的Dashboard Helm Ingress配置:

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.org/backend-protocol: "HTTPS"  # 替换为NGINX官方注解
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
    # 移除ssl-passthrough和secure-backends,避免冲突
  hosts:
  - k8s-dashboard.hpsc.prod.mycompany.com
  ingressClassName: nginx
  backend:
    service:
      name: kubernetes-dashboard
    port:
      name: https  # 使用端口名称更可靠
    pathType: ImplementationSpecific
    paths:
    - /
    host: k8s-dashboard.hpsc.prod.mycompany.com
  tls:
  - hosts:
    - k8s-dashboard.hpsc.prod.mycompany.com
    secretName: nginx-custom-certificate-secret

3. 修正NGINX Ingress Controller的Helm配置

你的values.yaml中enableTLSPassthrough层级错误,需移至controller根节点下;由于我们不需要透传TLS,可直接将其设为false避免冲突:

controller:
  defaultTLS:
    secret: nginx-stable/nginx-custom-certificate-secret
  enableTLSPassthrough: false  # 修正层级并关闭透传

4. 重新部署配置

# 重新部署Dashboard
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --namespace kubernetes-dashboard --version 6.0.8 -f your-updated-dashboard-values.yaml

# 若修改了Ingress Controller配置,重新部署
helm upgrade nginx-stable nginx-stable/nginx-ingress --namespace nginx-stable --version 0.16.1 -f your-updated-ingress-values.yaml

5. 验证配置生效

进入Ingress Controller Pod,查看/etc/nginx/conf.d/下的生成配置,确认proxy_pass指向为https://kubernetes-dashboard.kubernetes-dashboard.svc而非http。

注解无效的关键原因

你混淆了两个不同的Ingress Controller项目:nginx.ingress.kubernetes.io/backend-protocol是Kubernetes社区维护的ingress-nginx项目注解,而你使用的是NGINX官方维护的Ingress Controller,二者注解不通用,这是最容易踩的坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:35:34