diff --git a/docs/components.md b/docs/components.md index 1569e44260..a9e51627d5 100644 --- a/docs/components.md +++ b/docs/components.md @@ -431,6 +431,24 @@ custom_dashboards: kube.ConfigMap($.p + "grafana-custom-dashboards") + $.metadat And mount that ConfigMap in the desired location inside the Grafana pod. +#### Grafana Plugins + +Plugins enables users to add support for various types of datasources, panels and apps to Grafana. Checkout the official [Plugin Repository](https://grafana.com/plugins) to discover the available plugins for Grafana. + +To install additional plug-ins, override the `plugins` item inside the `grafana` scope, like this: + +```jsonnet +(import "../../manifests/platforms/aks.jsonnet") { + config:: import "kubeprod-autogen.json", + grafana+: { + plugins+: [ + "grafana-piechart-panel", + "grafana-worldmap-panel", + ], + }, +} +``` + ## Ingress stack ### NGINX Ingress Controller diff --git a/manifests/components/grafana.jsonnet b/manifests/components/grafana.jsonnet index 67330dbc4d..b3847268c6 100644 --- a/manifests/components/grafana.jsonnet +++ b/manifests/components/grafana.jsonnet @@ -39,6 +39,9 @@ local GRAFANA_DATA_MOUNTPOINT = "/opt/bitnami/grafana/data"; // Amount of persistent storage required by Alertmanager storage:: "1Gi", + // List of plugins to install + plugins:: [], + prometheus:: error "No Prometheus service", // Default to "Admin". See http://docs.grafana.org/permissions/overview/ for @@ -73,7 +76,7 @@ local GRAFANA_DATA_MOUNTPOINT = "/opt/bitnami/grafana/data"; }, // Generates YAML configuration under provisioning/datasources/ - datasources: kube.ConfigMap($.p + "grafana-prometheus-datasource") + $.metadata { + datasources: utils.HashedConfigMap($.p + "grafana-datasource-configuration") + $.metadata { local this = self, datasources:: { // Built-in datasource for BKPR's Prometheus @@ -94,7 +97,7 @@ local GRAFANA_DATA_MOUNTPOINT = "/opt/bitnami/grafana/data"; }, // Generates YAML dashboard configuration under provisioning/dashboards/ - dashboards_provider: kube.ConfigMap($.p + "grafana-dashboards-configuration") + $.metadata { + dashboards_provider: utils.HashedConfigMap($.p + "grafana-dashboards-configuration") + $.metadata { local this = self, dashboard_provider:: { // Grafana dashboards configuration @@ -117,7 +120,7 @@ local GRAFANA_DATA_MOUNTPOINT = "/opt/bitnami/grafana/data"; }, }, - kubernetes_dashboards: kube.ConfigMap($.p + "grafana-kubernetes-dashboards") + $.metadata { + kubernetes_dashboards: utils.HashedConfigMap($.p + "grafana-kubernetes-dashboards") + $.metadata { local this = self, data+: { "k8s_cluster_capacity.json": importstr "grafana-dashboards/handcrafted/kubernetes/k8s_cluster_capacity.json", @@ -158,6 +161,7 @@ local GRAFANA_DATA_MOUNTPOINT = "/opt/bitnami/grafana/data"; GF_LOG_MODE: "console", GF_LOG_LEVEL: "warn", GF_METRICS_ENABLED: "true", + GF_INSTALL_PLUGINS: std.join(",", $.plugins), }, ports_+: { dashboard: { containerPort: 3000 },