{{/* affinity - https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ */}} {{- define "nodeAffinity" }} nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: {{- include "nodeAffinityRequiredDuringScheduling" . }} preferredDuringSchedulingIgnoredDuringExecution: {{- include "nodeAffinityPreferredDuringScheduling" . }} {{- end }} {{- define "nodeAffinityRequiredDuringScheduling" }} nodeSelectorTerms: - matchExpressions: - key: beta.kubernetes.io/arch operator: In values: {{- range $key, $val := .Values.global.arch }} {{- if gt ($val | int) 0 }} - {{ $key | quote }} {{- end }} {{- end }} {{- $nodeSelector := default .Values.global.defaultNodeSelector .Values.nodeSelector -}} {{- range $key, $val := $nodeSelector }} - key: {{ $key }} operator: In values: - {{ $val | quote }} {{- end }} {{- end }} {{- define "nodeAffinityPreferredDuringScheduling" }} {{- range $key, $val := .Values.global.arch }} {{- if gt ($val | int) 0 }} - weight: {{ $val | int }} preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - {{ $key | quote }} {{- end }} {{- end }} {{- end }} {{- define "podAntiAffinity" }} {{- if or .Values.podAntiAffinityLabelSelector .Values.podAntiAffinityTermLabelSelector}} podAntiAffinity: {{- if .Values.podAntiAffinityLabelSelector }} requiredDuringSchedulingIgnoredDuringExecution: {{- include "podAntiAffinityRequiredDuringScheduling" . }} {{- end }} {{- if or .Values.podAntiAffinityTermLabelSelector}} preferredDuringSchedulingIgnoredDuringExecution: {{- include "podAntiAffinityPreferredDuringScheduling" . }} {{- end }} {{- end }} {{- end }} {{- define "podAntiAffinityRequiredDuringScheduling" }} {{- range $index, $item := .Values.podAntiAffinityLabelSelector }} - labelSelector: matchExpressions: - key: {{ $item.key }} operator: {{ $item.operator }} {{- if $item.values }} values: {{- $vals := split "," $item.values }} {{- range $i, $v := $vals }} - {{ $v | quote }} {{- end }} {{- end }} topologyKey: {{ $item.topologyKey }} {{- end }} {{- end }} {{- define "podAntiAffinityPreferredDuringScheduling" }} {{- range $index, $item := .Values.podAntiAffinityTermLabelSelector }} - podAffinityTerm: labelSelector: matchExpressions: - key: {{ $item.key }} operator: {{ $item.operator }} {{- if $item.values }} values: {{- $vals := split "," $item.values }} {{- range $i, $v := $vals }} - {{ $v | quote }} {{- end }} {{- end }} topologyKey: {{ $item.topologyKey }} weight: 100 {{- end }} {{- end }}