使用 GitLab-Grafana chart

gitlab-grafana 子 chart 改编了 grafana/grafana chart 以便正常运行,使用与 Omnibus GitLab 安装实例相同级别的配置。此外,安装 Grafana 允许最终用户安装额外的仪表盘,并纳入极狐GitLab 提供的仪表盘。

要求

此 chart 依赖于通常由 GitLab meta chart 安装的 grafana/grafana chart。This chart depends on the grafana/grafana chart。此外需要 Kubernetes Ingress 支持,使用 /-/grafana 路径正确路由 Grafana 请求。

设计选择

由于 Helm 的限制,无法在知道初始密码 Secret 的动态名称的情况下配置 Grafana chart。结果创建了一个静态命名的 Secret 来包含初始密码。这个 Secret 命名为 gitlab-grafana-initial-password

对于包含将初始密码注入 Grafana 容器的脚本的 ConfigMap,也存在同样的问题。该 ConfigMap 命名为 gitlab-grafana-import-secret

初始密码 Secret 和导入脚本 ConfigMap 都挂载到 Grafana 容器中(分别是 /tmp/initial/tmp/scripts),并且容器命令行被扩充,使用这两个对象来安全地向 Grafana 服务器公开初始密码。

修改容器命令行一般会阻止初始密码被注入到 Grafana 服务器环境中。

配置

没有必需的设置,如果您将所有 chart 部署在一起,它应该是开箱即用的。管理员凭据由 shared-secrets 作业创建,管理员用户名设置为 root

Grafana 的 root 用户密码可以通过以下命令提取:

kubectl get secret gitlab-grafana-initial-password -ojsonpath='{.data.password}' | base64 --decode ; echo

安装命令行选项

参数 默认值 说明
common.labels {} 此 chart 创建的适用于所有对象的补充标签。
ingress.apiVersion   apiVersion 字段中使用的值。
ingress.tls {} 如果未安装 GitLab cert manager,Ingress TLS 设置的哈希值
ingress.annotations {} 添加到 Grafana Ingress 资源的额外的 annotation。

仪表盘支持

Grafana 仪表盘从已部署命名空间中的 ConfigMap 中自动发现。如果创建的 ConfigMap 将 gitlab_grafana_dashboard 标签设置为 true,那么ConfigMap 中的 JSON 编码仪表盘将被导入到 Grafana 中。此导入发生一次(当 Grafana 重新启动时)并且对仪表盘的任何更改都不会写回 ConfigMap。当前没有在安装 chart 时创建仪表盘。 任何用户创建的仪表盘都可以通过使用 gitlab_grafana_dashboard 标签创建一个 ConfigMap,并自己管理 ConfigMap 来导入。

数据源支持

可以通过添加 gitlab_grafana_datasource 标签,与仪表盘相同的方式创建数据源。此 chart 将添加一个 ConfigMap 引导 Grafana 使用嵌入式 Prometheus 指标。