Skip to content
Snippets Groups Projects
Commit ade451bf authored by paulfantom's avatar paulfantom
Browse files

jsonnet: refactor grafana component to include new kubernetes-grafana library

parent ba20f92a
No related branches found
No related tags found
No related merge requests found
local kubernetesGrafana = import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet';
local defaults = { local defaults = {
local defaults = self, local defaults = self,
name: 'grafana', name: 'grafana',
...@@ -20,88 +22,35 @@ local defaults = { ...@@ -20,88 +22,35 @@ local defaults = {
if !std.setMember(labelName, ['app.kubernetes.io/version']) if !std.setMember(labelName, ['app.kubernetes.io/version'])
}, },
prometheusName: error 'must provide prometheus name', 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) { function(params)
local g = self, local config = defaults + params;
_config:: defaults + params,
// Safety check // Safety check
assert std.isObject(g._config.resources), assert std.isObject(config.resources);
local glib = (import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') + { kubernetesGrafana(config) {
_config+:: { local g = self,
namespace: g._config.namespace, _config+:: config,
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 {}
),
},
},
config: glib.grafana.config, serviceMonitor: {
service: glib.grafana.service, apiVersion: 'monitoring.coreos.com/v1',
serviceAccount: glib.grafana.serviceAccount, kind: 'ServiceMonitor',
deployment: glib.grafana.deployment, metadata: {
dashboardDatasources: glib.grafana.dashboardDatasources, name: 'grafana',
dashboardSources: glib.grafana.dashboardSources, namespace: g._config.namespace,
labels: g._config.commonLabels,
dashboardDefinitions: if std.length(g._config.dashboards) > 0 || },
std.length(g._config.rawDashboards) > 0 || spec: {
std.length(g._config.folderDashboards) > 0 then { selector: {
apiVersion: 'v1', matchLabels: {
kind: 'ConfigMapList', 'app.kubernetes.io/name': 'grafana',
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',
}, },
endpoints: [{
port: 'http',
interval: '15s',
}],
}, },
endpoints: [{
port: 'http',
interval: '15s',
}],
}, },
}, }
}
...@@ -39,7 +39,7 @@ local utils = import './lib/utils.libsonnet'; ...@@ -39,7 +39,7 @@ local utils = import './lib/utils.libsonnet';
images: { images: {
alertmanager: 'quay.io/prometheus/alertmanager:v' + $.values.common.versions.alertmanager, alertmanager: 'quay.io/prometheus/alertmanager:v' + $.values.common.versions.alertmanager,
blackboxExporter: 'quay.io/prometheus/blackbox-exporter:v' + $.values.common.versions.blackboxExporter, 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, 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, nodeExporter: 'quay.io/prometheus/node-exporter:v' + $.values.common.versions.nodeExporter,
prometheus: 'quay.io/prometheus/prometheus:v' + $.values.common.versions.prometheus, prometheus: 'quay.io/prometheus/prometheus:v' + $.values.common.versions.prometheus,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment