jsonnet: establish convention for components default fields
Signed-off-by: paulfantom <pawel@krupa.net.pl>
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
local defaults = {
|
local defaults = {
|
||||||
local defaults = self,
|
local defaults = self,
|
||||||
namespace: error 'must provide namespace',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
|
namespace:: error 'must provide namespace',
|
||||||
image: error 'must provide image',
|
image: error 'must provide image',
|
||||||
version: error 'must provide version',
|
version: error 'must provide version',
|
||||||
resources: {
|
resources: {
|
||||||
@@ -18,9 +20,9 @@ local defaults = {
|
|||||||
for labelName in std.objectFields(defaults.commonLabels)
|
for labelName in std.objectFields(defaults.commonLabels)
|
||||||
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
||||||
},
|
},
|
||||||
name: error 'must provide name',
|
name:: error 'must provide name',
|
||||||
reloaderPort: 8080,
|
reloaderPort:: 8080,
|
||||||
config: {
|
config:: {
|
||||||
global: {
|
global: {
|
||||||
resolve_timeout: '5m',
|
resolve_timeout: '5m',
|
||||||
},
|
},
|
||||||
@@ -59,7 +61,7 @@ local defaults = {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
replicas: 3,
|
replicas: 3,
|
||||||
mixin: {
|
mixin:: {
|
||||||
ruleLabels: {},
|
ruleLabels: {},
|
||||||
_config: {
|
_config: {
|
||||||
alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}',
|
alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}',
|
||||||
|
|||||||
@@ -2,10 +2,12 @@ local krp = import './kube-rbac-proxy.libsonnet';
|
|||||||
|
|
||||||
local defaults = {
|
local defaults = {
|
||||||
local defaults = self,
|
local defaults = self,
|
||||||
namespace: error 'must provide namespace',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
version: error 'must provide version',
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
image: error 'must provide version',
|
namespace:: error 'must provide namespace',
|
||||||
resources: {
|
version:: error 'must provide version',
|
||||||
|
image:: error 'must provide version',
|
||||||
|
resources:: {
|
||||||
requests: { cpu: '10m', memory: '20Mi' },
|
requests: { cpu: '10m', memory: '20Mi' },
|
||||||
limits: { cpu: '20m', memory: '40Mi' },
|
limits: { cpu: '20m', memory: '40Mi' },
|
||||||
},
|
},
|
||||||
@@ -20,13 +22,13 @@ local defaults = {
|
|||||||
for labelName in std.objectFields(defaults.commonLabels)
|
for labelName in std.objectFields(defaults.commonLabels)
|
||||||
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
||||||
},
|
},
|
||||||
configmapReloaderImage: error 'must provide version',
|
configmapReloaderImage:: error 'must provide version',
|
||||||
kubeRbacProxyImage: error 'must provide kubeRbacProxyImage',
|
kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',
|
||||||
|
|
||||||
port: 9115,
|
port:: 9115,
|
||||||
internalPort: 19115,
|
internalPort:: 19115,
|
||||||
replicas: 1,
|
replicas:: 1,
|
||||||
modules: {
|
modules:: {
|
||||||
http_2xx: {
|
http_2xx: {
|
||||||
prober: 'http',
|
prober: 'http',
|
||||||
http: {
|
http: {
|
||||||
@@ -81,7 +83,7 @@ local defaults = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
privileged:
|
privileged::
|
||||||
local icmpModules = [self.modules[m] for m in std.objectFields(self.modules) if self.modules[m].prober == 'icmp'];
|
local icmpModules = [self.modules[m] for m in std.objectFields(self.modules) if self.modules[m].prober == 'icmp'];
|
||||||
std.length(icmpModules) > 0,
|
std.length(icmpModules) > 0,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,11 +2,13 @@ local kubernetesGrafana = import 'github.com/brancz/kubernetes-grafana/grafana/g
|
|||||||
|
|
||||||
local defaults = {
|
local defaults = {
|
||||||
local defaults = self,
|
local defaults = self,
|
||||||
name: 'grafana',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
namespace: error 'must provide namespace',
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
version: error 'must provide version',
|
name:: 'grafana',
|
||||||
image: error 'must provide image',
|
namespace:: error 'must provide namespace',
|
||||||
resources: {
|
version:: error 'must provide version',
|
||||||
|
image:: error 'must provide image',
|
||||||
|
resources:: {
|
||||||
requests: { cpu: '100m', memory: '100Mi' },
|
requests: { cpu: '100m', memory: '100Mi' },
|
||||||
limits: { cpu: '200m', memory: '200Mi' },
|
limits: { cpu: '200m', memory: '200Mi' },
|
||||||
},
|
},
|
||||||
@@ -21,7 +23,7 @@ local defaults = {
|
|||||||
for labelName in std.objectFields(defaults.commonLabels)
|
for labelName in std.objectFields(defaults.commonLabels)
|
||||||
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
||||||
},
|
},
|
||||||
prometheusName: error 'must provide prometheus name',
|
prometheusName:: error 'must provide prometheus name',
|
||||||
};
|
};
|
||||||
|
|
||||||
function(params)
|
function(params)
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
local relabelings = import '../addons/dropping-deprecated-metrics-relabelings.libsonnet';
|
local relabelings = import '../addons/dropping-deprecated-metrics-relabelings.libsonnet';
|
||||||
|
|
||||||
local defaults = {
|
local defaults = {
|
||||||
namespace: error 'must provide namespace',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
|
namespace:: error 'must provide namespace',
|
||||||
commonLabels:: {
|
commonLabels:: {
|
||||||
'app.kubernetes.io/name': 'kube-prometheus',
|
'app.kubernetes.io/name': 'kube-prometheus',
|
||||||
'app.kubernetes.io/part-of': 'kube-prometheus',
|
'app.kubernetes.io/part-of': 'kube-prometheus',
|
||||||
},
|
},
|
||||||
mixin: {
|
mixin:: {
|
||||||
ruleLabels: {},
|
ruleLabels: {},
|
||||||
_config: {
|
_config: {
|
||||||
cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"',
|
cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"',
|
||||||
@@ -22,7 +24,7 @@ local defaults = {
|
|||||||
hostNetworkInterfaceSelector: 'device!~"veth.+"',
|
hostNetworkInterfaceSelector: 'device!~"veth.+"',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
kubeProxy: false,
|
kubeProxy:: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
function(params) {
|
function(params) {
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
local defaults = {
|
local defaults = {
|
||||||
namespace: error 'must provide namespace',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
image: error 'must provide image',
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
ports: error 'must provide ports',
|
namespace:: error 'must provide namespace',
|
||||||
secureListenAddress: error 'must provide secureListenAddress',
|
image:: error 'must provide image',
|
||||||
upstream: error 'must provide upstream',
|
ports:: error 'must provide ports',
|
||||||
resources: {
|
secureListenAddress:: error 'must provide secureListenAddress',
|
||||||
|
upstream:: error 'must provide upstream',
|
||||||
|
resources:: {
|
||||||
requests: { cpu: '10m', memory: '20Mi' },
|
requests: { cpu: '10m', memory: '20Mi' },
|
||||||
limits: { cpu: '20m', memory: '40Mi' },
|
limits: { cpu: '20m', memory: '40Mi' },
|
||||||
},
|
},
|
||||||
tlsCipherSuites: [
|
tlsCipherSuites:: [
|
||||||
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256', // required by h2: http://golang.org/cl/30721
|
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256', // required by h2: http://golang.org/cl/30721
|
||||||
'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256', // required by h2: http://golang.org/cl/30721
|
'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256', // required by h2: http://golang.org/cl/30721
|
||||||
|
|
||||||
|
|||||||
@@ -2,24 +2,26 @@ local krp = import './kube-rbac-proxy.libsonnet';
|
|||||||
|
|
||||||
local defaults = {
|
local defaults = {
|
||||||
local defaults = self,
|
local defaults = self,
|
||||||
name: 'kube-state-metrics',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
namespace: error 'must provide namespace',
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
version: error 'must provide version',
|
name:: 'kube-state-metrics',
|
||||||
image: error 'must provide version',
|
namespace:: error 'must provide namespace',
|
||||||
kubeRbacProxyImage: error 'must provide kubeRbacProxyImage',
|
version:: error 'must provide version',
|
||||||
resources: {
|
image:: error 'must provide version',
|
||||||
|
kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',
|
||||||
|
resources:: {
|
||||||
requests: { cpu: '10m', memory: '190Mi' },
|
requests: { cpu: '10m', memory: '190Mi' },
|
||||||
limits: { cpu: '100m', memory: '250Mi' },
|
limits: { cpu: '100m', memory: '250Mi' },
|
||||||
},
|
},
|
||||||
|
|
||||||
kubeRbacProxyMain: {
|
kubeRbacProxyMain:: {
|
||||||
resources+: {
|
resources+: {
|
||||||
limits+: { cpu: '40m' },
|
limits+: { cpu: '40m' },
|
||||||
requests+: { cpu: '20m' },
|
requests+: { cpu: '20m' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
scrapeInterval: '30s',
|
scrapeInterval:: '30s',
|
||||||
scrapeTimeout: '30s',
|
scrapeTimeout:: '30s',
|
||||||
commonLabels:: {
|
commonLabels:: {
|
||||||
'app.kubernetes.io/name': defaults.name,
|
'app.kubernetes.io/name': defaults.name,
|
||||||
'app.kubernetes.io/version': defaults.version,
|
'app.kubernetes.io/version': defaults.version,
|
||||||
@@ -31,7 +33,7 @@ local defaults = {
|
|||||||
for labelName in std.objectFields(defaults.commonLabels)
|
for labelName in std.objectFields(defaults.commonLabels)
|
||||||
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
||||||
},
|
},
|
||||||
mixin: {
|
mixin:: {
|
||||||
ruleLabels: {},
|
ruleLabels: {},
|
||||||
_config: {
|
_config: {
|
||||||
kubeStateMetricsSelector: 'job="' + defaults.name + '"',
|
kubeStateMetricsSelector: 'job="' + defaults.name + '"',
|
||||||
|
|||||||
@@ -2,18 +2,20 @@ local krp = import './kube-rbac-proxy.libsonnet';
|
|||||||
|
|
||||||
local defaults = {
|
local defaults = {
|
||||||
local defaults = self,
|
local defaults = self,
|
||||||
name: 'node-exporter',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
namespace: error 'must provide namespace',
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
version: error 'must provide version',
|
name:: 'node-exporter',
|
||||||
image: error 'must provide version',
|
namespace:: error 'must provide namespace',
|
||||||
kubeRbacProxyImage: error 'must provide kubeRbacProxyImage',
|
version:: error 'must provide version',
|
||||||
resources: {
|
image:: error 'must provide version',
|
||||||
|
kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',
|
||||||
|
resources:: {
|
||||||
requests: { cpu: '102m', memory: '180Mi' },
|
requests: { cpu: '102m', memory: '180Mi' },
|
||||||
limits: { cpu: '250m', memory: '180Mi' },
|
limits: { cpu: '250m', memory: '180Mi' },
|
||||||
},
|
},
|
||||||
listenAddress: '127.0.0.1',
|
listenAddress:: '127.0.0.1',
|
||||||
filesystemMountPointsExclude: '^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)',
|
filesystemMountPointsExclude:: '^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)',
|
||||||
port: 9100,
|
port:: 9100,
|
||||||
commonLabels:: {
|
commonLabels:: {
|
||||||
'app.kubernetes.io/name': defaults.name,
|
'app.kubernetes.io/name': defaults.name,
|
||||||
'app.kubernetes.io/version': defaults.version,
|
'app.kubernetes.io/version': defaults.version,
|
||||||
@@ -25,7 +27,7 @@ local defaults = {
|
|||||||
for labelName in std.objectFields(defaults.commonLabels)
|
for labelName in std.objectFields(defaults.commonLabels)
|
||||||
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
||||||
},
|
},
|
||||||
mixin: {
|
mixin:: {
|
||||||
ruleLabels: {},
|
ruleLabels: {},
|
||||||
_config: {
|
_config: {
|
||||||
nodeExporterSelector: 'job="' + defaults.name + '"',
|
nodeExporterSelector: 'job="' + defaults.name + '"',
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
local defaults = {
|
local defaults = {
|
||||||
local defaults = self,
|
local defaults = self,
|
||||||
name: 'prometheus-adapter',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
namespace: error 'must provide namespace',
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
version: error 'must provide version',
|
name:: 'prometheus-adapter',
|
||||||
|
namespace:: error 'must provide namespace',
|
||||||
|
version:: error 'must provide version',
|
||||||
image: error 'must provide image',
|
image: error 'must provide image',
|
||||||
resources: {
|
resources:: {
|
||||||
requests: { cpu: '102m', memory: '180Mi' },
|
requests: { cpu: '102m', memory: '180Mi' },
|
||||||
limits: { cpu: '250m', memory: '180Mi' },
|
limits: { cpu: '250m', memory: '180Mi' },
|
||||||
},
|
},
|
||||||
replicas: 2,
|
replicas:: 2,
|
||||||
listenAddress: '127.0.0.1',
|
listenAddress:: '127.0.0.1',
|
||||||
port: 9100,
|
port:: 9100,
|
||||||
commonLabels:: {
|
commonLabels:: {
|
||||||
'app.kubernetes.io/name': 'prometheus-adapter',
|
'app.kubernetes.io/name': 'prometheus-adapter',
|
||||||
'app.kubernetes.io/version': defaults.version,
|
'app.kubernetes.io/version': defaults.version,
|
||||||
@@ -24,14 +26,14 @@ local defaults = {
|
|||||||
},
|
},
|
||||||
// Default range intervals are equal to 4 times the default scrape interval.
|
// Default range intervals are equal to 4 times the default scrape interval.
|
||||||
// This is done in order to follow Prometheus rule of thumb with irate().
|
// This is done in order to follow Prometheus rule of thumb with irate().
|
||||||
rangeIntervals: {
|
rangeIntervals:: {
|
||||||
kubelet: '4m',
|
kubelet: '4m',
|
||||||
nodeExporter: '4m',
|
nodeExporter: '4m',
|
||||||
windowsExporter: '4m',
|
windowsExporter: '4m',
|
||||||
},
|
},
|
||||||
|
|
||||||
prometheusURL: error 'must provide prometheusURL',
|
prometheusURL:: error 'must provide prometheusURL',
|
||||||
config: {
|
config:: {
|
||||||
resourceRules: {
|
resourceRules: {
|
||||||
cpu: {
|
cpu: {
|
||||||
containerQuery: |||
|
containerQuery: |||
|
||||||
@@ -95,7 +97,7 @@ local defaults = {
|
|||||||
window: '5m',
|
window: '5m',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
tlsCipherSuites: [
|
tlsCipherSuites:: [
|
||||||
'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305',
|
'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305',
|
||||||
'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305',
|
'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305',
|
||||||
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
|
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
|
||||||
|
|||||||
@@ -3,13 +3,15 @@ local prometheusOperator = import 'github.com/prometheus-operator/prometheus-ope
|
|||||||
|
|
||||||
local defaults = {
|
local defaults = {
|
||||||
local defaults = self,
|
local defaults = self,
|
||||||
name: 'prometheus-operator',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
namespace: error 'must provide namespace',
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
version: error 'must provide version',
|
name:: 'prometheus-operator',
|
||||||
image: error 'must provide image',
|
namespace:: error 'must provide namespace',
|
||||||
kubeRbacProxyImage: error 'must provide kubeRbacProxyImage',
|
version:: error 'must provide version',
|
||||||
configReloaderImage: error 'must provide config reloader image',
|
image:: error 'must provide image',
|
||||||
resources: {
|
kubeRbacProxyImage:: error 'must provide kubeRbacProxyImage',
|
||||||
|
configReloaderImage:: error 'must provide config reloader image',
|
||||||
|
resources:: {
|
||||||
limits: { cpu: '200m', memory: '200Mi' },
|
limits: { cpu: '200m', memory: '200Mi' },
|
||||||
requests: { cpu: '100m', memory: '100Mi' },
|
requests: { cpu: '100m', memory: '100Mi' },
|
||||||
},
|
},
|
||||||
@@ -24,7 +26,7 @@ local defaults = {
|
|||||||
for labelName in std.objectFields(defaults.commonLabels)
|
for labelName in std.objectFields(defaults.commonLabels)
|
||||||
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
||||||
},
|
},
|
||||||
mixin: {
|
mixin:: {
|
||||||
ruleLabels: {
|
ruleLabels: {
|
||||||
role: 'alert-rules',
|
role: 'alert-rules',
|
||||||
prometheus: defaults.name,
|
prometheus: defaults.name,
|
||||||
|
|||||||
@@ -1,15 +1,18 @@
|
|||||||
local defaults = {
|
local defaults = {
|
||||||
local defaults = self,
|
local defaults = self,
|
||||||
namespace: error 'must provide namespace',
|
// Convention: Top-level fields related to CRDs are public, other fields are hidden
|
||||||
|
// If there is no CRD for the component, everything is hidden in defaults.
|
||||||
|
namespace:: error 'must provide namespace',
|
||||||
version: error 'must provide version',
|
version: error 'must provide version',
|
||||||
image: error 'must provide image',
|
image: error 'must provide image',
|
||||||
resources: {
|
resources: {
|
||||||
requests: { memory: '400Mi' },
|
requests: { memory: '400Mi' },
|
||||||
},
|
},
|
||||||
|
|
||||||
name: error 'must provide name',
|
name:: error 'must provide name',
|
||||||
alertmanagerName: error 'must provide alertmanagerName',
|
//TODO: remove alertmanagerName and convert to plain 'alerting' object
|
||||||
namespaces: ['default', 'kube-system', defaults.namespace],
|
alertmanagerName:: error 'must provide alertmanagerName',
|
||||||
|
namespaces:: ['default', 'kube-system', defaults.namespace],
|
||||||
replicas: 2,
|
replicas: 2,
|
||||||
externalLabels: {},
|
externalLabels: {},
|
||||||
enableFeatures: [],
|
enableFeatures: [],
|
||||||
@@ -25,7 +28,7 @@ local defaults = {
|
|||||||
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
||||||
} + { prometheus: defaults.name },
|
} + { prometheus: defaults.name },
|
||||||
ruleSelector: {},
|
ruleSelector: {},
|
||||||
mixin: {
|
mixin:: {
|
||||||
ruleLabels: {},
|
ruleLabels: {},
|
||||||
_config: {
|
_config: {
|
||||||
prometheusSelector: 'job="prometheus-' + defaults.name + '",namespace="' + defaults.namespace + '"',
|
prometheusSelector: 'job="prometheus-' + defaults.name + '",namespace="' + defaults.namespace + '"',
|
||||||
@@ -35,7 +38,7 @@ local defaults = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
thanos: null,
|
thanos: null,
|
||||||
reloaderPort: 8080,
|
reloaderPort:: 8080,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user