mirror of
https://github.com/prometheus-operator/kube-prometheus.git
synced 2025-10-29 07:01:01 +01:00
Merge pull request #862 from paulfantom/alertmanager-global
Remove mutating global state in alertmanager objects
This commit is contained in:
commit
6248e73890
@ -1,17 +1,21 @@
|
|||||||
{
|
local defaults = {
|
||||||
_config+:: {
|
local defaults = self,
|
||||||
namespace: 'default',
|
namespace: error 'must provide namespace',
|
||||||
|
image: error 'must provide image',
|
||||||
versions+:: {
|
version: error 'must provide version',
|
||||||
alertmanager: 'v0.21.0',
|
resources: {},
|
||||||
|
commonLabels:: {
|
||||||
|
'app.kubernetes.io/name': 'alertmanager',
|
||||||
|
'app.kubernetes.io/version': defaults.version,
|
||||||
|
'app.kubernetes.io/component': 'alert-router',
|
||||||
|
'app.kubernetes.io/part-of': 'kube-prometheus',
|
||||||
},
|
},
|
||||||
|
selectorLabels:: {
|
||||||
imageRepos+:: {
|
[labelName]: defaults.commonLabels[labelName]
|
||||||
alertmanager: 'quay.io/prometheus/alertmanager',
|
for labelName in std.objectFields(defaults.commonLabels)
|
||||||
|
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
||||||
},
|
},
|
||||||
|
name: error 'must provide name',
|
||||||
alertmanager+:: {
|
|
||||||
name: 'main',
|
|
||||||
config: {
|
config: {
|
||||||
global: {
|
global: {
|
||||||
resolve_timeout: '5m',
|
resolve_timeout: '5m',
|
||||||
@ -51,36 +55,32 @@
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
replicas: 3,
|
replicas: 3,
|
||||||
labels: {
|
};
|
||||||
'app.kubernetes.io/name': 'alertmanager',
|
|
||||||
'app.kubernetes.io/version': $._config.versions.alertmanager,
|
|
||||||
'app.kubernetes.io/component': 'alert-router',
|
|
||||||
'app.kubernetes.io/part-of': 'kube-prometheus',
|
|
||||||
},
|
function(params) {
|
||||||
selectorLabels: {
|
local am = self,
|
||||||
[labelName]: $._config.alertmanager.labels[labelName]
|
config:: defaults + params,
|
||||||
for labelName in std.objectFields($._config.alertmanager.labels)
|
// Safety check
|
||||||
if !std.setMember(labelName, ['app.kubernetes.io/version'])
|
assert std.isObject(am.config.resources),
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
alertmanager+:: {
|
|
||||||
secret: {
|
secret: {
|
||||||
apiVersion: 'v1',
|
apiVersion: 'v1',
|
||||||
kind: 'Secret',
|
kind: 'Secret',
|
||||||
type: 'Opaque',
|
type: 'Opaque',
|
||||||
metadata: {
|
metadata: {
|
||||||
name: 'alertmanager-' + $._config.alertmanager.name,
|
name: 'alertmanager-' + am.config.name,
|
||||||
namespace: $._config.namespace,
|
namespace: am.config.namespace,
|
||||||
labels: { alertmanager: $._config.alertmanager.name } + $._config.alertmanager.labels,
|
labels: { alertmanager: am.config.name } + am.config.commonLabels,
|
||||||
},
|
},
|
||||||
stringData: {
|
stringData: {
|
||||||
'alertmanager.yaml': if std.type($._config.alertmanager.config) == 'object'
|
'alertmanager.yaml': if std.type(am.config.config) == 'object'
|
||||||
then
|
then
|
||||||
std.manifestYamlDoc($._config.alertmanager.config)
|
std.manifestYamlDoc(am.config.config)
|
||||||
else
|
else
|
||||||
$._config.alertmanager.config,
|
am.config.config,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -88,9 +88,9 @@
|
|||||||
apiVersion: 'v1',
|
apiVersion: 'v1',
|
||||||
kind: 'ServiceAccount',
|
kind: 'ServiceAccount',
|
||||||
metadata: {
|
metadata: {
|
||||||
name: 'alertmanager-' + $._config.alertmanager.name,
|
name: 'alertmanager-' + am.config.name,
|
||||||
namespace: $._config.namespace,
|
namespace: am.config.namespace,
|
||||||
labels: { alertmanager: $._config.alertmanager.name } + $._config.alertmanager.labels,
|
labels: { alertmanager: am.config.name } + am.config.commonLabels,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -98,9 +98,9 @@
|
|||||||
apiVersion: 'v1',
|
apiVersion: 'v1',
|
||||||
kind: 'Service',
|
kind: 'Service',
|
||||||
metadata: {
|
metadata: {
|
||||||
name: 'alertmanager-' + $._config.alertmanager.name,
|
name: 'alertmanager-' + am.config.name,
|
||||||
namespace: $._config.namespace,
|
namespace: am.config.namespace,
|
||||||
labels: { alertmanager: $._config.alertmanager.name } + $._config.alertmanager.labels,
|
labels: { alertmanager: am.config.name } + am.config.commonLabels,
|
||||||
},
|
},
|
||||||
spec: {
|
spec: {
|
||||||
ports: [
|
ports: [
|
||||||
@ -108,8 +108,8 @@
|
|||||||
],
|
],
|
||||||
selector: {
|
selector: {
|
||||||
app: 'alertmanager',
|
app: 'alertmanager',
|
||||||
alertmanager: $._config.alertmanager.name,
|
alertmanager: am.config.name,
|
||||||
} + $._config.alertmanager.selectorLabels,
|
} + am.config.selectorLabels,
|
||||||
sessionAffinity: 'ClientIP',
|
sessionAffinity: 'ClientIP',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -119,14 +119,14 @@
|
|||||||
kind: 'ServiceMonitor',
|
kind: 'ServiceMonitor',
|
||||||
metadata: {
|
metadata: {
|
||||||
name: 'alertmanager',
|
name: 'alertmanager',
|
||||||
namespace: $._config.namespace,
|
namespace: am.config.namespace,
|
||||||
labels: $._config.alertmanager.labels,
|
labels: am.config.commonLabels,
|
||||||
},
|
},
|
||||||
spec: {
|
spec: {
|
||||||
selector: {
|
selector: {
|
||||||
matchLabels: {
|
matchLabels: {
|
||||||
alertmanager: $._config.alertmanager.name,
|
alertmanager: am.config.name,
|
||||||
} + $._config.alertmanager.selectorLabels,
|
} + am.config.selectorLabels,
|
||||||
},
|
},
|
||||||
endpoints: [
|
endpoints: [
|
||||||
{ port: 'web', interval: '30s' },
|
{ port: 'web', interval: '30s' },
|
||||||
@ -138,21 +138,22 @@
|
|||||||
apiVersion: 'monitoring.coreos.com/v1',
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
kind: 'Alertmanager',
|
kind: 'Alertmanager',
|
||||||
metadata: {
|
metadata: {
|
||||||
name: $._config.alertmanager.name,
|
name: am.config.name,
|
||||||
namespace: $._config.namespace,
|
namespace: am.config.namespace,
|
||||||
labels: {
|
labels: {
|
||||||
alertmanager: $._config.alertmanager.name,
|
alertmanager: am.config.name,
|
||||||
} + $._config.alertmanager.labels,
|
} + am.config.commonLabels,
|
||||||
},
|
},
|
||||||
spec: {
|
spec: {
|
||||||
replicas: $._config.alertmanager.replicas,
|
replicas: am.config.replicas,
|
||||||
version: $._config.versions.alertmanager,
|
version: am.config.version,
|
||||||
image: $._config.imageRepos.alertmanager + ':' + $._config.versions.alertmanager,
|
image: am.config.image,
|
||||||
podMetadata: {
|
podMetadata: {
|
||||||
labels: $._config.alertmanager.labels,
|
labels: am.config.commonLabels,
|
||||||
},
|
},
|
||||||
|
resources: am.config.resources,
|
||||||
nodeSelector: { 'kubernetes.io/os': 'linux' },
|
nodeSelector: { 'kubernetes.io/os': 'linux' },
|
||||||
serviceAccountName: 'alertmanager-' + $._config.alertmanager.name,
|
serviceAccountName: 'alertmanager-' + am.config.name,
|
||||||
securityContext: {
|
securityContext: {
|
||||||
runAsUser: 1000,
|
runAsUser: 1000,
|
||||||
runAsNonRoot: true,
|
runAsNonRoot: true,
|
||||||
@ -160,5 +161,4 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
local kubeRbacProxyContainer = import './kube-rbac-proxy/containerMixin.libsonnet';
|
local kubeRbacProxyContainer = import './kube-rbac-proxy/containerMixin.libsonnet';
|
||||||
|
|
||||||
local nodeExporter = import './node-exporter/node-exporter.libsonnet';
|
local nodeExporter = import './node-exporter/node-exporter.libsonnet';
|
||||||
|
local alertmanager = import './alertmanager/alertmanager.libsonnet';
|
||||||
|
|
||||||
(import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') +
|
(import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') +
|
||||||
(import './kube-state-metrics/kube-state-metrics.libsonnet') +
|
(import './kube-state-metrics/kube-state-metrics.libsonnet') +
|
||||||
(import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-state-metrics-mixin/mixin.libsonnet') +
|
(import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-state-metrics-mixin/mixin.libsonnet') +
|
||||||
(import 'github.com/prometheus/node_exporter/docs/node-mixin/mixin.libsonnet') +
|
(import 'github.com/prometheus/node_exporter/docs/node-mixin/mixin.libsonnet') +
|
||||||
(import './blackbox-exporter/blackbox-exporter.libsonnet') +
|
(import './blackbox-exporter/blackbox-exporter.libsonnet') +
|
||||||
(import './alertmanager/alertmanager.libsonnet') +
|
|
||||||
(import 'github.com/prometheus/alertmanager/doc/alertmanager-mixin/mixin.libsonnet') +
|
(import 'github.com/prometheus/alertmanager/doc/alertmanager-mixin/mixin.libsonnet') +
|
||||||
(import 'github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator/prometheus-operator.libsonnet') +
|
(import 'github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator/prometheus-operator.libsonnet') +
|
||||||
(import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') +
|
(import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') +
|
||||||
@ -23,6 +23,12 @@ local nodeExporter = import './node-exporter/node-exporter.libsonnet';
|
|||||||
version: '1.0.1',
|
version: '1.0.1',
|
||||||
image: 'quay.io/prometheus/node-exporter:v1.0.1',
|
image: 'quay.io/prometheus/node-exporter:v1.0.1',
|
||||||
}),
|
}),
|
||||||
|
alertmanager: alertmanager({
|
||||||
|
name: 'main',
|
||||||
|
namespace: $._config.namespace,
|
||||||
|
version: '0.21.0',
|
||||||
|
image: 'quay.io/prometheus/alertmanager:v0.21.0',
|
||||||
|
}),
|
||||||
kubePrometheus+:: {
|
kubePrometheus+:: {
|
||||||
namespace: {
|
namespace: {
|
||||||
apiVersion: 'v1',
|
apiVersion: 'v1',
|
||||||
|
|||||||
@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: alert-router
|
app.kubernetes.io/component: alert-router
|
||||||
app.kubernetes.io/name: alertmanager
|
app.kubernetes.io/name: alertmanager
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: v0.21.0
|
app.kubernetes.io/version: 0.21.0
|
||||||
name: main
|
name: main
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
@ -18,11 +18,12 @@ spec:
|
|||||||
app.kubernetes.io/component: alert-router
|
app.kubernetes.io/component: alert-router
|
||||||
app.kubernetes.io/name: alertmanager
|
app.kubernetes.io/name: alertmanager
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: v0.21.0
|
app.kubernetes.io/version: 0.21.0
|
||||||
replicas: 3
|
replicas: 3
|
||||||
|
resources: {}
|
||||||
securityContext:
|
securityContext:
|
||||||
fsGroup: 2000
|
fsGroup: 2000
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
runAsUser: 1000
|
runAsUser: 1000
|
||||||
serviceAccountName: alertmanager-main
|
serviceAccountName: alertmanager-main
|
||||||
version: v0.21.0
|
version: 0.21.0
|
||||||
|
|||||||
@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: alert-router
|
app.kubernetes.io/component: alert-router
|
||||||
app.kubernetes.io/name: alertmanager
|
app.kubernetes.io/name: alertmanager
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: v0.21.0
|
app.kubernetes.io/version: 0.21.0
|
||||||
name: alertmanager-main
|
name: alertmanager-main
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
stringData:
|
stringData:
|
||||||
|
|||||||
@ -6,7 +6,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: alert-router
|
app.kubernetes.io/component: alert-router
|
||||||
app.kubernetes.io/name: alertmanager
|
app.kubernetes.io/name: alertmanager
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: v0.21.0
|
app.kubernetes.io/version: 0.21.0
|
||||||
name: alertmanager-main
|
name: alertmanager-main
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@ -6,6 +6,6 @@ metadata:
|
|||||||
app.kubernetes.io/component: alert-router
|
app.kubernetes.io/component: alert-router
|
||||||
app.kubernetes.io/name: alertmanager
|
app.kubernetes.io/name: alertmanager
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: v0.21.0
|
app.kubernetes.io/version: 0.21.0
|
||||||
name: alertmanager-main
|
name: alertmanager-main
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|||||||
@ -5,7 +5,7 @@ metadata:
|
|||||||
app.kubernetes.io/component: alert-router
|
app.kubernetes.io/component: alert-router
|
||||||
app.kubernetes.io/name: alertmanager
|
app.kubernetes.io/name: alertmanager
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
app.kubernetes.io/version: v0.21.0
|
app.kubernetes.io/version: 0.21.0
|
||||||
name: alertmanager
|
name: alertmanager
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user