From ade451bf04bac77b54fbb7eb1a8bd8d4a64abafc Mon Sep 17 00:00:00 2001 From: paulfantom <pawel@krupa.net.pl> Date: Wed, 20 Oct 2021 19:24:39 +0200 Subject: [PATCH] jsonnet: refactor grafana component to include new kubernetes-grafana library --- .../components/grafana.libsonnet | 103 +++++------------- jsonnet/kube-prometheus/main.libsonnet | 2 +- 2 files changed, 27 insertions(+), 78 deletions(-) diff --git a/jsonnet/kube-prometheus/components/grafana.libsonnet b/jsonnet/kube-prometheus/components/grafana.libsonnet index 9f18e4b0..e6879d4a 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 877619b2..cccc7933 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, -- GitLab