You need to enable JavaScript to run this app. 如何通过Istio Ingress网关访问Prometheus与Grafana?配置子路径后加载报错
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Istio Ingress网关访问Prometheus与Grafana?配置子路径后加载报错

Istio 前缀路径访问Grafana前端加载失败的排查与解决

报错直接原因

  • VirtualService路由配置存在端口错误:原配置将路由目标端口写为Pod的3000端口,与grafana ClusterIP Service实际监听的80端口不匹配,导致部分请求路由失败
  • Grafana未开启子路径托管能力:启动时未配置子路径相关参数,前端返回页面中的静态资源请求默认指向网站根路径,与Istio网关设定的/grafana路由前缀不匹配,浏览器拉取静态资源失败后触发报错

分步修复操作

1. 配置Grafana子路径托管参数

Grafana 5.4.3版本支持通过环境变量覆盖默认配置,执行以下命令更新Deployment,自动滚动重启Pod生效配置:

kubectl set env deployment/grafana -n monitoring \
GF_SERVER_ROOT_URL="http://<你的Istio Ingress实际访问域名>/grafana" \
GF_SERVER_SERVE_FROM_SUB_PATH="true"

参数对应说明:

  • GF_SERVER_ROOT_URL对应grafana.ini中的root_url配置,指定Grafana对外暴露的访问根路径,前端生成的静态资源链接会自动带上/grafana前缀
  • GF_SERVER_SERVE_FROM_SUB_PATH开启子路径服务模式,确保Grafana可正确响应/grafana前缀下的页面、API、静态资源请求

2. 修正VirtualService路由配置

将原配置中错误的路由端口替换为grafana Service的实际监听端口(80),更新后的完整配置如下:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: grafana
spec:
  hosts:
  - "*"
  gateways:
  - cogtiler-gateway.skydeck
  http:
  - match:
    - uri:
        prefix: /grafana
    route:
    - destination:
        host: grafana
        port:
          number: 80

应用更新配置:

kubectl apply -f grafana-virtualservice.yaml -n monitoring

验证校验项

  • 执行kubectl get svc grafana -n monitoring,确认Service的监听端口与VirtualService中配置的端口数值完全一致
  • 访问时使用带结尾斜杠的完整路径http://<你的Istio Ingress域名>/grafana/,避免路径不匹配触发跳转异常
  • 若仍有资源加载异常,可通过istioctl proxy-config routes <网关Pod名> -n <网关命名空间>确认网关已正确加载/grafana前缀的路由规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 03:06:04