Skip to content
Snippets Groups Projects
Unverified Commit 32bfeea9 authored by Maxime Brunet's avatar Maxime Brunet
Browse files

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

parent f039fc94
No related branches found
No related tags found
No related merge requests found
{
local antiaffinity(key, values, namespace) = {
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: {
preferredDuringSchedulingIgnoredDuringExecution: [
{
weight: 100,
podAffinityTerm: {
namespaces: [namespace],
topologyKey: 'kubernetes.io/hostname',
labelSelector: {
matchExpressions: [{
key: key,
operator: 'In',
values: values,
}],
},
},
},
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,
),
},
},
},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment