diff --git a/jsonnet/kube-prometheus/components/grafana.libsonnet b/jsonnet/kube-prometheus/components/grafana.libsonnet
index 9f18e4b0ea7be793c20490044ed896401644023f..e6879d4a5cf0cb9c0800891b4961c18a1af2e78d 100644
--- a/jsonnet/kube-prometheus/components/grafana.libsonnet
+++ b/jsonnet/kube-prometheus/components/grafana.libsonnet
@@ -1,3 +1,5 @@
+local kubernetesGrafana = import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet';
+
 local defaults = {
   local defaults = self,
   name: 'grafana',
@@ -20,88 +22,35 @@ local defaults = {
     if !std.setMember(labelName, ['app.kubernetes.io/version'])
   },
   prometheusName: error 'must provide prometheus name',
-  dashboards: {},
-  // TODO(paulfantom): expose those to have a stable API. After kubernetes-grafana refactor those could probably be removed.
-  rawDashboards: {},
-  folderDashboards: {},
-  containers: [],
-  datasources: [],
-  config: {},
-  ldap: null,
-  plugins: [],
-  env: [],
 };
 
-function(params) {
-  local g = self,
-  _config:: defaults + params,
+function(params)
+  local config = defaults + params;
   // Safety check
-  assert std.isObject(g._config.resources),
+  assert std.isObject(config.resources);
 
-  local glib = (import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') + {
-    _config+:: {
-      namespace: g._config.namespace,
-      versions+:: {
-        grafana: g._config.version,
-      },
-      imageRepos+:: {
-        grafana: std.split(g._config.image, ':')[0],
-      },
-      prometheus+:: {
-        name: g._config.prometheusName,
-      },
-      grafana+:: {
-        labels: g._config.commonLabels,
-        dashboards: g._config.dashboards,
-        resources: g._config.resources,
-        rawDashboards: g._config.rawDashboards,
-        folderDashboards: g._config.folderDashboards,
-        containers: g._config.containers,
-        config+: g._config.config,
-        ldap: g._config.ldap,
-        plugins+: g._config.plugins,
-        env: g._config.env,
-      } + (
-        // Conditionally overwrite default setting.
-        if std.length(g._config.datasources) > 0 then
-          { datasources: g._config.datasources }
-        else {}
-      ),
-    },
-  },
+  kubernetesGrafana(config) {
+    local g = self,
+    _config+:: config,
 
-  config: glib.grafana.config,
-  service: glib.grafana.service,
-  serviceAccount: glib.grafana.serviceAccount,
-  deployment: glib.grafana.deployment,
-  dashboardDatasources: glib.grafana.dashboardDatasources,
-  dashboardSources: glib.grafana.dashboardSources,
-
-  dashboardDefinitions: if std.length(g._config.dashboards) > 0 ||
-                           std.length(g._config.rawDashboards) > 0 ||
-                           std.length(g._config.folderDashboards) > 0 then {
-    apiVersion: 'v1',
-    kind: 'ConfigMapList',
-    items: glib.grafana.dashboardDefinitions,
-  },
-  serviceMonitor: {
-    apiVersion: 'monitoring.coreos.com/v1',
-    kind: 'ServiceMonitor',
-    metadata: {
-      name: 'grafana',
-      namespace: g._config.namespace,
-      labels: g._config.commonLabels,
-    },
-    spec: {
-      selector: {
-        matchLabels: {
-          'app.kubernetes.io/name': 'grafana',
+    serviceMonitor: {
+      apiVersion: 'monitoring.coreos.com/v1',
+      kind: 'ServiceMonitor',
+      metadata: {
+        name: 'grafana',
+        namespace: g._config.namespace,
+        labels: g._config.commonLabels,
+      },
+      spec: {
+        selector: {
+          matchLabels: {
+            'app.kubernetes.io/name': 'grafana',
+          },
         },
+        endpoints: [{
+          port: 'http',
+          interval: '15s',
+        }],
       },
-      endpoints: [{
-        port: 'http',
-        interval: '15s',
-      }],
     },
-  },
-}
+  }
diff --git a/jsonnet/kube-prometheus/main.libsonnet b/jsonnet/kube-prometheus/main.libsonnet
index 877619b25c6895b847c77a8a1e4c56df4b76f88e..cccc7933df137ca8ba989a112b0be6ada1dea89d 100644
--- a/jsonnet/kube-prometheus/main.libsonnet
+++ b/jsonnet/kube-prometheus/main.libsonnet
@@ -39,7 +39,7 @@ local utils = import './lib/utils.libsonnet';
       images: {
         alertmanager: 'quay.io/prometheus/alertmanager:v' + $.values.common.versions.alertmanager,
         blackboxExporter: 'quay.io/prometheus/blackbox-exporter:v' + $.values.common.versions.blackboxExporter,
-        grafana: 'grafana/grafana:v' + $.values.common.versions.grafana,
+        grafana: 'grafana/grafana:' + $.values.common.versions.grafana,
         kubeStateMetrics: 'k8s.gcr.io/kube-state-metrics/kube-state-metrics:v' + $.values.common.versions.kubeStateMetrics,
         nodeExporter: 'quay.io/prometheus/node-exporter:v' + $.values.common.versions.nodeExporter,
         prometheus: 'quay.io/prometheus/prometheus:v' + $.values.common.versions.prometheus,
diff --git a/jsonnetfile.lock.json b/jsonnetfile.lock.json
index 04bbfc78e4fac62104cb9141db477638dde4b85e..e4b457a66d1eb821a3dcda37242e9d8f47ffb1b5 100644
--- a/jsonnetfile.lock.json
+++ b/jsonnetfile.lock.json
@@ -8,8 +8,8 @@
           "subdir": "grafana"
         }
       },
-      "version": "c3b14b24b83cfe9abf1064649d19e2d679f033fb",
-      "sum": "YrE4DNQsWgYWs6h0j/FjQETt8xDXdYdsslb1WK7xQEk="
+      "version": "199e363523104ff8b3a12483a4e3eca86372b078",
+      "sum": "/jDHzVAjHB4AOLkJHw1GyATX5ogZ1iMdcJXZAgaG3+g="
     },
     {
       "source": {
@@ -18,8 +18,8 @@
           "subdir": "contrib/mixin"
         }
       },
-      "version": "c72947d87fce5d2b49a5494b5bb484573bd7eb11",
-      "sum": "IF9N4i2Zgl4vm3ZHe3MDptcqLswNESKy9NMz9av8Im0="
+      "version": "38a7d79810bd273bd078bf0931480b743afee003",
+      "sum": "drRRtMPhvpUZ8v7Weqz7Cg2pwDA2cSb6X1pjBPoCx1w="
     },
     {
       "source": {
@@ -38,7 +38,7 @@
           "subdir": "grafana-builder"
         }
       },
