Make the prometheus & alertmanager name configurable
This commit is contained in:
@@ -15,6 +15,7 @@ local alertmanagerConfig = "\nglobal:\n resolve_timeout: 5m\nroute:\n group_by
|
|||||||
},
|
},
|
||||||
|
|
||||||
alertmanager+:: {
|
alertmanager+:: {
|
||||||
|
name: $._config.alertmanager.name,
|
||||||
config: alertmanagerConfig,
|
config: alertmanagerConfig,
|
||||||
replicas: 3,
|
replicas: 3,
|
||||||
},
|
},
|
||||||
@@ -24,13 +25,13 @@ local alertmanagerConfig = "\nglobal:\n resolve_timeout: 5m\nroute:\n group_by
|
|||||||
secret:
|
secret:
|
||||||
local secret = k.core.v1.secret;
|
local secret = k.core.v1.secret;
|
||||||
|
|
||||||
secret.new('alertmanager-main', { 'alertmanager.yaml': std.base64($._config.alertmanager.config) }) +
|
secret.new('alertmanager-' + $._config.alertmanager.name, { 'alertmanager.yaml': std.base64($._config.alertmanager.config) }) +
|
||||||
secret.mixin.metadata.withNamespace($._config.namespace),
|
secret.mixin.metadata.withNamespace($._config.namespace),
|
||||||
|
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
local serviceAccount = k.core.v1.serviceAccount;
|
local serviceAccount = k.core.v1.serviceAccount;
|
||||||
|
|
||||||
serviceAccount.new('alertmanager-main') +
|
serviceAccount.new('alertmanager-' + $._config.alertmanager.name) +
|
||||||
serviceAccount.mixin.metadata.withNamespace($._config.namespace),
|
serviceAccount.mixin.metadata.withNamespace($._config.namespace),
|
||||||
|
|
||||||
service:
|
service:
|
||||||
@@ -39,9 +40,9 @@ local alertmanagerConfig = "\nglobal:\n resolve_timeout: 5m\nroute:\n group_by
|
|||||||
|
|
||||||
local alertmanagerPort = servicePort.newNamed('web', 9093, 'web');
|
local alertmanagerPort = servicePort.newNamed('web', 9093, 'web');
|
||||||
|
|
||||||
service.new('alertmanager-main', { app: 'alertmanager', alertmanager: 'main' }, alertmanagerPort) +
|
service.new('alertmanager-' + $._config.alertmanager.name, { app: 'alertmanager', alertmanager: $._config.alertmanager.name }, alertmanagerPort) +
|
||||||
service.mixin.metadata.withNamespace($._config.namespace) +
|
service.mixin.metadata.withNamespace($._config.namespace) +
|
||||||
service.mixin.metadata.withLabels({ alertmanager: 'main' }),
|
service.mixin.metadata.withLabels({ alertmanager: $._config.alertmanager.name }),
|
||||||
|
|
||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
{
|
{
|
||||||
@@ -57,7 +58,7 @@ local alertmanagerConfig = "\nglobal:\n resolve_timeout: 5m\nroute:\n group_by
|
|||||||
spec: {
|
spec: {
|
||||||
selector: {
|
selector: {
|
||||||
matchLabels: {
|
matchLabels: {
|
||||||
alertmanager: 'main',
|
alertmanager: $._config.alertmanager.name,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
namespaceSelector: {
|
namespaceSelector: {
|
||||||
@@ -79,10 +80,10 @@ local alertmanagerConfig = "\nglobal:\n resolve_timeout: 5m\nroute:\n group_by
|
|||||||
apiVersion: 'monitoring.coreos.com/v1',
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
kind: 'Alertmanager',
|
kind: 'Alertmanager',
|
||||||
metadata: {
|
metadata: {
|
||||||
name: 'main',
|
name: $._config.alertmanager.name,
|
||||||
namespace: $._config.namespace,
|
namespace: $._config.namespace,
|
||||||
labels: {
|
labels: {
|
||||||
alertmanager: 'main',
|
alertmanager: $._config.alertmanager.name,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
spec: {
|
spec: {
|
||||||
@@ -90,7 +91,7 @@ local alertmanagerConfig = "\nglobal:\n resolve_timeout: 5m\nroute:\n group_by
|
|||||||
version: $._config.versions.alertmanager,
|
version: $._config.versions.alertmanager,
|
||||||
baseImage: $._config.imageRepos.alertmanager,
|
baseImage: $._config.imageRepos.alertmanager,
|
||||||
nodeSelector: { 'beta.kubernetes.io/os': 'linux' },
|
nodeSelector: { 'beta.kubernetes.io/os': 'linux' },
|
||||||
serviceAccountName: 'alertmanager-main',
|
serviceAccountName: 'alertmanager-' + $._config.alertmanager.name,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@@ -12,7 +12,12 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
prometheus: 'quay.io/prometheus/prometheus',
|
prometheus: 'quay.io/prometheus/prometheus',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
alertmanager+:: {
|
||||||
|
name: 'main',
|
||||||
|
},
|
||||||
|
|
||||||
prometheus+:: {
|
prometheus+:: {
|
||||||
|
name: 'k8s',
|
||||||
replicas: 2,
|
replicas: 2,
|
||||||
rules: {},
|
rules: {},
|
||||||
renderedRules: {},
|
renderedRules: {},
|
||||||
@@ -23,7 +28,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
serviceAccount:
|
serviceAccount:
|
||||||
local serviceAccount = k.core.v1.serviceAccount;
|
local serviceAccount = k.core.v1.serviceAccount;
|
||||||
|
|
||||||
serviceAccount.new('prometheus-k8s') +
|
serviceAccount.new('prometheus-' + $._config.prometheus.name) +
|
||||||
serviceAccount.mixin.metadata.withNamespace($._config.namespace),
|
serviceAccount.mixin.metadata.withNamespace($._config.namespace),
|
||||||
service:
|
service:
|
||||||
local service = k.core.v1.service;
|
local service = k.core.v1.service;
|
||||||
@@ -31,25 +36,25 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
|
|
||||||
local prometheusPort = servicePort.newNamed('web', 9090, 'web');
|
local prometheusPort = servicePort.newNamed('web', 9090, 'web');
|
||||||
|
|
||||||
service.new('prometheus-k8s', { app: 'prometheus', prometheus: 'k8s' }, prometheusPort) +
|
service.new('prometheus-' + $._config.prometheus.name, { app: 'prometheus', prometheus: $._config.prometheus.name }, prometheusPort) +
|
||||||
service.mixin.metadata.withNamespace($._config.namespace) +
|
service.mixin.metadata.withNamespace($._config.namespace) +
|
||||||
service.mixin.metadata.withLabels({ prometheus: 'k8s' }),
|
service.mixin.metadata.withLabels({ prometheus: $._config.prometheus.name }),
|
||||||
rules:
|
rules:
|
||||||
local configMap = k.core.v1.configMap;
|
local configMap = k.core.v1.configMap;
|
||||||
|
|
||||||
configMap.new('prometheus-k8s-rules', ({ 'all.rules.yaml': std.manifestYamlDoc($._config.prometheus.rules) } + $._config.prometheus.renderedRules)) +
|
configMap.new('prometheus-k8s-rules', ({ 'all.rules.yaml': std.manifestYamlDoc($._config.prometheus.rules) } + $._config.prometheus.renderedRules)) +
|
||||||
configMap.mixin.metadata.withLabels({ role: 'alert-rules', prometheus: 'k8s' }) +
|
configMap.mixin.metadata.withLabels({ role: 'alert-rules', prometheus: $._config.prometheus.name }) +
|
||||||
configMap.mixin.metadata.withNamespace($._config.namespace),
|
configMap.mixin.metadata.withNamespace($._config.namespace),
|
||||||
roleBindingDefault:
|
roleBindingDefault:
|
||||||
local roleBinding = k.rbac.v1.roleBinding;
|
local roleBinding = k.rbac.v1.roleBinding;
|
||||||
|
|
||||||
roleBinding.new() +
|
roleBinding.new() +
|
||||||
roleBinding.mixin.metadata.withName('prometheus-k8s') +
|
roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
roleBinding.mixin.metadata.withNamespace('default') +
|
roleBinding.mixin.metadata.withNamespace('default') +
|
||||||
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
||||||
roleBinding.mixin.roleRef.withName('prometheus-k8s') +
|
roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
||||||
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
|
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
||||||
clusterRole:
|
clusterRole:
|
||||||
local clusterRole = k.rbac.v1.clusterRole;
|
local clusterRole = k.rbac.v1.clusterRole;
|
||||||
local policyRule = clusterRole.rulesType;
|
local policyRule = clusterRole.rulesType;
|
||||||
@@ -66,7 +71,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
local rules = [nodeMetricsRule, metricsRule];
|
local rules = [nodeMetricsRule, metricsRule];
|
||||||
|
|
||||||
clusterRole.new() +
|
clusterRole.new() +
|
||||||
clusterRole.mixin.metadata.withName('prometheus-k8s') +
|
clusterRole.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
clusterRole.withRules(rules),
|
clusterRole.withRules(rules),
|
||||||
roleConfig:
|
roleConfig:
|
||||||
local role = k.rbac.v1.role;
|
local role = k.rbac.v1.role;
|
||||||
@@ -92,26 +97,26 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
||||||
roleBinding.mixin.roleRef.withName('prometheus-k8s-config') +
|
roleBinding.mixin.roleRef.withName('prometheus-k8s-config') +
|
||||||
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
||||||
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
|
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
||||||
roleBindingNamespace:
|
roleBindingNamespace:
|
||||||
local roleBinding = k.rbac.v1.roleBinding;
|
local roleBinding = k.rbac.v1.roleBinding;
|
||||||
|
|
||||||
roleBinding.new() +
|
roleBinding.new() +
|
||||||
roleBinding.mixin.metadata.withName('prometheus-k8s') +
|
roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
roleBinding.mixin.metadata.withNamespace($._config.namespace) +
|
roleBinding.mixin.metadata.withNamespace($._config.namespace) +
|
||||||
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
||||||
roleBinding.mixin.roleRef.withName('prometheus-k8s') +
|
roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
||||||
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
|
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
||||||
clusterRoleBinding:
|
clusterRoleBinding:
|
||||||
local clusterRoleBinding = k.rbac.v1.clusterRoleBinding;
|
local clusterRoleBinding = k.rbac.v1.clusterRoleBinding;
|
||||||
|
|
||||||
clusterRoleBinding.new() +
|
clusterRoleBinding.new() +
|
||||||
clusterRoleBinding.mixin.metadata.withName('prometheus-k8s') +
|
clusterRoleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
||||||
clusterRoleBinding.mixin.roleRef.withName('prometheus-k8s') +
|
clusterRoleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' }) +
|
clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' }) +
|
||||||
clusterRoleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
|
clusterRoleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
||||||
roleKubeSystem:
|
roleKubeSystem:
|
||||||
local role = k.rbac.v1.role;
|
local role = k.rbac.v1.role;
|
||||||
local policyRule = role.rulesType;
|
local policyRule = role.rulesType;
|
||||||
@@ -127,7 +132,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
policyRule.withVerbs(['get', 'list', 'watch']);
|
policyRule.withVerbs(['get', 'list', 'watch']);
|
||||||
|
|
||||||
role.new() +
|
role.new() +
|
||||||
role.mixin.metadata.withName('prometheus-k8s') +
|
role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
role.mixin.metadata.withNamespace('kube-system') +
|
role.mixin.metadata.withNamespace('kube-system') +
|
||||||
role.withRules(coreRule),
|
role.withRules(coreRule),
|
||||||
roleDefault:
|
roleDefault:
|
||||||
@@ -145,19 +150,19 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
policyRule.withVerbs(['get', 'list', 'watch']);
|
policyRule.withVerbs(['get', 'list', 'watch']);
|
||||||
|
|
||||||
role.new() +
|
role.new() +
|
||||||
role.mixin.metadata.withName('prometheus-k8s') +
|
role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
role.mixin.metadata.withNamespace('default') +
|
role.mixin.metadata.withNamespace('default') +
|
||||||
role.withRules(coreRule),
|
role.withRules(coreRule),
|
||||||
roleBindingKubeSystem:
|
roleBindingKubeSystem:
|
||||||
local roleBinding = k.rbac.v1.roleBinding;
|
local roleBinding = k.rbac.v1.roleBinding;
|
||||||
|
|
||||||
roleBinding.new() +
|
roleBinding.new() +
|
||||||
roleBinding.mixin.metadata.withName('prometheus-k8s') +
|
roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
roleBinding.mixin.metadata.withNamespace('kube-system') +
|
roleBinding.mixin.metadata.withNamespace('kube-system') +
|
||||||
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
||||||
roleBinding.mixin.roleRef.withName('prometheus-k8s') +
|
roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
||||||
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
|
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
||||||
roleNamespace:
|
roleNamespace:
|
||||||
local role = k.rbac.v1.role;
|
local role = k.rbac.v1.role;
|
||||||
local policyRule = role.rulesType;
|
local policyRule = role.rulesType;
|
||||||
@@ -173,7 +178,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
policyRule.withVerbs(['get', 'list', 'watch']);
|
policyRule.withVerbs(['get', 'list', 'watch']);
|
||||||
|
|
||||||
role.new() +
|
role.new() +
|
||||||
role.mixin.metadata.withName('prometheus-k8s') +
|
role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
role.mixin.metadata.withNamespace($._config.namespace) +
|
role.mixin.metadata.withNamespace($._config.namespace) +
|
||||||
role.withRules(coreRule),
|
role.withRules(coreRule),
|
||||||
prometheus:
|
prometheus:
|
||||||
@@ -188,29 +193,29 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
apiVersion: 'monitoring.coreos.com/v1',
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
kind: 'Prometheus',
|
kind: 'Prometheus',
|
||||||
metadata: {
|
metadata: {
|
||||||
name: 'k8s',
|
name: $._config.prometheus.name,
|
||||||
namespace: $._config.namespace,
|
namespace: $._config.namespace,
|
||||||
labels: {
|
labels: {
|
||||||
prometheus: 'k8s',
|
prometheus: $._config.prometheus.name,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
spec: {
|
spec: {
|
||||||
replicas: $._config.prometheus.replicas,
|
replicas: $._config.prometheus.replicas,
|
||||||
version: $._config.versions.prometheus,
|
version: $._config.versions.prometheus,
|
||||||
baseImage: $._config.imageRepos.prometheus,
|
baseImage: $._config.imageRepos.prometheus,
|
||||||
serviceAccountName: 'prometheus-k8s',
|
serviceAccountName: 'prometheus-' + $._config.prometheus.name,
|
||||||
serviceMonitorSelector: selector.withMatchExpressions({ key: 'k8s-app', operator: 'Exists' }),
|
serviceMonitorSelector: selector.withMatchExpressions({ key: 'k8s-app', operator: 'Exists' }),
|
||||||
nodeSelector: { 'beta.kubernetes.io/os': 'linux' },
|
nodeSelector: { 'beta.kubernetes.io/os': 'linux' },
|
||||||
ruleSelector: selector.withMatchLabels({
|
ruleSelector: selector.withMatchLabels({
|
||||||
role: 'alert-rules',
|
role: 'alert-rules',
|
||||||
prometheus: 'k8s',
|
prometheus: $._config.prometheus.name,
|
||||||
}),
|
}),
|
||||||
resources: resources,
|
resources: resources,
|
||||||
alerting: {
|
alerting: {
|
||||||
alertmanagers: [
|
alertmanagers: [
|
||||||
{
|
{
|
||||||
namespace: $._config.namespace,
|
namespace: $._config.namespace,
|
||||||
name: 'alertmanager-main',
|
name: 'alertmanager-' + $._config.alertmanager.name,
|
||||||
port: 'web',
|
port: 'web',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -231,7 +236,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
spec: {
|
spec: {
|
||||||
selector: {
|
selector: {
|
||||||
matchLabels: {
|
matchLabels: {
|
||||||
prometheus: 'k8s',
|
prometheus: $._config.prometheus.name,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
namespaceSelector: {
|
namespaceSelector: {
|
||||||
|
Reference in New Issue
Block a user