如何使用bitnami helm chart配置Grafana的数据源?



我在配置带有Helm Charts和Kubernetees的grafana数据源时遇到了麻烦。这是我的释放。

kind: Namespace
apiVersion: v1
metadata:
name: monitoring
annotations:
name: monitoring
labels:
name: monitoring
---
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-datasources
namespace: monitoring
data:
grafana.ini: |-
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local:9090
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: prometheus
namespace: monitoring
spec:
interval: 5m
chart:
spec:
chart: kube-prometheus
version: "8.0.7"
sourceRef:
kind: HelmRepository
name: bitnami
namespace: flux-system
interval: 1m
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: grafana
namespace: monitoring
spec:
interval: 5m
chart:
spec:
chart: grafana
version: "7.9.8"
sourceRef:
kind: HelmRepository
name: bitnami
namespace: flux-system
interval: 1m
values:
config:
useGrafanaIniFile: true
grafanaIniConfigMap: grafana-datasources
---

我看到grafana确实在/opt/bitnami/grafana/conf/目录下有grafana.ini文件,但是当检查grafana UI中的数据源时,没有。有没有人知道为什么会这样,因为我不明白我做错了什么。

当使用Flux部署时,使用configMapGenerator构造函数而不是手动创建配置映射可能会受益。

假设你的文件夹结构是这样的

monitoring/
├── kustomize.yaml
├── kustomizeconfig.yaml
├── namepace.yaml
├── release.yaml
└── values.yaml

kustomization.yaml

namespace属性告诉Flux,它应该在监视命名空间中安装文件中引用的所有资源。这种方式只需要引用一个名称空间,如果你从其他名称空间拉入对象(例如。(从flux-system命名空间获取)。

如果你调用你的值文件的其他东西(例如:grafana-config.yaml),那么您应该将files列表中的名称更改为values.yaml=grafana-config.yaml之类的内容。如果没有找到values.yaml条目,Helm会报错。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: monitoring
resources:
- release.yaml
- namespace.yaml
configMapGenerator:
- name: grafana-values
files:
- values.yaml
# - values.yaml=grafana-config.yaml
configurations:
- kustomizeconfig.yaml

kustomizeconfig.yaml

nameReference将在发布的release.yaml文件中使用ConfigMap类型的valuesFrom的值进行猴子补丁,因此它与ConfigMap匹配。

nameReference:
- kind: ConfigMap
version: v1
fieldSpecs:
- path: spec/valuesFrom/name
kind: HelmRelease

namespace.yaml

kind: Namespace
apiVersion: v1
metadata:
name: monitoring
annotations:
name: monitoring
labels:
name: monitoring

release.yaml

apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: prometheus
spec:
interval: 5m
chart:
spec:
chart: kube-prometheus
version: "8.0.7"
sourceRef:
kind: HelmRepository
name: bitnami
namespace: flux-system
interval: 1m
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: grafana
spec:
interval: 5m
chart:
spec:
chart: grafana
version: "7.9.8"
sourceRef:
kind: HelmRepository
name: bitnami
namespace: flux-system
interval: 1m
valuesFrom:
- kind: ConfigMap
name: grafana-values

values.yaml

  • grafana.ini将被转换为grafana配置文件。grafana.ini obejct
  • datasources将作为数据导入来源:grafana。数据源obejct

你可以引用所有能进入值的值。values.yaml文件

grafana.ini:
paths:
data: /var/lib/grafana/
logs: /var/log/grafana
plugins: /var/lib/grafana/plugins
provisioning: /etc/grafana/provisioning
metrics:
enable: true
diable_total_stats: true
date_formats:
use_browser_locale: true
analytics:
reporting_enabled: false
datasources:
datasources.yaml:
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://prometheus-server.monitoring

最新更新