Skip to content

Commit 33b58ae

Browse files
authored
Merge pull request #1471 from paulfantom/metadata-management
jsonnet: unify metadata management
2 parents 151032c + 25d8bb0 commit 33b58ae

28 files changed

+206
-268
lines changed

jsonnet/kube-prometheus/components/alertmanager.libsonnet

+27-38
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ function(params) {
7777
// Safety check
7878
assert std.isObject(am._config.resources),
7979
assert std.isObject(am._config.mixin._config),
80+
_metadata:: {
81+
name: 'alertmanager-' + am._config.name,
82+
namespace: am._config.namespace,
83+
labels: am._config.commonLabels,
84+
},
8085

8186
mixin:: (import 'github.com/prometheus/alertmanager/doc/alertmanager-mixin/mixin.libsonnet') +
8287
(import 'github.com/kubernetes-monitoring/kubernetes-mixin/lib/add-runbook-links.libsonnet') {
@@ -86,10 +91,9 @@ function(params) {
8691
prometheusRule: {
8792
apiVersion: 'monitoring.coreos.com/v1',
8893
kind: 'PrometheusRule',
89-
metadata: {
90-
labels: am._config.commonLabels + am._config.mixin.ruleLabels,
91-
name: 'alertmanager-' + am._config.name + '-rules',
92-
namespace: am._config.namespace,
94+
metadata: am._metadata {
95+
labels+: am._config.mixin.ruleLabels,
96+
name: am._metadata.name + '-rules',
9397
},
9498
spec: {
9599
local r = if std.objectHasAll(am.mixin, 'prometheusRules') then am.mixin.prometheusRules.groups else [],
@@ -102,10 +106,8 @@ function(params) {
102106
apiVersion: 'v1',
103107
kind: 'Secret',
104108
type: 'Opaque',
105-
metadata: {
106-
name: 'alertmanager-' + am._config.name,
107-
namespace: am._config.namespace,
108-
labels: { alertmanager: am._config.name } + am._config.commonLabels,
109+
metadata: am._metadata {
110+
labels+: { alertmanager: am._config.name },
109111
},
110112
stringData: {
111113
'alertmanager.yaml': if std.type(am._config.config) == 'object'
@@ -119,46 +121,38 @@ function(params) {
119121
serviceAccount: {
120122
apiVersion: 'v1',
121123
kind: 'ServiceAccount',
122-
metadata: {
123-
name: 'alertmanager-' + am._config.name,
124-
namespace: am._config.namespace,
125-
labels: { alertmanager: am._config.name } + am._config.commonLabels,
124+
metadata: am._metadata {
125+
labels+: { alertmanager: am._config.name },
126126
},
127127
},
128128

129129
service: {
130130
apiVersion: 'v1',
131131
kind: 'Service',
132-
metadata: {
133-
name: 'alertmanager-' + am._config.name,
134-
namespace: am._config.namespace,
135-
labels: { alertmanager: am._config.name } + am._config.commonLabels,
132+
metadata: am._metadata {
133+
labels+: { alertmanager: am._config.name },
136134
},
137135
spec: {
138136
ports: [
139137
{ name: 'web', targetPort: 'web', port: 9093 },
140138
{ name: 'reloader-web', port: am._config.reloaderPort, targetPort: 'reloader-web' },
141139
],
142-
selector: {
140+
selector: am._config.selectorLabels {
143141
alertmanager: am._config.name,
144-
} + am._config.selectorLabels,
142+
},
145143
sessionAffinity: 'ClientIP',
146144
},
147145
},
148146

149147
serviceMonitor: {
150148
apiVersion: 'monitoring.coreos.com/v1',
151149
kind: 'ServiceMonitor',
152-
metadata: {
153-
name: 'alertmanager',
154-
namespace: am._config.namespace,
155-
labels: am._config.commonLabels,
156-
},
150+
metadata: am._metadata,
157151
spec: {
158152
selector: {
159-
matchLabels: {
153+
matchLabels: am._config.selectorLabels {
160154
alertmanager: am._config.name,
161-
} + am._config.selectorLabels,
155+
},
162156
},
163157
endpoints: [
164158
{ port: 'web', interval: '30s' },
@@ -170,41 +164,36 @@ function(params) {
170164
[if (defaults + params).replicas > 1 then 'podDisruptionBudget']: {
171165
apiVersion: 'policy/v1',
172166
kind: 'PodDisruptionBudget',
173-
metadata: {
174-
name: 'alertmanager-' + am._config.name,
175-
namespace: am._config.namespace,
176-
labels: am._config.commonLabels,
177-
},
167+
metadata: am._metadata,
178168
spec: {
179169
maxUnavailable: 1,
180170
selector: {
181-
matchLabels: {
171+
matchLabels: am._config.selectorLabels {
182172
alertmanager: am._config.name,
183-
} + am._config.selectorLabels,
173+
},
184174
},
185175
},
186176
},
187177

188178
alertmanager: {
189179
apiVersion: 'monitoring.coreos.com/v1',
190180
kind: 'Alertmanager',
191-
metadata: {
181+
metadata: am._metadata {
192182
name: am._config.name,
193-
namespace: am._config.namespace,
194-
labels: {
183+
labels+: {
195184
alertmanager: am._config.name,
196-
} + am._config.commonLabels,
185+
},
197186
},
198187
spec: {
199188
replicas: am._config.replicas,
200189
version: am._config.version,
201190
image: am._config.image,
202191
podMetadata: {
203-
labels: am._config.commonLabels,
192+
labels: am.alertmanager.metadata.labels,
204193
},
205194
resources: am._config.resources,
206195
nodeSelector: { 'kubernetes.io/os': 'linux' },
207-
serviceAccountName: 'alertmanager-' + am._config.name,
196+
serviceAccountName: am.serviceAccount.metadata.name,
208197
securityContext: {
209198
runAsUser: 1000,
210199
runAsNonRoot: true,

jsonnet/kube-prometheus/components/blackbox-exporter.libsonnet

+30-43
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,17 @@ function(params) {
9292
_config:: defaults + params,
9393
// Safety check
9494
assert std.isObject(bb._config.resources),
95+
_metadata:: {
96+
name: 'blackbox-exporter',
97+
namespace: bb._config.namespace,
98+
labels: bb._config.commonLabels,
99+
},
95100

96101
configuration: {
97102
apiVersion: 'v1',
98103
kind: 'ConfigMap',
99-
metadata: {
104+
metadata: bb._metadata {
100105
name: 'blackbox-exporter-configuration',
101-
namespace: bb._config.namespace,
102-
labels: bb._config.commonLabels,
103106
},
104107
data: {
105108
'config.yml': std.manifestYamlDoc({ modules: bb._config.modules }),
@@ -109,10 +112,7 @@ function(params) {
109112
serviceAccount: {
110113
apiVersion: 'v1',
111114
kind: 'ServiceAccount',
112-
metadata: {
113-
name: 'blackbox-exporter',
114-
namespace: bb._config.namespace,
115-
},
115+
metadata: bb._metadata,
116116
},
117117

118118
clusterRole: {
@@ -138,9 +138,7 @@ function(params) {
138138
clusterRoleBinding: {
139139
apiVersion: 'rbac.authorization.k8s.io/v1',
140140
kind: 'ClusterRoleBinding',
141-
metadata: {
142-
name: 'blackbox-exporter',
143-
},
141+
metadata: bb._metadata,
144142
roleRef: {
145143
apiGroup: 'rbac.authorization.k8s.io',
146144
kind: 'ClusterRole',
@@ -212,14 +210,12 @@ function(params) {
212210
{
213211
apiVersion: 'apps/v1',
214212
kind: 'Deployment',
215-
metadata: {
216-
name: 'blackbox-exporter',
217-
namespace: bb._config.namespace,
218-
labels: bb._config.commonLabels,
219-
},
213+
metadata: bb._metadata,
220214
spec: {
221215
replicas: bb._config.replicas,
222-
selector: { matchLabels: bb._config.selectorLabels },
216+
selector: {
217+
matchLabels: bb._config.selectorLabels,
218+
},
223219
template: {
224220
metadata: {
225221
labels: bb._config.commonLabels,
@@ -243,11 +239,7 @@ function(params) {
243239
service: {
244240
apiVersion: 'v1',
245241
kind: 'Service',
246-
metadata: {
247-
name: 'blackbox-exporter',
248-
namespace: bb._config.namespace,
249-
labels: bb._config.commonLabels,
250-
},
242+
metadata: bb._metadata,
251243
spec: {
252244
ports: [{
253245
name: 'https',
@@ -262,29 +254,24 @@ function(params) {
262254
},
263255
},
264256

265-
serviceMonitor:
266-
{
267-
apiVersion: 'monitoring.coreos.com/v1',
268-
kind: 'ServiceMonitor',
269-
metadata: {
270-
name: 'blackbox-exporter',
271-
namespace: bb._config.namespace,
272-
labels: bb._config.commonLabels,
273-
},
274-
spec: {
275-
endpoints: [{
276-
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
277-
interval: '30s',
278-
path: '/metrics',
279-
port: 'https',
280-
scheme: 'https',
281-
tlsConfig: {
282-
insecureSkipVerify: true,
283-
},
284-
}],
285-
selector: {
286-
matchLabels: bb._config.selectorLabels,
257+
serviceMonitor: {
258+
apiVersion: 'monitoring.coreos.com/v1',
259+
kind: 'ServiceMonitor',
260+
metadata: bb._metadata,
261+
spec: {
262+
endpoints: [{
263+
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
264+
interval: '30s',
265+
path: '/metrics',
266+
port: 'https',
267+
scheme: 'https',
268+
tlsConfig: {
269+
insecureSkipVerify: true,
287270
},
271+
}],
272+
selector: {
273+
matchLabels: bb._config.selectorLabels,
288274
},
289275
},
276+
},
290277
}

jsonnet/kube-prometheus/components/grafana.libsonnet

+6-5
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,16 @@ function(params)
3232
kubernetesGrafana(config) {
3333
local g = self,
3434
_config+:: config,
35+
_metadata:: {
36+
name: 'grafana',
37+
namespace: g._config.namespace,
38+
labels: g._config.commonLabels,
39+
},
3540

3641
serviceMonitor: {
3742
apiVersion: 'monitoring.coreos.com/v1',
3843
kind: 'ServiceMonitor',
39-
metadata: {
40-
name: 'grafana',
41-
namespace: g._config.namespace,
42-
labels: g._config.commonLabels,
43-
},
44+
metadata: g._metadata,
4445
spec: {
4546
selector: {
4647
matchLabels: {

jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet

+18-23
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ local defaults = {
2828
function(params) {
2929
local k8s = self,
3030
_config:: defaults + params,
31+
_metadata:: {
32+
labels: k8s._config.commonLabels,
33+
namespace: k8s._config.namespace,
34+
},
3135

3236
mixin:: (import 'github.com/kubernetes-monitoring/kubernetes-mixin/mixin.libsonnet') {
3337
_config+:: k8s._config.mixin._config,
@@ -36,10 +40,9 @@ function(params) {
3640
prometheusRule: {
3741
apiVersion: 'monitoring.coreos.com/v1',
3842
kind: 'PrometheusRule',
39-
metadata: {
40-
labels: k8s._config.commonLabels + k8s._config.mixin.ruleLabels,
43+
metadata: k8s._metadata {
4144
name: 'kubernetes-monitoring-rules',
42-
namespace: k8s._config.namespace,
45+
labels+: k8s._config.mixin.ruleLabels,
4346
},
4447
spec: {
4548
local r = if std.objectHasAll(k8s.mixin, 'prometheusRules') then k8s.mixin.prometheusRules.groups else {},
@@ -51,10 +54,9 @@ function(params) {
5154
serviceMonitorKubeScheduler: {
5255
apiVersion: 'monitoring.coreos.com/v1',
5356
kind: 'ServiceMonitor',
54-
metadata: {
57+
metadata: k8s._metadata {
5558
name: 'kube-scheduler',
56-
namespace: k8s._config.namespace,
57-
labels: { 'app.kubernetes.io/name': 'kube-scheduler' },
59+
labels+: { 'app.kubernetes.io/name': 'kube-scheduler' },
5860
},
5961
spec: {
6062
jobLabel: 'app.kubernetes.io/name',
@@ -77,10 +79,9 @@ function(params) {
7779
serviceMonitorKubelet: {
7880
apiVersion: 'monitoring.coreos.com/v1',
7981
kind: 'ServiceMonitor',
80-
metadata: {
82+
metadata: k8s._metadata {
8183
name: 'kubelet',
82-
namespace: k8s._config.namespace,
83-
labels: { 'app.kubernetes.io/name': 'kubelet' },
84+
labels+: { 'app.kubernetes.io/name': 'kubelet' },
8485
},
8586
spec: {
8687
jobLabel: 'app.kubernetes.io/name',
@@ -172,10 +173,9 @@ function(params) {
172173
serviceMonitorKubeControllerManager: {
173174
apiVersion: 'monitoring.coreos.com/v1',
174175
kind: 'ServiceMonitor',
175-
metadata: {
176+
metadata: k8s._metadata {
176177
name: 'kube-controller-manager',
177-
namespace: k8s._config.namespace,
178-
labels: { 'app.kubernetes.io/name': 'kube-controller-manager' },
178+
labels+: { 'app.kubernetes.io/name': 'kube-controller-manager' },
179179
},
180180
spec: {
181181
jobLabel: 'app.kubernetes.io/name',
@@ -207,10 +207,9 @@ function(params) {
207207
serviceMonitorApiserver: {
208208
apiVersion: 'monitoring.coreos.com/v1',
209209
kind: 'ServiceMonitor',
210-
metadata: {
210+
metadata: k8s._metadata {
211211
name: 'kube-apiserver',
212-
namespace: k8s._config.namespace,
213-
labels: { 'app.kubernetes.io/name': 'apiserver' },
212+
labels+: { 'app.kubernetes.io/name': 'apiserver' },
214213
},
215214
spec: {
216215
jobLabel: 'component',
@@ -261,12 +260,9 @@ function(params) {
261260
[if (defaults + params).kubeProxy then 'podMonitorKubeProxy']: {
262261
apiVersion: 'monitoring.coreos.com/v1',
263262
kind: 'PodMonitor',
264-
metadata: {
265-
labels: {
266-
'k8s-app': 'kube-proxy',
267-
},
263+
metadata: k8s._metadata {
264+
labels+: { 'k8s-app': 'kube-proxy' },
268265
name: 'kube-proxy',
269-
namespace: k8s._config.namespace,
270266
},
271267
spec: {
272268
jobLabel: 'k8s-app',
@@ -300,10 +296,9 @@ function(params) {
300296
serviceMonitorCoreDNS: {
301297
apiVersion: 'monitoring.coreos.com/v1',
302298
kind: 'ServiceMonitor',
303-
metadata: {
299+
metadata: k8s._metadata {
304300
name: 'coredns',
305-
namespace: k8s._config.namespace,
306-
labels: { 'app.kubernetes.io/name': 'coredns' },
301+
labels+: { 'app.kubernetes.io/name': 'coredns' },
307302
},
308303
spec: {
309304
jobLabel: 'app.kubernetes.io/name',

0 commit comments

Comments
 (0)