如何通过Pulumi创建Grafana文件夹

How to create a Grafana folder through Pulumi

我能够通过 kube-prometheus-stack.

的 HelmRelease 自定义资源定义使用 Pulumi 在 Azure Kubernetes 服务中安装和导入 Grafana 仪表板

我能够执行一些操作 ConfigMaps 来导入我之前存储为 JSON 文件的仪表板。

我现在要做的是将那些导入的仪表板放入 Grafana 的自定义文件夹中。

如何创建此类文件夹(第一个问题)以及如何为我正在导入的每个仪表板声明文件夹?

我导入dashboard的方式示例(实际是登陆到Grafana的根文件夹):

const myDashboard = fs.readFileSync(
  'dashboards/myDashboard.json',
  'utf-8'
);

new k8s.core.v1.ConfigMap(
  'my-dashboard-cm',
  {
    metadata: {
      name: 'my-dashboard',
      namespace: args.namespace,
      labels: { grafana_dashboard: '1' },
    },
    data: { 'my-dashboard.json': JSON.stringify(JSON.parse(myDashboard)) },
  },
  { parent: this }
);

感谢您的帮助!

您可以通过设置名为 k8s-sidecar-target-directory 的文件夹注释来设置仪表板的目录。

在 Pulumi 对象上应该如下所示。

new k8s.core.v1.ConfigMap(
  'my-dashboard-cm',
  {
    metadata: {
      name: 'my-dashboard',
      namespace: args.namespace,
      labels: { grafana_dashboard: '1' },
      annotations : { "k8s-sidecar-target-directory" : "/tmp/dashboards/yourfolder"                                     }
    },
    data: { 'my-dashboard.json': JSON.stringify(JSON.parse(myDashboard)) },
  },
  { parent: this }
);

您可能希望在主图表值上设置 sidecar.dashboards.provider.foldersFromFilesStructure:true,以便在 Grafana 菜单中具有相同的文件夹名称。