mirror of
https://github.com/prometheus-operator/kube-prometheus.git
synced 2025-11-01 08:31:02 +01:00
addons/anti-affinity: Support soft/hard podAntiAffinity and topologyKey
This commit is contained in:
parent
f039fc94cf
commit
32bfeea94f
@ -1,38 +1,69 @@
|
||||
{
|
||||
local antiaffinity(key, values, namespace) = {
|
||||
affinity: {
|
||||
podAntiAffinity: {
|
||||
preferredDuringSchedulingIgnoredDuringExecution: [
|
||||
{
|
||||
weight: 100,
|
||||
podAffinityTerm: {
|
||||
namespaces: [namespace],
|
||||
topologyKey: 'kubernetes.io/hostname',
|
||||
labelSelector: {
|
||||
matchExpressions: [{
|
||||
key: key,
|
||||
operator: 'In',
|
||||
values: values,
|
||||
}],
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
values+:: {
|
||||
alertmanager+: {
|
||||
podAntiAffinity: 'soft',
|
||||
podAntiAffinityTopologyKey: 'kubernetes.io/hostname',
|
||||
},
|
||||
prometheus+: {
|
||||
podAntiAffinity: 'soft',
|
||||
podAntiAffinityTopologyKey: 'kubernetes.io/hostname',
|
||||
},
|
||||
blackboxExporter+: {
|
||||
podAntiAffinity: 'soft',
|
||||
podAntiAffinityTopologyKey: 'kubernetes.io/hostname',
|
||||
},
|
||||
},
|
||||
|
||||
local antiaffinity(key, values, namespace, type, topologyKey) = {
|
||||
local podAffinityTerm = {
|
||||
namespaces: [namespace],
|
||||
topologyKey: topologyKey,
|
||||
labelSelector: {
|
||||
matchExpressions: [{
|
||||
key: key,
|
||||
operator: 'In',
|
||||
values: values,
|
||||
}],
|
||||
},
|
||||
},
|
||||
|
||||
affinity: {
|
||||
podAntiAffinity: if type == 'soft' then {
|
||||
preferredDuringSchedulingIgnoredDuringExecution: [{
|
||||
weight: 100,
|
||||
podAffinityTerm: podAffinityTerm,
|
||||
}],
|
||||
} else if type == 'hard' then {
|
||||
requiredDuringSchedulingIgnoredDuringExecution: [
|
||||
podAffinityTerm,
|
||||
],
|
||||
} else error 'podAntiAffinity must be either "soft" or "hard"',
|
||||
},
|
||||
},
|
||||
|
||||
alertmanager+: {
|
||||
alertmanager+: {
|
||||
spec+:
|
||||
antiaffinity('alertmanager', [$.values.alertmanager.name], $.values.common.namespace),
|
||||
antiaffinity(
|
||||
'alertmanager',
|
||||
[$.values.alertmanager.name],
|
||||
$.values.common.namespace,
|
||||
$.values.alertmanager.podAntiAffinity,
|
||||
$.values.alertmanager.podAntiAffinityTopologyKey,
|
||||
),
|
||||
},
|
||||
},
|
||||
|
||||
prometheus+: {
|
||||
prometheus+: {
|
||||
spec+:
|
||||
antiaffinity('prometheus', [$.values.prometheus.name], $.values.common.namespace),
|
||||
antiaffinity(
|
||||
'prometheus',
|
||||
[$.values.prometheus.name],
|
||||
$.values.common.namespace,
|
||||
$.values.prometheus.podAntiAffinity,
|
||||
$.values.prometheus.podAntiAffinityTopologyKey,
|
||||
),
|
||||
},
|
||||
},
|
||||
|
||||
@ -41,7 +72,13 @@
|
||||
spec+: {
|
||||
template+: {
|
||||
spec+:
|
||||
antiaffinity('app.kubernetes.io/name', ['blackbox-exporter'], $.values.common.namespace),
|
||||
antiaffinity(
|
||||
'app.kubernetes.io/name',
|
||||
['blackbox-exporter'],
|
||||
$.values.common.namespace,
|
||||
$.values.blackboxExporter.podAntiAffinity,
|
||||
$.values.blackboxExporter.podAntiAffinityTopologyKey,
|
||||
),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user