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

jsonnet: helmize :)


Signed-off-by: default avatarpaulfantom <pawel@krupa.net.pl>
parent 5624c5a9
No related branches found
No related tags found
No related merge requests found
...@@ -9,8 +9,10 @@ local kp = ...@@ -9,8 +9,10 @@ local kp =
// (import 'kube-prometheus/kube-prometheus-custom-metrics.libsonnet') + // (import 'kube-prometheus/kube-prometheus-custom-metrics.libsonnet') +
// (import 'kube-prometheus/kube-prometheus-external-metrics.libsonnet') + // (import 'kube-prometheus/kube-prometheus-external-metrics.libsonnet') +
{ {
_config+:: { values+:: {
namespace: 'monitoring', common+: {
namespace: 'monitoring',
},
}, },
}; };
......
local kp = local kp =
(import 'kube-prometheus/kube-prometheus.libsonnet') + { (import 'kube-prometheus/kube-prometheus.libsonnet') + {
_config+:: { values+:: {
namespace: 'monitoring', common+: {
namespace: 'monitoring',
},
}, },
}; };
local manifests = local manifests =
// Uncomment line below to enable vertical auto scaling of kube-state-metrics // Uncomment line below to enable vertical auto scaling of kube-state-metrics
//{ ['ksm-autoscaler-' + name]: kp.ksmAutoscaler[name] for name in std.objectFields(kp.ksmAutoscaler) } + //{ ['ksm-autoscaler-' + name]: kp.ksmAutoscaler[name] for name in std.objectFields(kp.ksmAutoscaler) } +
{ ['setup/0namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + { 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +
{ {
['setup/prometheus-operator-' + name]: kp.prometheusOperator[name] ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]
for name in std.filter((function(name) name != 'serviceMonitor'), std.objectFields(kp.prometheusOperator)) for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))
} + } +
// serviceMonitor is separated so that it can be created after the CRDs are ready // serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready
{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } + { 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +
{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +
{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +
{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } + { ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }; { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +
{ ['kubernetes-' + name]: kp.kubernetesMixin[name] for name in std.objectFields(kp.kubernetesMixin) };
local kustomizationResourceFile(name) = './manifests/' + name + '.yaml'; local kustomizationResourceFile(name) = './manifests/' + name + '.yaml';
local kustomization = { local kustomization = {
......
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 grafana = import './grafana/grafana.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 customMixin = import './mixin/custom.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';
local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libsonnet'; local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libsonnet';
local prometheusOperator = import './prometheus-operator/prometheus-operator.libsonnet'; local prometheusOperator = import './prometheus-operator/prometheus-operator.libsonnet';
local prometheus = import './prometheus/prometheus.libsonnet'; local prometheus = import './prometheus/prometheus.libsonnet';
local prometheusOperator = import './prometheus-operator/prometheus-operator.libsonnet';
{ {
local all = self, // using `values` as this is similar to helm
alertmanager: alertmanager({ values:: {
name: $._config.alertmanagerName, common: {
namespace: $._config.namespace, namespace: 'default',
version: '0.21.0', ruleLabels: {
image: 'quay.io/prometheus/alertmanager:v0.21.0', role: 'alert-rules',
mixin+: { prometheus: $.values.prometheus.name,
ruleLabels: $._config.ruleLabels, },
}, },
}), alertmanager: {
blackboxExporter: blackboxExporter({ name: 'main',
namespace: $._config.namespace, namespace: $.values.common.namespace,
version: '0.18.0', version: '0.21.0',
image: 'quay.io/prometheus/blackbox-exporter:v0.18.0', image: 'quay.io/prometheus/alertmanager:v0.21.0',
}), mixin+: {
// TODO(paulfantom) This should be done by iterating over all objects and looking for object.mixin.grafanaDashboards ruleLabels: $.values.common.ruleLabels,
local allDashboards = $.nodeExporter.mixin.grafanaDashboards + },
$.prometheus.mixin.grafanaDashboards + },
$.kubernetesMixin.mixin.grafanaDashboards, blackboxExporter: {
grafana: grafana({ namespace: $.values.common.namespace,
namespace: $._config.namespace, version: '0.18.0',
version: '7.3.5', image: 'quay.io/prometheus/blackbox-exporter:v0.18.0',
image: 'grafana/grafana:v7.3.7',
prometheusName: $._config.prometheusName,
dashboards: allDashboards,
}),
kubeStateMetrics: kubeStateMetrics({
namespace: $._config.namespace,
version: '1.9.7',
image: 'quay.io/coreos/kube-state-metrics:v1.9.7',
mixin+: {
ruleLabels: $._config.ruleLabels,
}, },
}), grafana: {
nodeExporter: nodeExporter({ namespace: $.values.common.namespace,
namespace: $._config.namespace, version: '7.3.5',
version: '1.0.1', image: 'grafana/grafana:v7.3.7',
image: 'quay.io/prometheus/node-exporter:v1.0.1', prometheusName: $.values.prometheus.name,
mixin+: { // TODO(paulfantom) This should be done by iterating over all objects and looking for object.mixin.grafanaDashboards
ruleLabels: $._config.ruleLabels, dashboards: $.nodeExporter.mixin.grafanaDashboards + $.prometheus.mixin.grafanaDashboards + $.kubernetesMixin.mixin.grafanaDashboards,
}, },
}), kubeStateMetrics: {
prometheus: prometheus({ namespace: $.values.common.namespace,
namespace: $._config.namespace, version: '1.9.7',
version: '2.24.0', image: 'quay.io/coreos/kube-state-metrics:v1.9.7',
image: 'quay.io/prometheus/prometheus:v2.24.0', mixin+: { ruleLabels: $.values.common.ruleLabels },
name: $._config.prometheusName,
alertmanagerName: $._config.alertmanagerName,
mixin+: {
ruleLabels: $._config.ruleLabels,
}, },
}), nodeExporter: {
prometheusAdapter: prometheusAdapter({ namespace: $.values.common.namespace,
namespace: $._config.namespace, version: '1.0.1',
version: '0.8.2', image: 'quay.io/prometheus/node-exporter:v1.0.1',
image: 'directxman12/k8s-prometheus-adapter:v0.8.2', mixin+: { ruleLabels: $.values.common.ruleLabels },
prometheusURL: 'http://prometheus-' + $._config.prometheusName + '.' + $._config.namespace + '.svc.cluster.local:9090/',
}),
prometheusOperator: prometheusOperator({
namespace: $._config.namespace,
version: '0.45.0',
image: 'quay.io/prometheus-operator/prometheus-operator:v0.45.0',
configReloaderImage: 'quay.io/prometheus-operator/prometheus-config-reloader:v0.45.0',
commonLabels+: {
'app.kubernetes.io/part-of': 'kube-prometheus',
}, },
mixin+: { prometheus: {
ruleLabels: $._config.ruleLabels, namespace: $.values.common.namespace,
version: '2.24.0',
image: 'quay.io/prometheus/prometheus:v2.24.0',
name: 'k8s',
alertmanagerName: $.values.alertmanager.name,
mixin+: { ruleLabels: $.values.common.ruleLabels },
}, },
}), prometheusAdapter: {
kubernetesMixin: kubernetesMixin({ namespace: $.values.common.namespace,
namespace: $._config.namespace, version: '0.8.2',
mixin+: { image: 'directxman12/k8s-prometheus-adapter:v0.8.2',
ruleLabels: $._config.ruleLabels, prometheusURL: 'http://prometheus-' + $.values.prometheus.name + '.' + $.values.common.namespace + '.svc.cluster.local:9090/',
}, },
}), prometheusOperator: {
kubePrometheus: customMixin({ namespace: $.values.common.namespace,
namespace: $._config.namespace, version: '0.45.0',
mixin+: { image: 'quay.io/prometheus-operator/prometheus-operator:v0.45.0',
ruleLabels: $._config.ruleLabels, configReloaderImage: 'quay.io/prometheus-operator/prometheus-config-reloader:v0.45.0',
commonLabels+: {
'app.kubernetes.io/part-of': 'kube-prometheus',
},
mixin+: { ruleLabels: $.values.common.ruleLabels },
}, },
}) + { kubernetesMixin: {
namespace: $.values.common.namespace,
mixin+: { ruleLabels: $.values.common.ruleLabels },
},
kubePrometheus: {
namespace: $.values.common.namespace,
mixin+: { ruleLabels: $.values.common.ruleLabels },
},
},
alertmanager: alertmanager($.values.alertmanager),
blackboxExporter: blackboxExporter($.values.blackboxExporter),
grafana: grafana($.values.grafana),
kubeStateMetrics: kubeStateMetrics($.values.kubeStateMetrics),
nodeExporter: nodeExporter($.values.nodeExporter),
prometheus: prometheus($.values.prometheus),
prometheusAdapter: prometheusAdapter($.values.prometheusAdapter),
prometheusOperator: prometheusOperator($.values.prometheusOperator),
kubernetesMixin: kubernetesMixin($.values.kubernetesMixin),
kubePrometheus: customMixin($.values.kubePrometheus) + {
namespace: { namespace: {
apiVersion: 'v1', apiVersion: 'v1',
kind: 'Namespace', kind: 'Namespace',
metadata: { metadata: {
name: $._config.namespace, name: $.values.kubePrometheus.namespace,
}, },
}, },
}, },
} + { }
_config+:: {
namespace: 'default',
prometheusName: 'k8s',
alertmanagerName: 'main',
ruleLabels: {
role: 'alert-rules',
prometheus: $._config.prometheusName,
},
},
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment