通过 helm chart 部署 Grafana UI 时不加载

Posted

技术标签:

【中文标题】通过 helm chart 部署 Grafana UI 时不加载【英文标题】:Grafana UI does not load when deployed through helm chart 【发布时间】:2021-05-07 09:19:48 【问题描述】:

我正在尝试部署 kube-prometheus-stack。

我已将其作为依赖项添加到 Chart.yaml 中,如下所示。

...
dependencies:
  - name: kube-prometheus-stack
    version: 13.4.1
    repository: https://prometheus-community.github.io/helm-charts
...

我还配置了一个入口规则,将 /grafana/?(.*) 路径路由到端口 80 处的服务 Solutions-helm-grafana。

- path: /grafana/?(.*)
  pathType: Prefix
  backend:
    service:
      name: helm-grafana
      port:
        number: 80

但是,当我尝试在浏览器中打开 /grafana/ 时,它会在重定向到 /login 后返回 404。我需要添加哪些模板才能成功部署?有没有可以参考的例子?

【问题讨论】:

【参考方案1】:

嗨@Moses,您可以尝试从路径中删除 ?(.*) 吗?

当入口没有向入口控制器注册时出现404。

可能是因为发布没有部署成功。

尝试以下步骤来调试问题:-

检查是否已使用kubectl get pods 部署了 pod。 尝试调试入口对象。 kubectl describe ing <ing_object_name>。 检查端点是否已使用kubectl get ep 创建。 接下来,使用kubectl get service 获取服务端点。 使用 busybox pod 卷曲并检查 Grafana 是否通过上述服务提供服务。

更新:- 添加以下配置以在子路径上服务 Grafana

env:
  GF_SERVER_DOMAIN: <domain>
  GF_SERVER_ROOT_URL: https://<domain>/grafana/
  GF_SERVER_SERVE_FROM_SUB_PATH: true

并在入口中使用此路径:

path: /grafana/

来源: Run Grafana behind reverse-proxy Grafana confiugration root_url

【讨论】:

rohatgisanat 谢谢。我确实尝试了你提到的步骤。所有 pod、入口、端点和服务都在正确部署。我的感觉是,我需要以某种方式弄清楚如何设置根路径或子路径,以便从 grafana 正确提供网页, 嗨@Moses,您是否尝试过在busybox 中使用service/grafana 卷曲?还可以尝试在最后删除正则表达式expr。如果那行得通,那么您的入口就是问题所在。您可以进一步查看入口控制器是否正在读取您的入口对象。 (同时查看注释) @Moses 添加了解决方案。 rohatgisanat 我试过了,但是没用。也许我还需要改变一些东西。不过感谢您的解决方案。它帮助我了解了如何设置环境变量。 ``` grafana: env: GF_SERVER_DOMAIN: GF_SERVER_ROOT_URL: http://:3000/grafana/ GF_SERVE_FROM_SUB_PATH: true ``` 成功了。谢谢rohatgisanat。我的印象是端口号是 80,因为它显示在 kubectl get services 中。在列出端点时,会显示端口 3000。所以在 ingress.yaml 中,我们路由到服务端口 80。但在环境变量 GF_SERVER_ROOT_URL 中,我们使用端口 3000。

以上是关于通过 helm chart 部署 Grafana UI 时不加载的主要内容,如果未能解决你的问题,请参考以下文章

helm3 方式安装 grafana

如何使用 helm chart 将 smtp 设置添加到 prometheus-operator?

如何编辑 Helm Chart 的配置?

helm 部署 grafana

如何在 Grafana helm 图表中配置自定义 LDAP?

使用 helm 部署时基于环境的不同 grafana.ini