kube-prometheus-stack: ダッシュボードを指定の Grafana フォルダに入れる

kube-prometheus-stack でインストールされるダッシュボードはデフォルトでは “General” にインストールされる。これを例えば “kube-prometheus-stack” という名前のフォルダにインストールしたければ次のようにする。

grafana:
  sidecar:
   dashboards:
     folderAnnotation: grafana_dashboard_folder
     provider:
       foldersFromFilesStructure: true

sidecar.dashboards.folderAnnotation は ConfigMap に含まれるダッシュボードのデータを任意のパスに配置するための Annotation のキー名を指定する設定。

sidecar.dashboards.provider.foldersFromFilesStructure は、ディレクトリ名を Grafana のフォルダの名前として使う設定。

なお、この機能は Grafana Helm Chart に含まれる sidecar のもので、Grafana の機能ではない。この sidecar コンテナは任意のラベルを持つ ConfigMap をウォッチして、ConfigMap 含まれるデータを Grafana コンテナの指定のディレクトリ、デフォルトでは /tmp/dashboards に配置してくれるというもの。ラベルのデフォルトは grafana_folder: "1" となっている。

kube-prometheus-stack で生成されるダッシュボードデータを含む ConfigMap は任意の annotation を追加することができないので、仕方がなく Kustomize を使う。

patchesJson6902:
- target:
    version: v1
    kind: ConfigMap
    name: ".*"
    labelSelector: grafana_dashboard=1
  patch: |
    - op: add
      path: /metadata/annotations
      value:
        grafana_dashboard_folder: /tmp/dashboards/kube-prometheus-stack    

全くブログを更新できていないので、家のラズパイクラスタでやっている細々した作業をエントリにしていくことにしていこうかなと思ったけど、これだけ書くにもそれなりに時間がかかるので悩ましい。