Merge pull request #1095 from dgrisonnet/prometheus-adapter-ha

Make prometheus-adapter highly-available
This commit is contained in:
Paweł Krupa
2021-04-22 12:00:39 +02:00
committed by GitHub
3 changed files with 29 additions and 16 deletions

View File

@@ -12,18 +12,18 @@
podAntiAffinity: 'soft', podAntiAffinity: 'soft',
podAntiAffinityTopologyKey: 'kubernetes.io/hostname', podAntiAffinityTopologyKey: 'kubernetes.io/hostname',
}, },
prometheusAdapter+: {
podAntiAffinity: 'soft',
podAntiAffinityTopologyKey: 'kubernetes.io/hostname',
},
}, },
local antiaffinity(key, values, namespace, type, topologyKey) = { local antiaffinity(labelSelector, namespace, type, topologyKey) = {
local podAffinityTerm = { local podAffinityTerm = {
namespaces: [namespace], namespaces: [namespace],
topologyKey: topologyKey, topologyKey: topologyKey,
labelSelector: { labelSelector: {
matchExpressions: [{ matchLabels: labelSelector,
key: key,
operator: 'In',
values: values,
}],
}, },
}, },
@@ -45,8 +45,7 @@
alertmanager+: { alertmanager+: {
spec+: spec+:
antiaffinity( antiaffinity(
'alertmanager', $.alertmanager.config.selectorLabels,
[$.values.alertmanager.name],
$.values.common.namespace, $.values.common.namespace,
$.values.alertmanager.podAntiAffinity, $.values.alertmanager.podAntiAffinity,
$.values.alertmanager.podAntiAffinityTopologyKey, $.values.alertmanager.podAntiAffinityTopologyKey,
@@ -58,8 +57,7 @@
prometheus+: { prometheus+: {
spec+: spec+:
antiaffinity( antiaffinity(
'prometheus', $.prometheus.config.selectorLabels,
[$.values.prometheus.name],
$.values.common.namespace, $.values.common.namespace,
$.values.prometheus.podAntiAffinity, $.values.prometheus.podAntiAffinity,
$.values.prometheus.podAntiAffinityTopologyKey, $.values.prometheus.podAntiAffinityTopologyKey,
@@ -73,8 +71,7 @@
template+: { template+: {
spec+: spec+:
antiaffinity( antiaffinity(
'app.kubernetes.io/name', $.blackboxExporter.config.selectorLabels,
['blackbox-exporter'],
$.values.common.namespace, $.values.common.namespace,
$.values.blackboxExporter.podAntiAffinity, $.values.blackboxExporter.podAntiAffinity,
$.values.blackboxExporter.podAntiAffinityTopologyKey, $.values.blackboxExporter.podAntiAffinityTopologyKey,
@@ -84,4 +81,19 @@
}, },
}, },
prometheusAdapter+: {
deployment+: {
spec+: {
template+: {
spec+:
antiaffinity(
$.prometheusAdapter.config.selectorLabels,
$.values.common.namespace,
$.values.prometheusAdapter.podAntiAffinity,
$.values.prometheusAdapter.podAntiAffinityTopologyKey,
),
},
},
},
},
} }

View File

@@ -8,6 +8,7 @@ local defaults = {
requests: { cpu: '102m', memory: '180Mi' }, requests: { cpu: '102m', memory: '180Mi' },
limits: { cpu: '250m', memory: '180Mi' }, limits: { cpu: '250m', memory: '180Mi' },
}, },
replicas: 2,
listenAddress: '127.0.0.1', listenAddress: '127.0.0.1',
port: 9100, port: 9100,
commonLabels:: { commonLabels:: {
@@ -162,12 +163,12 @@ function(params) {
labels: pa._config.commonLabels, labels: pa._config.commonLabels,
}, },
spec: { spec: {
replicas: 1, replicas: pa._config.replicas,
selector: { matchLabels: pa._config.selectorLabels }, selector: { matchLabels: pa._config.selectorLabels },
strategy: { strategy: {
rollingUpdate: { rollingUpdate: {
maxSurge: 1, maxSurge: 1,
maxUnavailable: 0, maxUnavailable: 1,
}, },
}, },
template: { template: {

View File

@@ -9,7 +9,7 @@ metadata:
name: prometheus-adapter name: prometheus-adapter
namespace: monitoring namespace: monitoring
spec: spec:
replicas: 1 replicas: 2
selector: selector:
matchLabels: matchLabels:
app.kubernetes.io/component: metrics-adapter app.kubernetes.io/component: metrics-adapter
@@ -18,7 +18,7 @@ spec:
strategy: strategy:
rollingUpdate: rollingUpdate:
maxSurge: 1 maxSurge: 1
maxUnavailable: 0 maxUnavailable: 1
template: template:
metadata: metadata:
labels: labels: