Skip to content

Commit 9c959ba

Browse files
committed
jsonnet: establish convention for components default fields
Signed-off-by: paulfantom <[email protected]>
1 parent 33b58ae commit 9c959ba

10 files changed

+98
-77
lines changed

jsonnet/kube-prometheus/components/alertmanager.libsonnet

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
local defaults = {
22
local defaults = self,
3-
namespace: error 'must provide namespace',
3+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
4+
// If there is no CRD for the component, everything is hidden in defaults.
5+
namespace:: error 'must provide namespace',
46
image: error 'must provide image',
57
version: error 'must provide version',
68
resources: {
@@ -18,9 +20,9 @@ local defaults = {
1820
for labelName in std.objectFields(defaults.commonLabels)
1921
if !std.setMember(labelName, ['app.kubernetes.io/version'])
2022
},
21-
name: error 'must provide name',
22-
reloaderPort: 8080,
23-
config: {
23+
name:: error 'must provide name',
24+
reloaderPort:: 8080,
25+
config:: {
2426
global: {
2527
resolve_timeout: '5m',
2628
},
@@ -59,7 +61,7 @@ local defaults = {
5961
],
6062
},
6163
replicas: 3,
62-
mixin: {
64+
mixin:: {
6365
ruleLabels: {},
6466
_config: {
6567
alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}',

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

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ local krp = import './kube-rbac-proxy.libsonnet';
22

33
local defaults = {
44
local defaults = self,
5-
namespace: error 'must provide namespace',
6-
version: error 'must provide version',
7-
image: error 'must provide version',
8-
resources: {
5+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
6+
// If there is no CRD for the component, everything is hidden in defaults.
7+
namespace:: error 'must provide namespace',
8+
version:: error 'must provide version',
9+
image:: error 'must provide version',
10+
resources:: {
911
requests: { cpu: '10m', memory: '20Mi' },
1012
limits: { cpu: '20m', memory: '40Mi' },
1113
},
@@ -20,13 +22,13 @@ local defaults = {
2022
for labelName in std.objectFields(defaults.commonLabels)
2123
if !std.setMember(labelName, ['app.kubernetes.io/version'])
2224
},
23-
configmapReloaderImage: error 'must provide version',
24-
kubeRbacProxyImage: error 'must provide kubeRbacProxyImage',
25+
configmapReloaderImage:: error 'must provide version',
26+
kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',
2527

26-
port: 9115,
27-
internalPort: 19115,
28-
replicas: 1,
29-
modules: {
28+
port:: 9115,
29+
internalPort:: 19115,
30+
replicas:: 1,
31+
modules:: {
3032
http_2xx: {
3133
prober: 'http',
3234
http: {
@@ -81,7 +83,7 @@ local defaults = {
8183
},
8284
},
8385
},
84-
privileged:
86+
privileged::
8587
local icmpModules = [self.modules[m] for m in std.objectFields(self.modules) if self.modules[m].prober == 'icmp'];
8688
std.length(icmpModules) > 0,
8789
};

jsonnet/kube-prometheus/components/grafana.libsonnet

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ local kubernetesGrafana = import 'github.com/brancz/kubernetes-grafana/grafana/g
22

33
local defaults = {
44
local defaults = self,
5-
name: 'grafana',
6-
namespace: error 'must provide namespace',
7-
version: error 'must provide version',
8-
image: error 'must provide image',
9-
resources: {
5+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
6+
// If there is no CRD for the component, everything is hidden in defaults.
7+
name:: 'grafana',
8+
namespace:: error 'must provide namespace',
9+
version:: error 'must provide version',
10+
image:: error 'must provide image',
11+
resources:: {
1012
requests: { cpu: '100m', memory: '100Mi' },
1113
limits: { cpu: '200m', memory: '200Mi' },
1214
},
@@ -21,7 +23,7 @@ local defaults = {
2123
for labelName in std.objectFields(defaults.commonLabels)
2224
if !std.setMember(labelName, ['app.kubernetes.io/version'])
2325
},
24-
prometheusName: error 'must provide prometheus name',
26+
prometheusName:: error 'must provide prometheus name',
2527
};
2628

2729
function(params)

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
local relabelings = import '../addons/dropping-deprecated-metrics-relabelings.libsonnet';
22

33
local defaults = {
4-
namespace: error 'must provide namespace',
4+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
5+
// If there is no CRD for the component, everything is hidden in defaults.
6+
namespace:: error 'must provide namespace',
57
commonLabels:: {
68
'app.kubernetes.io/name': 'kube-prometheus',
79
'app.kubernetes.io/part-of': 'kube-prometheus',
810
},
9-
mixin: {
11+
mixin:: {
1012
ruleLabels: {},
1113
_config: {
1214
cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"',
@@ -22,7 +24,7 @@ local defaults = {
2224
hostNetworkInterfaceSelector: 'device!~"veth.+"',
2325
},
2426
},
25-
kubeProxy: false,
27+
kubeProxy:: false,
2628
};
2729

2830
function(params) {

jsonnet/kube-prometheus/components/kube-rbac-proxy.libsonnet

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
local defaults = {
2-
namespace: error 'must provide namespace',
3-
image: error 'must provide image',
4-
ports: error 'must provide ports',
5-
secureListenAddress: error 'must provide secureListenAddress',
6-
upstream: error 'must provide upstream',
7-
resources: {
2+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
3+
// If there is no CRD for the component, everything is hidden in defaults.
4+
namespace:: error 'must provide namespace',
5+
image:: error 'must provide image',
6+
ports:: error 'must provide ports',
7+
secureListenAddress:: error 'must provide secureListenAddress',
8+
upstream:: error 'must provide upstream',
9+
resources:: {
810
requests: { cpu: '10m', memory: '20Mi' },
911
limits: { cpu: '20m', memory: '40Mi' },
1012
},
11-
tlsCipherSuites: [
13+
tlsCipherSuites:: [
1214
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256', // required by h2: http://golang.org/cl/30721
1315
'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256', // required by h2: http://golang.org/cl/30721
1416

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

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,26 @@ local krp = import './kube-rbac-proxy.libsonnet';
22

33
local defaults = {
44
local defaults = self,
5-
name: 'kube-state-metrics',
6-
namespace: error 'must provide namespace',
7-
version: error 'must provide version',
8-
image: error 'must provide version',
9-
kubeRbacProxyImage: error 'must provide kubeRbacProxyImage',
10-
resources: {
5+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
6+
// If there is no CRD for the component, everything is hidden in defaults.
7+
name:: 'kube-state-metrics',
8+
namespace:: error 'must provide namespace',
9+
version:: error 'must provide version',
10+
image:: error 'must provide version',
11+
kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',
12+
resources:: {
1113
requests: { cpu: '10m', memory: '190Mi' },
1214
limits: { cpu: '100m', memory: '250Mi' },
1315
},
1416

15-
kubeRbacProxyMain: {
17+
kubeRbacProxyMain:: {
1618
resources+: {
1719
limits+: { cpu: '40m' },
1820
requests+: { cpu: '20m' },
1921
},
2022
},
21-
scrapeInterval: '30s',
22-
scrapeTimeout: '30s',
23+
scrapeInterval:: '30s',
24+
scrapeTimeout:: '30s',
2325
commonLabels:: {
2426
'app.kubernetes.io/name': defaults.name,
2527
'app.kubernetes.io/version': defaults.version,
@@ -31,7 +33,7 @@ local defaults = {
3133
for labelName in std.objectFields(defaults.commonLabels)
3234
if !std.setMember(labelName, ['app.kubernetes.io/version'])
3335
},
34-
mixin: {
36+
mixin:: {
3537
ruleLabels: {},
3638
_config: {
3739
kubeStateMetricsSelector: 'job="' + defaults.name + '"',

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

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,20 @@ local krp = import './kube-rbac-proxy.libsonnet';
22

33
local defaults = {
44
local defaults = self,
5-
name: 'node-exporter',
6-
namespace: error 'must provide namespace',
7-
version: error 'must provide version',
8-
image: error 'must provide version',
9-
kubeRbacProxyImage: error 'must provide kubeRbacProxyImage',
10-
resources: {
5+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
6+
// If there is no CRD for the component, everything is hidden in defaults.
7+
name:: 'node-exporter',
8+
namespace:: error 'must provide namespace',
9+
version:: error 'must provide version',
10+
image:: error 'must provide version',
11+
kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',
12+
resources:: {
1113
requests: { cpu: '102m', memory: '180Mi' },
1214
limits: { cpu: '250m', memory: '180Mi' },
1315
},
14-
listenAddress: '127.0.0.1',
15-
filesystemMountPointsExclude: '^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)',
16-
port: 9100,
16+
listenAddress:: '127.0.0.1',
17+
filesystemMountPointsExclude:: '^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)',
18+
port:: 9100,
1719
commonLabels:: {
1820
'app.kubernetes.io/name': defaults.name,
1921
'app.kubernetes.io/version': defaults.version,
@@ -25,7 +27,7 @@ local defaults = {
2527
for labelName in std.objectFields(defaults.commonLabels)
2628
if !std.setMember(labelName, ['app.kubernetes.io/version'])
2729
},
28-
mixin: {
30+
mixin:: {
2931
ruleLabels: {},
3032
_config: {
3133
nodeExporterSelector: 'job="' + defaults.name + '"',

jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
local defaults = {
22
local defaults = self,
3-
name: 'prometheus-adapter',
4-
namespace: error 'must provide namespace',
5-
version: error 'must provide version',
3+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
4+
// If there is no CRD for the component, everything is hidden in defaults.
5+
name:: 'prometheus-adapter',
6+
namespace:: error 'must provide namespace',
7+
version:: error 'must provide version',
68
image: error 'must provide image',
7-
resources: {
9+
resources:: {
810
requests: { cpu: '102m', memory: '180Mi' },
911
limits: { cpu: '250m', memory: '180Mi' },
1012
},
11-
replicas: 2,
12-
listenAddress: '127.0.0.1',
13-
port: 9100,
13+
replicas:: 2,
14+
listenAddress:: '127.0.0.1',
15+
port:: 9100,
1416
commonLabels:: {
1517
'app.kubernetes.io/name': 'prometheus-adapter',
1618
'app.kubernetes.io/version': defaults.version,
@@ -24,14 +26,14 @@ local defaults = {
2426
},
2527
// Default range intervals are equal to 4 times the default scrape interval.
2628
// This is done in order to follow Prometheus rule of thumb with irate().
27-
rangeIntervals: {
29+
rangeIntervals:: {
2830
kubelet: '4m',
2931
nodeExporter: '4m',
3032
windowsExporter: '4m',
3133
},
3234

33-
prometheusURL: error 'must provide prometheusURL',
34-
config: {
35+
prometheusURL:: error 'must provide prometheusURL',
36+
config:: {
3537
resourceRules: {
3638
cpu: {
3739
containerQuery: |||
@@ -95,7 +97,7 @@ local defaults = {
9597
window: '5m',
9698
},
9799
},
98-
tlsCipherSuites: [
100+
tlsCipherSuites:: [
99101
'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305',
100102
'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305',
101103
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',

jsonnet/kube-prometheus/components/prometheus-operator.libsonnet

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ local prometheusOperator = import 'github.com/prometheus-operator/prometheus-ope
33

44
local defaults = {
55
local defaults = self,
6-
name: 'prometheus-operator',
7-
namespace: error 'must provide namespace',
8-
version: error 'must provide version',
9-
image: error 'must provide image',
10-
kubeRbacProxyImage: error 'must provide kubeRbacProxyImage',
11-
configReloaderImage: error 'must provide config reloader image',
12-
resources: {
6+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
7+
// If there is no CRD for the component, everything is hidden in defaults.
8+
name:: 'prometheus-operator',
9+
namespace:: error 'must provide namespace',
10+
version:: error 'must provide version',
11+
image:: error 'must provide image',
12+
kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',
13+
configReloaderImage:: error 'must provide config reloader image',
14+
resources:: {
1315
limits: { cpu: '200m', memory: '200Mi' },
1416
requests: { cpu: '100m', memory: '100Mi' },
1517
},
@@ -24,7 +26,7 @@ local defaults = {
2426
for labelName in std.objectFields(defaults.commonLabels)
2527
if !std.setMember(labelName, ['app.kubernetes.io/version'])
2628
},
27-
mixin: {
29+
mixin:: {
2830
ruleLabels: {
2931
role: 'alert-rules',
3032
prometheus: defaults.name,

jsonnet/kube-prometheus/components/prometheus.libsonnet

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
local defaults = {
22
local defaults = self,
3-
namespace: error 'must provide namespace',
3+
// Convention: Top-level fields related to CRDs are public, other fields are hidden
4+
// If there is no CRD for the component, everything is hidden in defaults.
5+
namespace:: error 'must provide namespace',
46
version: error 'must provide version',
57
image: error 'must provide image',
68
resources: {
79
requests: { memory: '400Mi' },
810
},
911

10-
name: error 'must provide name',
11-
alertmanagerName: error 'must provide alertmanagerName',
12-
namespaces: ['default', 'kube-system', defaults.namespace],
12+
name:: error 'must provide name',
13+
//TODO: remove alertmanagerName and convert to plain 'alerting' object
14+
alertmanagerName:: error 'must provide alertmanagerName',
15+
namespaces:: ['default', 'kube-system', defaults.namespace],
1316
replicas: 2,
1417
externalLabels: {},
1518
enableFeatures: [],
@@ -25,7 +28,7 @@ local defaults = {
2528
if !std.setMember(labelName, ['app.kubernetes.io/version'])
2629
} + { prometheus: defaults.name },
2730
ruleSelector: {},
28-
mixin: {
31+
mixin:: {
2932
ruleLabels: {},
3033
_config: {
3134
prometheusSelector: 'job="prometheus-' + defaults.name + '",namespace="' + defaults.namespace + '"',
@@ -35,7 +38,7 @@ local defaults = {
3538
},
3639
},
3740
thanos: null,
38-
reloaderPort: 8080,
41+
reloaderPort:: 8080,
3942
};
4043

4144

0 commit comments

Comments
 (0)