jsonnet: remove grafana global state
This commit is contained in:
85
jsonnet/kube-prometheus/grafana/grafana.libsonnet
Normal file
85
jsonnet/kube-prometheus/grafana/grafana.libsonnet
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
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',
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
local alertmanager = import './alertmanager/alertmanager.libsonnet';
|
local alertmanager = import './alertmanager/alertmanager.libsonnet';
|
||||||
local blackboxExporter = import './blackbox-exporter/blackbox-exporter.libsonnet';
|
local blackboxExporter = import './blackbox-exporter/blackbox-exporter.libsonnet';
|
||||||
local customMixin = import './mixin/custom.libsonnet';
|
local customMixin = import './mixin/custom.libsonnet';
|
||||||
|
local grafana = import './grafana/grafana.libsonnet';
|
||||||
local kubeStateMetrics = import './kube-state-metrics/kube-state-metrics.libsonnet';
|
local kubeStateMetrics = import './kube-state-metrics/kube-state-metrics.libsonnet';
|
||||||
local kubernetesMixin = import './mixin/kubernetes.libsonnet';
|
local kubernetesMixin = import './mixin/kubernetes.libsonnet';
|
||||||
local nodeExporter = import './node-exporter/node-exporter.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 prometheus = import './prometheus/prometheus.libsonnet';
|
||||||
local prometheusOperator = import './prometheus-operator/prometheus-operator.libsonnet';
|
local prometheusOperator = import './prometheus-operator/prometheus-operator.libsonnet';
|
||||||
|
|
||||||
|
|
||||||
(import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') +
|
|
||||||
{
|
{
|
||||||
alertmanager: alertmanager({
|
alertmanager: alertmanager({
|
||||||
name: $._config.alertmanagerName,
|
name: $._config.alertmanagerName,
|
||||||
@@ -26,6 +25,13 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
|
|||||||
version: '0.18.0',
|
version: '0.18.0',
|
||||||
image: 'quay.io/prometheus/blackbox-exporter:v0.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({
|
kubeStateMetrics: kubeStateMetrics({
|
||||||
namespace: $._config.namespace,
|
namespace: $._config.namespace,
|
||||||
version: '1.9.7',
|
version: '1.9.7',
|
||||||
@@ -56,7 +62,7 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
|
|||||||
namespace: $._config.namespace,
|
namespace: $._config.namespace,
|
||||||
version: '0.8.2',
|
version: '0.8.2',
|
||||||
image: 'directxman12/k8s-prometheus-adapter:v0.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({
|
prometheusOperator: prometheusOperator({
|
||||||
namespace: $._config.namespace,
|
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+:: {
|
_config+:: {
|
||||||
namespace: 'default',
|
namespace: 'default',
|
||||||
@@ -129,22 +105,5 @@ local prometheusOperator = import './prometheus-operator/prometheus-operator.lib
|
|||||||
role: 'alert-rules',
|
role: 'alert-rules',
|
||||||
prometheus: $._config.prometheusName,
|
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,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user