-      "version": "2ed138b205717af721af57b572bc7cd63bda62fd",
+      "version": "87b6b50706dfa57b2470470422770f8e7574b7db",
       "sum": "U34Nd1ViO2LZ3D8IzygPPRfUcy6zOgCnTMVHZ+9O/QE="
     },
     {
@@ -48,8 +48,8 @@
           "subdir": ""
         }
       },
-      "version": "06d00e40b43e4e618afbebe8e453b5650c659015",
-      "sum": "oT6Vw714HjoFtnay2WFzzRk/TP2McDaYIEHI2GqNuWY="
+      "version": "8dc2c0d69f762d943c5bfbdcc17645e346d610ca",
+      "sum": "TamniMXp0Jy6E5OMOYtcrTJ1P+rFTVNuiOZSkxvckb8="
     },
     {
       "source": {
@@ -58,7 +58,7 @@
           "subdir": "lib/promgrafonnet"
         }
       },
-      "version": "06d00e40b43e4e618afbebe8e453b5650c659015",
+      "version": "8dc2c0d69f762d943c5bfbdcc17645e346d610ca",
       "sum": "zv7hXGui6BfHzE9wPatHI/AGZa4A2WKo6pq7ZdqBsps="
     },
     {
@@ -68,7 +68,7 @@
           "subdir": "jsonnet/kube-state-metrics"
         }
       },
-      "version": "1e9d07bfe1509b04f6f5183c4635da2a88d14cbd",
+      "version": "b730cb415234509e6a1425c79e826f2e7688d27b",
       "sum": "U1wzIpTAtOvC1yj43Y8PfvT0JfvnAcMfNH12Wi+ab0Y="
     },
     {
@@ -78,7 +78,7 @@
           "subdir": "jsonnet/kube-state-metrics-mixin"
         }
       },
-      "version": "1e9d07bfe1509b04f6f5183c4635da2a88d14cbd",
+      "version": "b730cb415234509e6a1425c79e826f2e7688d27b",
       "sum": "u8gaydJoxEjzizQ8jY8xSjYgWooPmxw+wIWdDxifMAk="
     },
     {
@@ -88,7 +88,7 @@
           "subdir": "jsonnet/mixin"
         }
       },
-      "version": "0a38647379a5e93f639bf8e634deabcc32e01fb6",
+      "version": "f710e9d66a09efdb8edc144af555718b7d7ed2e3",
       "sum": "qZ4WgiweaE6eeKtFK60QUjLO8sf2L9Q8fgafWvDcyfY=",
       "name": "prometheus-operator-mixin"
     },
@@ -99,7 +99,7 @@
           "subdir": "jsonnet/prometheus-operator"
         }
       },
-      "version": "0a38647379a5e93f639bf8e634deabcc32e01fb6",
+      "version": "f710e9d66a09efdb8edc144af555718b7d7ed2e3",
       "sum": "4e3A/CccaxvLdWFPKJlC/P9RbPhSX6cH/Nj8+N1DBzg="
     },
     {
@@ -109,7 +109,7 @@
           "subdir": "doc/alertmanager-mixin"
         }
       },
-      "version": "523c932859a8b0e4df597bd3f7b1cec6ec9ee246",
+      "version": "1b8afe7cb5aafe59442e35979ec57401145ea26b",
       "sum": "pep+dHzfIjh2SU5pEkwilMCAT/NoL6YYflV4x8cr7vU=",
       "name": "alertmanager"
     },
@@ -120,8 +120,8 @@
           "subdir": "docs/node-mixin"
         }
       },
-      "version": "5a38949451fb3f817e0b1f58a04e03b983f1f8a3",
-      "sum": "EQTMeoaso8sKLp+d/ylp5wQue4yAjZJjD0Oz7Iq41tk="
+      "version": "a59b2d89903229db0019f73200ec209758f2fd26",
+      "sum": "Yr1xB+EEdBYRbsCtl4MDvx6phDg3UoMQtfpWADHyeGk="
     },
     {
       "source": {
@@ -130,7 +130,7 @@
           "subdir": "documentation/prometheus-mixin"
         }
       },
-      "version": "60d099088692b6b5bf4b8f4e13f76bd3921da99e",
+      "version": "c092a74be9cc3e8e3db41efe3136128cef6c1add",
       "sum": "m4VHwft4fUcxzL4+52lLZG/V5aH5ZEdjaweb88vISL0=",
       "name": "prometheus"
     },
@@ -141,7 +141,7 @@
           "subdir": "mixin"
         }
       },
-      "version": "fa476b5f6f4d7015a53bcdb6f0a70ec2a1ac3bb2",
+      "version": "d2d53e575b489a8cbfc9e1723d0e3f62a68faf39",
       "sum": "Og+wEHfgzXBvBLAeeQvGNoiCw3FY4LQHlJdpsG/owj8=",
       "name": "thanos-mixin"
     },
diff --git a/manifests/grafana-dashboardDefinitions.yaml b/manifests/grafana-dashboardDefinitions.yaml
index 05aaa241e083cb87c795b863131125feae28f0ed..ee1ce6768fe097c2a980579e2dcc08380b39d114 100644
--- a/manifests/grafana-dashboardDefinitions.yaml
+++ b/manifests/grafana-dashboardDefinitions.yaml
@@ -2252,7 +2252,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(apiserver_request_total, cluster)",
+                      "query": "label_values(up{job=\"apiserver\"}, cluster)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -2278,7 +2278,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(apiserver_request_total{job=\"apiserver\", cluster=\"$cluster\"}, instance)",
+                      "query": "label_values(up{job=\"apiserver\", cluster=\"$cluster\"}, instance)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -11034,7 +11034,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info, cluster)",
+                      "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -11061,7 +11061,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)",
+                      "query": "label_values(kube_namespace_created{cluster=\"$cluster\"}, namespace)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -12001,7 +12001,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info, cluster)",
+                      "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -12028,7 +12028,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, node)",
+                      "query": "label_values(up{job=\"kube-state-metrics\", cluster=\"$cluster\"}, node)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -14390,7 +14390,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info, cluster)",
+                      "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -14417,7 +14417,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)",
+                      "query": "label_values(kube_namespace_created{cluster=\"$cluster\"}, namespace)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -16338,7 +16338,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info, cluster)",
+                      "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -16365,7 +16365,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)",
+                      "query": "label_values(kube_namespace_created{cluster=\"$cluster\"}, namespace)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -18500,7 +18500,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info, cluster)",
+                      "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -20796,13 +20796,13 @@ items:
                       "datasource": "$datasource",
                       "hide": 0,
                       "includeAll": true,
-                      "label": null,
+                      "label": "Data Source",
                       "multi": false,
                       "name": "instance",
                       "options": [
 
                       ],
-                      "query": "label_values(kubelet_runtime_operations_total{cluster=\"$cluster\", job=\"kubelet\", metrics_path=\"/metrics\"}, instance)",
+                      "query": "label_values(up{job=\"kubelet\", metrics_path=\"/metrics\",cluster=\"$cluster\"}, instance)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -25008,7 +25008,7 @@ items:
                           "value": "Prometheus"
                       },
                       "hide": 0,
-                      "label": null,
+                      "label": "Data Source",
                       "name": "datasource",
                       "options": [
 
@@ -26060,7 +26060,7 @@ items:
                           "value": "Prometheus"
                       },
                       "hide": 0,
-                      "label": null,
+                      "label": "Data Source",
                       "name": "datasource",
                       "options": [
 
@@ -27067,7 +27067,7 @@ items:
                           "value": "Prometheus"
                       },
                       "hide": 0,
-                      "label": null,
+                      "label": "Data Source",
                       "name": "datasource",
                       "options": [
 
@@ -27580,7 +27580,7 @@ items:
                           "value": "default"
                       },
                       "hide": 0,
-                      "label": null,
+                      "label": "Data Source",
                       "name": "datasource",
                       "options": [
 
@@ -32976,7 +32976,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kube_pod_info, cluster)",
+                      "query": "label_values(up{job=\"kube-proxy\"}, cluster)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -33002,7 +33002,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(kubeproxy_network_programming_duration_seconds_bucket{cluster=\"$cluster\", job=\"kube-proxy\"}, instance)",
+                      "query": "label_values(up{job=\"kube-proxy\", cluster=\"$cluster\", job=\"kube-proxy\"}, instance)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
@@ -34091,7 +34091,7 @@ items:
                       "options": [
 
                       ],
-                      "query": "label_values(process_cpu_seconds_total{cluster=\"$cluster\", job=\"kube-scheduler\"}, instance)",
+                      "query": "label_values(up{job=\"kube-scheduler\", cluster=\"$cluster\"}, instance)",
                       "refresh": 2,
                       "regex": "",
                       "sort": 1,
diff --git a/manifests/grafana-serviceAccount.yaml b/manifests/grafana-serviceAccount.yaml
index 3ed3e031e7445fc347e27f8f7134d70c384f0be3..79bcbeab150c49309756ce015207e591bee30d3d 100644
--- a/manifests/grafana-serviceAccount.yaml
+++ b/manifests/grafana-serviceAccount.yaml
@@ -1,5 +1,10 @@
 apiVersion: v1
 kind: ServiceAccount
 metadata:
+  labels:
+    app.kubernetes.io/component: grafana
+    app.kubernetes.io/name: grafana
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: 8.2.1
   name: grafana
   namespace: monitoring