diff --git a/jsonnet/kube-prometheus/kube-prometheus.libsonnet b/jsonnet/kube-prometheus/kube-prometheus.libsonnet index 46deacc488056fd2da65b217d8af9cb2f27f4cf3..95ec582d2d424a5eae8e0f36d73dd985d34718fd 100644 --- a/jsonnet/kube-prometheus/kube-prometheus.libsonnet +++ b/jsonnet/kube-prometheus/kube-prometheus.libsonnet @@ -1,6 +1,3 @@ -local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet'; -local k3 = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.3/k.libsonnet'; -local configMapList = k3.core.v1.configMapList; local kubeRbacProxyContainer = import './kube-rbac-proxy/container.libsonnet'; (import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') + @@ -16,69 +13,83 @@ local kubeRbacProxyContainer = import './kube-rbac-proxy/container.libsonnet'; (import 'github.com/kubernetes-monitoring/kubernetes-mixin/mixin.libsonnet') + (import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') + (import './alerts/alerts.libsonnet') + -(import './rules/rules.libsonnet') + { +(import './rules/rules.libsonnet') + +{ kubePrometheus+:: { - namespace: k.core.v1.namespace.new($._config.namespace), - }, - prometheusOperator+:: { - service+: { - spec+: { - ports: [ - { - name: 'https', - port: 8443, - targetPort: 'https', - }, - ], + namespace: { + apiVersion: 'v1', + kind: 'Namespace', + metadata: { + name: $._config.namespace, }, }, - serviceMonitor+: { - spec+: { - endpoints: [ - { - port: 'https', - scheme: 'https', - honorLabels: true, - bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', - tlsConfig: { - insecureSkipVerify: true, + }, + prometheusOperator+:: + { + service+: { + spec+: { + ports: [ + { + name: 'https', + port: 8443, + targetPort: 'https', }, - }, - ] - }, - }, - clusterRole+: { - rules+: [ - { - apiGroups: ['authentication.k8s.io'], - resources: ['tokenreviews'], - verbs: ['create'], + ], }, - { - apiGroups: ['authorization.k8s.io'], - resources: ['subjectaccessreviews'], - verbs: ['create'], + }, + serviceMonitor+: { + spec+: { + endpoints: [ + { + port: 'https', + scheme: 'https', + honorLabels: true, + bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', + tlsConfig: { + insecureSkipVerify: true, + }, + }, + ], }, - ], - }, - } + - (kubeRbacProxyContainer { - config+:: { - kubeRbacProxy: { - local cfg = self, - image: $._config.imageRepos.kubeRbacProxy + ':' + $._config.versions.kubeRbacProxy, - name: 'kube-rbac-proxy', - securePortName: 'https', - securePort: 8443, - secureListenAddress: ':%d' % self.securePort, - upstream: 'http://127.0.0.1:8080/', - tlsCipherSuites: $._config.tlsCipherSuites, }, - }, - }).deploymentMixin, + clusterRole+: { + rules+: [ + { + apiGroups: ['authentication.k8s.io'], + resources: ['tokenreviews'], + verbs: ['create'], + }, + { + apiGroups: ['authorization.k8s.io'], + resources: ['subjectaccessreviews'], + verbs: ['create'], + }, + ], + }, + } + + (kubeRbacProxyContainer { + config+:: { + kubeRbacProxy: { + local cfg = self, + image: $._config.imageRepos.kubeRbacProxy + ':' + $._config.versions.kubeRbacProxy, + name: 'kube-rbac-proxy', + securePortName: 'https', + securePort: 8443, + secureListenAddress: ':%d' % self.securePort, + upstream: 'http://127.0.0.1:8080/', + tlsCipherSuites: $._config.tlsCipherSuites, + }, + }, + }).deploymentMixin, + grafana+:: { - dashboardDefinitions: configMapList.new(super.dashboardDefinitions), + local dashboardDefinitions = super.dashboardDefinitions, + dashboardDefinitions: { + apiVersion: 'v1', + kind: 'ConfigMapList', + items: dashboardDefinitions, + }, serviceMonitor: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', @@ -92,12 +103,10 @@ local kubeRbacProxyContainer = import './kube-rbac-proxy/container.libsonnet'; app: 'grafana', }, }, - endpoints: [ - { - port: 'http', - interval: '15s', - }, - ], + endpoints: [{ + port: 'http', + interval: '15s', + }], }, }, }, @@ -105,14 +114,8 @@ local kubeRbacProxyContainer = import './kube-rbac-proxy/container.libsonnet'; _config+:: { namespace: 'default', - versions+:: { - grafana: '7.1.0', - kubeRbacProxy: 'v0.8.0', - }, - - imageRepos+:: { - kubeRbacProxy: 'quay.io/brancz/kube-rbac-proxy', - }, + versions+:: { grafana: '7.1.0', kubeRbacProxy: 'v0.8.0' }, + imageRepos+:: { kubeRbacProxy: 'quay.io/brancz/kube-rbac-proxy' }, tlsCipherSuites: [ 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256', // required by h2: http://golang.org/cl/30721 @@ -191,13 +194,7 @@ local kubeRbacProxyContainer = import './kube-rbac-proxy/container.libsonnet'; limits: { cpu: '250m', memory: '180Mi' }, }, }, - prometheus+:: { - rules: $.prometheusRules + $.prometheusAlerts, - }, - - grafana+:: { - dashboards: $.grafanaDashboards, - }, - + prometheus+:: { rules: $.prometheusRules + $.prometheusAlerts }, + grafana+:: { dashboards: $.grafanaDashboards }, }, }