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

ArgoCD结合Istio在AKS环境下访问/argo返回404问题排查

解决ArgoCD通过Istio网关带/argo前缀访问时静态资源404的问题

问题根源

当前VirtualService使用uri: "/"的重写规则会将所有匹配/argo前缀的请求URI完全替换为/,比如请求/argo/css/main.css会被改成/,导致ArgoCD返回首页而非对应静态资源;同时需确保ArgoCD的启动参数与Istio配置匹配,保证静态资源路径正确映射。

修复步骤

1. 修正VirtualService的重写规则

将原有的rewrite.uri替换为rewrite.prefixRewrite,仅替换URI前缀部分,而非整个路径:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: argocd-server
  namespace: argocd
spec:
  hosts:
  - <FQDN>
  gateways:
  - istio-system/global-gateway
  http:
  - match:
    - uri:
        prefix: "/argo"
    rewrite:
      prefixRewrite: "/"  # 替换前缀而非整个URI
    route:
    - destination:
        host: argocd-server.argocd.svc.cluster.local
        port:
          number: 80

2. 确保ArgoCD Deployment启动参数正确

验证argocd-server的Deployment args包含以下配置(若缺失则添加):

args:
  - --insecure  # 适配网关SSL终止后的HTTP访问
  - --staticassets /usr/share/argocd/ui  # 指定静态资源目录
  - --server.basehref /argo  # 匹配Istio的前缀路径

3. 配置DestinationRule禁用后端TLS

确保Istio与ArgoCD后端通信使用HTTP,避免TLS握手问题:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: argocd-server
  namespace: argocd
spec:
  host: argocd-server.argocd.svc.cluster.local
  trafficPolicy:
    tls:
      mode: DISABLE

验证操作

  1. 应用更新后的配置:
kubectl apply -f argocd-virtualservice.yaml
kubectl apply -f argocd-destinationrule.yaml
kubectl rollout restart deployment argocd-server -n argocd
  1. 访问<FQDN>/argo,打开Chrome开发者工具的网络面板,确认所有静态资源(CSS、JS等)返回200状态码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:40:24