Skip to content
Snippets Groups Projects
Unverified Commit 86d4571a authored by paulfantom's avatar paulfantom
Browse files

jsonnet: remove grafana global state

parent e556dbfd
No related branches found
No related tags found
No related merge requests found
local defaults = {
local defaults = self,
name: 'grafana',
namespace: error 'must provide namespace',
version: error 'must provide version',
// image: error 'must provide image',
imageRepos: 'grafana/grafana',
resources: {
requests: { cpu: '100m', memory: '100Mi' },
limits: { cpu: '200m', memory: '200Mi' },
},
commonLabels:: {
'app.kubernetes.io/name': defaults.name,
'app.kubernetes.io/version': defaults.version,
'app.kubernetes.io/component': 'grafana',
'app.kubernetes.io/part-of': 'kube-prometheus',
},
selectorLabels:: {
[labelName]: defaults.commonLabels[labelName]
for labelName in std.objectFields(defaults.commonLabels)
if !std.setMember(labelName, ['app.kubernetes.io/version'])
},
prometheusName: error 'must provide prometheus name',
dashboards: {},
};
function(params) {
local g = self,
config:: defaults + params,
//local g.config = defaults + params,
// Safety check
assert std.isObject(g.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: g.config.imageRepos,
},
prometheus+:: {
name: g.config.prometheusName,
},
grafana+:: {
labels: g.config.commonLabels,
dashboards: g.config.dashboards,
resources: g.config.resources,
},
},
},
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 then {
apiVersion: 'v1',
kind: 'ConfigMapList',
items: g.dashboardDefinitions,
},
serviceMonitor: {
apiVersion: 'monitoring.coreos.com/v1',
kind: 'ServiceMonitor',
metadata: {
name: 'grafana',
namespace: g.config.namespace,
labels: g.config.commonLabels,
},
spec: {
selector: {
matchLabels: {
app: 'grafana',
},
},
endpoints: [{
port: 'http',
interval: '15s',
}],
},
},
}
local alertmanager = import './alertmanager/alertmanager.libsonnet';
local blackboxExporter = import './blackbox-exporter/blackbox-exporter.libsonnet';
local customMixin = import './mixin/custom.libsonnet';
local grafana = import './grafana/grafana.libsonnet';
local kubeStateMetrics = import './kube-state-metrics/kube-state-metrics.libsonnet';
local kubernetesMixin = import './mixin/kubernetes.libsonnet';
local nodeExporter = import './node-exporter/node-exporter.libsonnet';
......@@ -9,8 +10,6 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
local prometheus = import './prometheus/prometheus.libsonnet';
local prometheusOperator = import './prometheus-operator/prometheus-operator.libsonnet';
(import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') +
{
alertmanager: alertmanager({
name: $._config.alertmanagerName,
......@@ -26,6 +25,13 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
version: '0.18.0',
image: 'quay.io/prometheus/blackbox-exporter:v0.18.0',
}),
grafana: grafana({
namespace: $._config.namespace,
version: '7.3.5',
image: 'grafana/grafana:v7.3.7',
dashboards: {},
prometheusName: $._config.prometheusName,
}),
kubeStateMetrics: kubeStateMetrics({
namespace: $._config.namespace,
version: '1.9.7',
......@@ -56,7 +62,7 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
namespace: $._config.namespace,
version: '0.8.2',
image: 'directxman12/k8s-prometheus-adapter:v0.8.2',
prometheusURL: 'http://prometheus-' + $._config.prometheus.name + '.' + $._config.namespace + '.svc.cluster.local:9090/',
prometheusURL: 'http://prometheus-' + $._config.prometheusName + '.' + $._config.namespace + '.svc.cluster.local:9090/',
}),
prometheusOperator: prometheusOperator({
namespace: $._config.namespace,
......@@ -90,36 +96,6 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
},
},
},
grafana+:: {
local dashboardDefinitions = super.dashboardDefinitions,
dashboardDefinitions: {
apiVersion: 'v1',
kind: 'ConfigMapList',
items: dashboardDefinitions,
},
serviceMonitor: {
apiVersion: 'monitoring.coreos.com/v1',
kind: 'ServiceMonitor',
metadata: {
name: 'grafana',
namespace: $._config.namespace,
labels: $._config.grafana.labels,
},
spec: {
selector: {
matchLabels: {
app: 'grafana',
},
},
endpoints: [{
port: 'http',
interval: '15s',
}],
},
},
},
} + {
_config+:: {
namespace: 'default',
......@@ -129,22 +105,5 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
role: 'alert-rules',
prometheus: $._config.prometheusName,
},
versions+:: { grafana: '7.3.5' },
grafana+:: {
labels: {
'app.kubernetes.io/name': 'grafana',
'app.kubernetes.io/version': $._config.versions.grafana,
'app.kubernetes.io/component': 'grafana',
'app.kubernetes.io/part-of': 'kube-prometheus',
},
// FIXME(paulfantom): Same as with rules and alerts.
// This should be gathering all dashboards from components without having to enumerate all dashboards.
dashboards: {},
//$.mixins.nodeExporter.grafanaDashboards +
//$.mixins.kubernetes.grafanaDashboards,
//$.mixins.prometheus.grafanaDashboards,
},
},
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment