Skip to content

Commit 9744331

Browse files
authored
feat(charts): Add topologySpreadConstraint to whole stack
feat(charts): Add topologySpreadConstraint to whole stack
2 parents 856c5f7 + 875d3a1 commit 9744331

File tree

8 files changed

+163
-0
lines changed

8 files changed

+163
-0
lines changed

helm-charts/k8s-mediaserver/templates/jackett-resources.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,28 @@ spec:
115115
nodeSelector:
116116
{{- toYaml . | nindent 8 }}
117117
{{- end }}
118+
{{- if eq .Values.general.podDistribution "cluster" }}
119+
affinity:
120+
podAffinity:
121+
preferredDuringSchedulingIgnoredDuringExecution:
122+
- podAffinityTerm:
123+
labelSelector:
124+
matchExpressions:
125+
- key: app.kubernetes.io/instance
126+
operator: In
127+
values:
128+
- {{ .Release.Name }}
129+
topologyKey: "kubernetes.io/hostname"
130+
weight: 100
131+
{{- else if eq .Values.general.podDistribution "spread" }}
132+
topologySpreadConstraints:
133+
- maxSkew: 1
134+
topologyKey: "kubernetes.io/hostname"
135+
whenUnsatisfiable: "ScheduleAnyway"
136+
labelSelector:
137+
matchLabels:
138+
app.kubernetes.io/instance: {{ .Release.Name }}
139+
{{- end }}
118140
---
119141
### SERVICES
120142
apiVersion: v1

helm-charts/k8s-mediaserver/templates/plex-resources.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ metadata:
1818
labels:
1919
{{- include "k8s-mediaserver.labels" . | nindent 4 }}
2020
spec:
21+
strategy:
22+
type: Recreate
2123
replicas: {{ .Values.plex.replicaCount }}
2224
selector:
2325
matchLabels:
@@ -81,6 +83,28 @@ spec:
8183
nodeSelector:
8284
{{- toYaml . | nindent 8 }}
8385
{{- end }}
86+
{{- if eq .Values.general.podDistribution "cluster" }}
87+
affinity:
88+
podAffinity:
89+
preferredDuringSchedulingIgnoredDuringExecution:
90+
- podAffinityTerm:
91+
labelSelector:
92+
matchExpressions:
93+
- key: app.kubernetes.io/instance
94+
operator: In
95+
values:
96+
- {{ .Release.Name }}
97+
topologyKey: "kubernetes.io/hostname"
98+
weight: 100
99+
{{- else if eq .Values.general.podDistribution "spread" }}
100+
topologySpreadConstraints:
101+
- maxSkew: 1
102+
topologyKey: "kubernetes.io/hostname"
103+
whenUnsatisfiable: "ScheduleAnyway"
104+
labelSelector:
105+
matchLabels:
106+
app.kubernetes.io/instance: {{ .Release.Name }}
107+
{{- end }}
84108
---
85109
### SERVICE
86110
apiVersion: v1

helm-charts/k8s-mediaserver/templates/prowlarr-resources.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ metadata:
3636
labels:
3737
{{- include "k8s-mediaserver.labels" . | nindent 4 }}
3838
spec:
39+
strategy:
40+
type: Recreate
3941
replicas: 1
4042
selector:
4143
matchLabels:
@@ -115,6 +117,28 @@ spec:
115117
nodeSelector:
116118
{{- toYaml . | nindent 8 }}
117119
{{- end }}
120+
{{- if eq .Values.general.podDistribution "cluster" }}
121+
affinity:
122+
podAffinity:
123+
preferredDuringSchedulingIgnoredDuringExecution:
124+
- podAffinityTerm:
125+
labelSelector:
126+
matchExpressions:
127+
- key: app.kubernetes.io/instance
128+
operator: In
129+
values:
130+
- {{ .Release.Name }}
131+
topologyKey: "kubernetes.io/hostname"
132+
weight: 100
133+
{{- else if eq .Values.general.podDistribution "spread" }}
134+
topologySpreadConstraints:
135+
- maxSkew: 1
136+
topologyKey: "kubernetes.io/hostname"
137+
whenUnsatisfiable: "ScheduleAnyway"
138+
labelSelector:
139+
matchLabels:
140+
app.kubernetes.io/instance: {{ .Release.Name }}
141+
{{- end }}
118142
---
119143
### SERVICES
120144
apiVersion: v1

helm-charts/k8s-mediaserver/templates/radarr-resources.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,28 @@ spec:
124124
nodeSelector:
125125
{{- toYaml . | nindent 8 }}
126126
{{- end }}
127+
{{- if eq .Values.general.podDistribution "cluster" }}
128+
affinity:
129+
podAffinity:
130+
preferredDuringSchedulingIgnoredDuringExecution:
131+
- podAffinityTerm:
132+
labelSelector:
133+
matchExpressions:
134+
- key: app.kubernetes.io/instance
135+
operator: In
136+
values:
137+
- {{ .Release.Name }}
138+
topologyKey: "kubernetes.io/hostname"
139+
weight: 100
140+
{{- else if eq .Values.general.podDistribution "spread" }}
141+
topologySpreadConstraints:
142+
- maxSkew: 1
143+
topologyKey: "kubernetes.io/hostname"
144+
whenUnsatisfiable: "ScheduleAnyway"
145+
labelSelector:
146+
matchLabels:
147+
app.kubernetes.io/instance: {{ .Release.Name }}
148+
{{- end }}
127149
---
128150
### SERVICES
129151
apiVersion: v1

