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

Kubernetes Ingress配置后ArgoCD访问返回200但显示空白页问题咨询

问题根因

你遇到的问题由三处配置错误共同导致:

  • 注解冲突:nginx.ingress.kubernetes.io/ssl-passthrough: "true"与nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"互斥。SSL透传模式下Ingress Controller不会解密TLS流量,路径重写、后端协议配置等需要解析流量的规则全部失效,同时日志中出现的SSL_do_handshake() failed报错,是因为你用HTTPS协议请求了ArgoCD服务的HTTP端口。
  • 重写规则无效:你未开启nginx.ingress.kubernetes.io/use-regex正则匹配注解,路径规则也没有设置捕获组,rewrite-target: /argo-cd/$2中的$2无法匹配到任何路径参数,重写后的路径不符合后端服务要求。
  • ArgoCD未配置子路径支持:ArgoCD默认以根路径提供服务,你通过/argo-cd子路径访问时,ArgoCD返回的页面中静态资源(CSS、JS)的引用路径都是/开头,浏览器会从站点根路径请求资源,资源加载失败就会出现返回200但页面空白的问题。

修复步骤

1. 配置ArgoCD子路径支持

修改ArgoCD Server的启动参数,添加--rootpath=/argo-cd,或直接修改ArgoCD ConfigMap中的server.rootpath字段为/argo-cd,重启ArgoCD Server Pod生效。这一步是子路径访问ArgoCD的必填配置,不可省略。

2. 修正Ingress配置

删除冲突的ssl-passthrough注解,补全正则匹配规则,参考配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server-ingress
  namespace: argocd
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  # 建议配置专属host避免路径匹配冲突,不需要可删除host字段
  - host: argocd.example.com
    http:
      paths:
        - path: /argo-cd(/|$)(.*)
          pathType: Prefix
          backend:
            service:
              name: argocd-server
              port:
                number: 443

如果你必须使用SSL透传模式,则不能使用路径区分服务,需要单独给ArgoCD配置专属域名,删除backend-protocol、rewrite-target、use-regex等注解即可。

3. 校验ArgoCD Service端口映射

确认argocd-server服务的443端口对应的Pod端口是ArgoCD的HTTPS端口(默认是8443),避免误映射到8080的HTTP端口导致SSL握手失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:36:03