{{/* vim: set filetype=mustache: */}} {{/* # Copyright © 2020 Bitnami, Orange # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. */}} {{/* Return a soft nodeAffinity definition {{ include "common.affinities.nodes.soft" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} */}} {{- define "common.affinities.nodes.soft" -}} preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: {{ .key }} operator: In values: {{- range .values }} - {{ . }} {{- end }} weight: 1 {{- end -}} {{/* Return a hard nodeAffinity definition {{ include "common.affinities.nodes.hard" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} */}} {{- define "common.affinities.nodes.hard" -}} requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: {{ .key }} operator: In values: {{- range .values }} - {{ . }} {{- end }} {{- end -}} {{/* Return a nodeAffinity definition {{ include "common.affinities.nodes" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} */}} {{- define "common.affinities.nodes" -}} {{- if eq .type "soft" }} {{- include "common.affinities.nodes.soft" . -}} {{- else if eq .type "hard" }} {{- include "common.affinities.nodes.hard" . -}} {{- end -}} {{- end -}} {{/* Return a soft podAffinity/podAntiAffinity definition {{ include "common.affinities.pods.soft" (dict "component" "FOO" "context" $) -}} */}} {{- define "common.affinities.pods.soft" -}} {{- $component := default "" .component -}} preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchLabels: {{- (include "common.matchLabels" (dict "dot" .context "matchLabels" (dict))) | nindent 10 }} {{- if not (empty $component) }} {{ printf "app.kubernetes.io/component: %s" $component }} {{- end }} namespaces: - {{ include "common.namespace" .context }} topologyKey: kubernetes.io/hostname weight: 1 {{- end -}} {{/* Return a hard podAffinity/podAntiAffinity definition {{ include "common.affinities.pods.hard" (dict "component" "FOO" "context" $) -}} */}} {{- define "common.affinities.pods.hard" -}} {{- $component := default "" .component -}} requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: {{- (include "common.matchLabels" (dict "dot" .context "matchLabels" (dict))) | nindent 8 }} {{- if not (empty $component) }} {{ printf "app.kubernetes.io/component: %s" $component }} {{- end }} namespaces: - {{ include "common.namespace" .context }} topologyKey: kubernetes.io/hostname {{- end -}} {{/* Return a podAffinity/podAntiAffinity definition {{ include "common.affinities.pods" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} */}} {{- define "common.affinities.pods" -}} {{- if eq .type "soft" }} {{- include "common.affinities.pods.soft" . -}} {{- else if eq .type "hard" }} {{- include "common.affinities.pods.hard" . -}} {{- end -}} {{- end -}}