Skip to content

Commit 3aebcf7

Browse files
committed
fix: syntax errors in kube-state-metrics.libsonnet
Previously customizing kube-prometheus [1] failed with the following error. ❯ ./build.sh example.jsonnet + set -o pipefail + rm -rf manifests + mkdir -p manifests/setup + jsonnet -J vendor -m manifests example.jsonnet + xargs '-I{}' sh -c 'cat {} | gojsontoyaml > {}.yaml' -- '{}' RUNTIME ERROR: vendor/github.com/kubernetes/kube-state-metrics/jsonnet/kube-state-metrics/kube-state-metrics.libsonnet:392:21-22 Expected token OPERATOR but got "{" vendor/kube-prometheus/components/kube-state-metrics.libsonnet:51:19-124 function <anonymous> vendor/kube-prometheus/main.libsonnet:136:21-64 object <anonymous> vendor/kube-prometheus/platforms/platforms.libsonnet:37:22-40 +: example.jsonnet:33:90-109 thunk from <$> <std>:1539:24-25 thunk from <function <anonymous>> <std>:1539:5-33 function <anonymous> example.jsonnet:33:73-110 $ example.jsonnet:33:1-112 example.jsonnet:33:1-112 During evaluation With this patch, the build succeeds: ❯ bash build.sh example.jsonnet ; echo $? + set -o pipefail + rm -rf manifests + mkdir -p manifests/setup + jsonnet -J vendor -m manifests example.jsonnet + xargs '-I{}' sh -c 'cat {} | gojsontoyaml > {}.yaml' -- '{}' + find manifests -type f '!' -name '*.yaml' -delete + rm -f kustomization 0 [1]: https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/customizing.md
1 parent 45b5a26 commit 3aebcf7

File tree

3 files changed

+43
-42
lines changed

3 files changed

+43
-42
lines changed

examples/daemonsetsharding/deployment-no-node-pods-service.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ metadata:
44
labels:
55
app.kubernetes.io/component: exporter
66
app.kubernetes.io/name: kube-state-metrics-no-node-pods
7-
app.kubernetes.io/version: 2.12.0
7+
app.kubernetes.io/version: 2.13.0
88
name: kube-state-metrics-no-node-pods
99
namespace: kube-system
1010
spec:

examples/daemonsetsharding/deployment-no-node-pods.yaml

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@ kind: Deployment
33
metadata:
44
labels:
55
app.kubernetes.io/component: exporter
6-
app.kubernetes.io/name: kube-state-metrics-no-node-pods
6+
app.kubernetes.io/name: kube-state-metrics-unscheduled-pods-fetching
77
app.kubernetes.io/version: 2.13.0
8-
name: kube-state-metrics-no-node-pods
8+
name: kube-state-metrics-unscheduled-pods-fetching
99
namespace: kube-system
1010
spec:
1111
replicas: 1
1212
selector:
1313
matchLabels:
14-
app.kubernetes.io/name: kube-state-metrics-no-node-pods
14+
app.kubernetes.io/name: kube-state-metrics-unscheduled-pods-fetching
1515
template:
1616
metadata:
1717
labels:
1818
app.kubernetes.io/component: exporter
19-
app.kubernetes.io/name: kube-state-metrics-no-node-pods
19+
app.kubernetes.io/name: kube-state-metrics-unscheduled-pods-fetching
2020
app.kubernetes.io/version: 2.13.0
2121
spec:
2222
automountServiceAccountToken: true
@@ -31,7 +31,7 @@ spec:
3131
port: http-metrics
3232
initialDelaySeconds: 5
3333
timeoutSeconds: 5
34-
name: kube-state-metrics-no-node-pods
34+
name: kube-state-metrics-unscheduled-pods-fetching
3535
ports:
3636
- containerPort: 8080
3737
name: http-metrics

jsonnet/kube-state-metrics/kube-state-metrics.libsonnet

+37-36
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
{
32
local ksm = self,
43
name:: error 'must set namespace',
@@ -164,7 +163,7 @@
164163
],
165164
verbs: ['list', 'watch'],
166165
},
167-
];
166+
];
168167