helm-charts/k8s-mediaserver/templates/sabnzbd-resources.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,8 @@ metadata:
339339
labels:
340340
{{- include "k8s-mediaserver.labels" . | nindent 4 }}
341341
spec:
342+
strategy:
343+
type: Recreate
342344
replicas: 1
343345
selector:
344346
matchLabels:
@@ -424,6 +426,28 @@ spec:
424426
nodeSelector:
425427
{{- toYaml . | nindent 8 }}
426428
{{- end }}
429+
{{- if eq .Values.general.podDistribution "cluster" }}
430+
affinity:
431+
podAffinity:
432+
preferredDuringSchedulingIgnoredDuringExecution:
433+
- podAffinityTerm:
434+
labelSelector:
435+
matchExpressions:
436+
- key: app.kubernetes.io/instance
437+
operator: In
438+
values:
439+
- {{ .Release.Name }}
440+
topologyKey: "kubernetes.io/hostname"
441+
weight: 100
442+
{{- else if eq .Values.general.podDistribution "spread" }}
443+
topologySpreadConstraints:
444+
- maxSkew: 1
445+
topologyKey: "kubernetes.io/hostname"
446+
whenUnsatisfiable: "ScheduleAnyway"
447+
labelSelector:
448+
matchLabels:
449+
app.kubernetes.io/instance: {{ .Release.Name }}
450+
{{- end }}
427451
---
428452
### SERVICES
429453
apiVersion: v1

helm-charts/k8s-mediaserver/templates/sonarr-resources.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,28 @@ spec:
123123
nodeSelector:
124124
{{- toYaml . | nindent 8 }}
125125
{{- end }}
126+
{{- if eq .Values.general.podDistribution "cluster" }}
127+
affinity:
128+
podAffinity:
129+
preferredDuringSchedulingIgnoredDuringExecution:
130+
- podAffinityTerm:
131+
labelSelector:
132+
matchExpressions:
133+
- key: app.kubernetes.io/instance
134+
operator: In
135+
values:
136+
- {{ .Release.Name }}
137+
topologyKey: "kubernetes.io/hostname"
138+
weight: 100
139+
{{- else if eq .Values.general.podDistribution "spread" }}
140+
topologySpreadConstraints:
141+
- maxSkew: 1
142+
topologyKey: "kubernetes.io/hostname"
143+
whenUnsatisfiable: "ScheduleAnyway"
144+
labelSelector:
145+
matchLabels:
146+
app.kubernetes.io/instance: {{ .Release.Name }}
147+
{{- end }}
126148
---
127149
### SERVICES
128150
apiVersion: v1

helm-charts/k8s-mediaserver/templates/transmission-resources.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ metadata:
103103
labels:
104104
{{- include "k8s-mediaserver.labels" . | nindent 4 }}
105105
spec:
106+
strategy:
107+
type: Recreate
106108
replicas: 1
107109
selector:
108110
matchLabels:
@@ -191,6 +193,28 @@ spec:
191193
nodeSelector:
192194
{{- toYaml . | nindent 8 }}
193195
{{- end }}
196+
{{- if eq .Values.general.podDistribution "cluster" }}
197+
affinity:
198+
podAffinity:
199+
preferredDuringSchedulingIgnoredDuringExecution:
200+
- podAffinityTerm:
201+
labelSelector:
202+
matchExpressions:
203+
- key: app.kubernetes.io/instance
204+
operator: In
205+
values:
206+
- {{ .Release.Name }}
207+
topologyKey: "kubernetes.io/hostname"
208+
weight: 100
209+
{{- else if eq .Values.general.podDistribution "spread" }}
210+
topologySpreadConstraints:
211+
- maxSkew: 1
212+
topologyKey: "kubernetes.io/hostname"
213+
whenUnsatisfiable: "ScheduleAnyway"
214+
labelSelector:
215+
matchLabels:
216+
app.kubernetes.io/instance: {{ .Release.Name }}
217+
{{- end }}
194218
---
195219
### SERVICES
196220
apiVersion: v1

helm-charts/k8s-mediaserver/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ general:
66
ingress_host: k8s-mediaserver.k8s.test
77
plex_ingress_host: k8s-plex.k8s.test
88
image_tag: latest
9+
podDistribution: cluster # can be "spread" or "cluster"
910
#UID to run the process with
1011
puid: 1000
1112
#GID to run the process with

0 commit comments

Comments
 (0)