addons/anti-affinity: Support soft/hard podAntiAffinity and topologyKey

This commit is contained in:
Maxime Brunet 2021-02-22 16:23:02 -08:00
parent f039fc94cf
commit 32bfeea94f
No known key found for this signature in database
GPG Key ID: 757B11B65F872567

View File

@ -1,38 +1,69 @@
{ {
local antiaffinity(key, values, namespace) = { values+:: {
affinity: { alertmanager+: {
podAntiAffinity: { podAntiAffinity: 'soft',
preferredDuringSchedulingIgnoredDuringExecution: [ podAntiAffinityTopologyKey: 'kubernetes.io/hostname',
{ },
weight: 100, prometheus+: {
podAffinityTerm: { podAntiAffinity: 'soft',
namespaces: [namespace], podAntiAffinityTopologyKey: 'kubernetes.io/hostname',
topologyKey: 'kubernetes.io/hostname', },
labelSelector: { blackboxExporter+: {
matchExpressions: [{ podAntiAffinity: 'soft',
key: key, podAntiAffinityTopologyKey: 'kubernetes.io/hostname',
operator: 'In', },
values: values, },
}],
}, 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+: {
alertmanager+: { alertmanager+: {
spec+: 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+: {
prometheus+: { prometheus+: {
spec+: 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+: { spec+: {
template+: { template+: {
spec+: 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,
),
}, },
}, },
}, },