Skip to content

Commit 8384fab

Browse files
authored
Merge pull request #4666 from pvickery-ParamountCommerce/master
Include labelSelector for affinity and topologySpreadConstraints
2 parents fe2924b + 844bab3 commit 8384fab

File tree

4 files changed

+104
-2
lines changed

4 files changed

+104
-2
lines changed

charts/external-dns/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2323
- Ability to configure `imagePullSecrets` via helm `global` value ([#4667](https://github.com/kubernetes-sigs/external-dns/pull/4667)) _@jkroepke_
2424
- Added options to configure `labelFilter` and `managedRecordTypes` via dedicated helm values ([#4849](https://github.com/kubernetes-sigs/external-dns/pull/4849)) _@abaguas_
2525

26+
### Fixed
27+
28+
- Fixed automatic addition of pod selector labels to `affinity` and `topologySpreadConstraints` if not defined. _@pvickery-ParamountCommerce_
29+
2630
## [v1.15.0] - 2023-09-10
2731

2832
### Changed

charts/external-dns/ci/ci-values.yaml

+32
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,35 @@ labelFilter: foo=bar
22
managedRecordTypes: []
33
provider:
44
name: inmemory
5+
affinity:
6+
podAffinity:
7+
preferredDuringSchedulingIgnoredDuringExecution:
8+
- weight: 100
9+
podAffinityTerm:
10+
topologyKey: "kubernetes.io/hostname"
11+
labelSelector:
12+
matchExpressions:
13+
- key: app.kubernetes.io/name
14+
operator: In
15+
values:
16+
- test
17+
requiredDuringSchedulingIgnoredDuringExecution:
18+
- topologyKey: "kubernetes.io/hostname"
19+
podAntiAffinity:
20+
preferredDuringSchedulingIgnoredDuringExecution:
21+
- weight: 100
22+
podAffinityTerm:
23+
topologyKey: "kubernetes.io/hostname"
24+
requiredDuringSchedulingIgnoredDuringExecution:
25+
- topologyKey: "kubernetes.io/hostname"
26+
labelSelector:
27+
matchExpressions:
28+
- key: app.kubernetes.io/name
29+
operator: In
30+
values:
31+
- test
32+
33+
topologySpreadConstraints:
34+
- maxSkew: 1
35+
topologyKey: "topology.kubernetes.io/zone"
36+
whenUnsatisfiable: "ScheduleAnyway"

charts/external-dns/templates/_helpers.tpl

+9
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,12 @@ The image to use for optional webhook sidecar
9393
{{- printf "%s:%s" .repository .tag }}
9494
{{- end }}
9595
{{- end }}
96+
97+
{{/*
98+
The pod affinity default label Selector
99+
*/}}
100+
{{- define "external-dns.labelSelector" -}}
101+
labelSelector:
102+
matchLabels:
103+
{{ include "external-dns.selectorLabels" . | nindent 4 }}
104+
{{- end }}

charts/external-dns/templates/deployment.yaml

+59-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{{- $defaultSelector := (include "external-dns.labelSelector" $ ) | fromYaml -}}
12
{{- $providerName := tpl (include "external-dns.providerName" .) $ }}
23
apiVersion: apps/v1
34
kind: Deployment
@@ -203,11 +204,67 @@ spec:
203204
{{- end }}
204205
{{- with .Values.affinity }}
205206
affinity:
206-
{{- toYaml . | nindent 8 }}
207+
{{- with .podAffinity }}
208+
podAffinity:
209+
{{- with .preferredDuringSchedulingIgnoredDuringExecution }}
210+
preferredDuringSchedulingIgnoredDuringExecution:
211+
{{- range . }}
212+
- podAffinityTerm:
213+
{{- if dig "podAffinityTerm" "labelSelector" nil . }}
214+
{{- toYaml .podAffinityTerm | nindent 16 }}
215+
{{- else }}
216+
{{- (merge $defaultSelector .podAffinityTerm) | toYaml | nindent 16 }}
217+
{{- end }}
218+
weight: {{ .weight }}
219+
{{- end }}
220+
{{- end }}
221+
{{- with .requiredDuringSchedulingIgnoredDuringExecution }}
222+
requiredDuringSchedulingIgnoredDuringExecution:
223+
{{- range . }}
224+
{{- if dig "labelSelector" nil . }}
225+
- {{ toYaml . | indent 16 | trim }}
226+
{{- else }}
227+
- {{ (merge $defaultSelector .) | toYaml | indent 16 | trim }}
228+
{{- end }}
229+
{{- end }}
230+
{{- end }}
231+
{{- end }}
232+
{{- with .podAntiAffinity }}
233+
podAntiAffinity:
234+
{{- with .preferredDuringSchedulingIgnoredDuringExecution }}
235+
preferredDuringSchedulingIgnoredDuringExecution:
236+
{{- range . }}
237+
- podAffinityTerm:
238+
{{- if dig "podAffinityTerm" "labelSelector" nil . }}
239+
{{- toYaml .podAffinityTerm | nindent 16 }}
240+
{{- else }}
241+
{{- (merge $defaultSelector .podAffinityTerm) | toYaml | nindent 16 }}
242+
{{- end }}
243+
weight: {{ .weight }}
244+
{{- end }}
245+
{{- end }}
246+
{{- with .requiredDuringSchedulingIgnoredDuringExecution }}
247+
requiredDuringSchedulingIgnoredDuringExecution:
248+
{{- range . }}
249+
{{- if dig "labelSelector" nil . }}
250+
- {{ toYaml . | indent 16 | trim }}
251+
{{- else }}
252+
- {{ (merge $defaultSelector .) | toYaml | indent 16 | trim }}
253+
{{- end }}
254+
{{- end }}
255+
{{- end }}
256+
{{- end }}
207257
{{- end }}
208258
{{- with .Values.topologySpreadConstraints }}
209259
topologySpreadConstraints:
210-
{{- toYaml . | nindent 8 }}
260+
{{- range . }}
261+
- {{ toYaml . | nindent 10 | trim }}
262+
{{- if not (hasKey . "labelSelector") }}
263+
labelSelector:
264+
matchLabels:
265+
{{- include "external-dns.selectorLabels" $ | nindent 12 }}
266+
{{- end }}
267+
{{- end }}
211268
{{- end }}
212269
{{- with .Values.tolerations }}
213270
tolerations:

0 commit comments

Comments
 (0)