169168
{
170169
apiVersion: 'rbac.authorization.k8s.io/v1',
@@ -192,11 +191,11 @@
192191
seccompProfile: { type: 'RuntimeDefault' },
193192
},
194193
livenessProbe: { timeoutSeconds: 5, initialDelaySeconds: 5, httpGet: {
195-
port: "http-metrics",
194+
port: 'http-metrics',
196195
path: '/livez',
197196
} },
198197
readinessProbe: { timeoutSeconds: 5, initialDelaySeconds: 5, httpGet: {
199-
port: "telemetry",
198+
port: 'telemetry',
200199
path: '/readyz',
201200
} },
202201
};
@@ -344,24 +343,26 @@
344343
clusterRoleBinding: ksm.clusterRoleBinding,
345344
},
346345
daemonsetsharding:: {
347-
local shardksmname = ksm.name + "-shard",
348-
daemonsetService: std.mergePatch(ksm.service,
349-
{
350-
metadata: {
351-
name: shardksmname,
352-
labels: {'app.kubernetes.io/name': shardksmname}
353-
},
354-
spec: {selector: {'app.kubernetes.io/name': shardksmname}},
355-
}
356-
),
346+
local shardksmname = ksm.name + '-shard',
347+
daemonsetService: std.mergePatch(
348+
ksm.service,
349+
{
350+
metadata: {
351+
name: shardksmname,
352+
labels: { 'app.kubernetes.io/name': shardksmname },
353+
},
354+
spec: { selector: { 'app.kubernetes.io/name': shardksmname } },
355+
}
356+
),
357357
deployment:
358358
// extending the default container from above
359359
local c = ksm.deployment.spec.template.spec.containers[0] {
360360
args: [
361361
'--resources=certificatesigningrequests,configmaps,cronjobs,daemonsets,deployments,endpoints,horizontalpodautoscalers,ingresses,jobs,leases,limitranges,mutatingwebhookconfigurations,namespaces,networkpolicies,nodes,persistentvolumeclaims,persistentvolumes,poddisruptionbudgets,replicasets,replicationcontrollers,resourcequotas,secrets,services,statefulsets,storageclasses,validatingwebhookconfigurations,volumeattachments',
362362
],
363363
};
364-
std.mergePatch(ksm.deployment,
364+
std.mergePatch(
365+
ksm.deployment,
365366
{
366367
spec: {
367368
template: {
@@ -374,30 +375,31 @@
374375
),
375376

376377
deploymentNoNodePods:
378+
local shardksmname = ksm.name + '-unscheduled-pods-fetching';
377379
local c = ksm.deployment.spec.template.spec.containers[0] {
378380
args: [
379381
'--resources=pods',
380382
'--track-unscheduled-pods',
381383
],
382384
name: shardksmname,
383385
};
384-
local shardksmname = ksm.name + "-unscheduled-pods-fetching";
385-
std.mergePatch(ksm.deployment,
386+
std.mergePatch(
387+
ksm.deployment,
386388
{
387389
metadata: {
388390
name: shardksmname,
389-
labels: {'app.kubernetes.io/name': shardksmname}
391+
labels: { 'app.kubernetes.io/name': shardksmname },
390392
},
391393
spec: {
392-
selector{
393-
matchLabels: {app.kubernetes.io/name': shardksmname}
394-
}
394+
selector: {
395+
matchLabels: { 'app.kubernetes.io/name': shardksmname },
396+
},
395397
template: {
396398
metadata: {
397399
labels: {
398-
app.kubernetes.io/name': shardksmname
399-
}
400-
}
400+
'app.kubernetes.io/name': shardksmname,
401+
},
402+
},
401403
spec: {
402404
containers: [c],
403405
},
@@ -413,18 +415,19 @@
413415
'--track-unscheduled-pods',
414416
],
415417
};
416-
local shardksmname = ksm.name + "-no-node-pods";
417-
std.mergePatch(ksm.service,
418+
local shardksmname = ksm.name + '-no-node-pods';
419+
std.mergePatch(
420+
ksm.service,
418421
{
419422
metadata: {
420423
name: shardksmname,
421-
labels: {'app.kubernetes.io/name': shardksmname}
424+
labels: { 'app.kubernetes.io/name': shardksmname },
422425
},
423426
spec: {
424427
selector: {
425-
'app.kubernetes.io/name': shardksmname
426-
}
427-
}
428+
'app.kubernetes.io/name': shardksmname,
429+
},
430+
},
428431
}
429432
),
430433
daemonset:
@@ -439,18 +442,18 @@
439442
],
440443
};
441444

442-
local c = std.mergePatch(c0, {name: shardksmname});
445+
local c = std.mergePatch(c0, { name: shardksmname });
443446

444-
local ksmLabels = std.mergePatch(ksm.commonLabels + ksm.extraRecommendedLabels, {'app.kubernetes.io/name': shardksmname});
445-
local ksmPodLabels = std.mergePatch(ksm.podLabels, {'app.kubernetes.io/name': shardksmname});
447+
local ksmLabels = std.mergePatch(ksm.commonLabels + ksm.extraRecommendedLabels, { 'app.kubernetes.io/name': shardksmname });
448+
local ksmPodLabels = std.mergePatch(ksm.podLabels, { 'app.kubernetes.io/name': shardksmname });
446449

447450
{
448451
apiVersion: 'apps/v1',
449452
kind: 'DaemonSet',
450453
metadata: {
451454
namespace: ksm.namespace,
452455
labels: ksmLabels,
453-
name: shardksmname,
456+
name: shardksmname,
454457
},
455458
spec: {
456459
selector: { matchLabels: ksmPodLabels },
@@ -475,5 +478,3 @@
475478
clusterRoleBinding: ksm.clusterRoleBinding,
476479
},
477480
}
478-
479-

0 commit comments

Comments
 (0)