From 0b605c3383e6977fc142e0a3932c0478c1b82ce6 Mon Sep 17 00:00:00 2001 From: Steven Kriegler <61625851+justusbunsi@users.noreply.github.com> Date: Sat, 16 Jul 2022 06:05:38 +0200 Subject: [PATCH] Allow topologySpreadConstraints configuration (#14684) The default replica value is 16 (right now) which can lead to massive resource consumption on one node in smaller clusters. The idea for this addition is to allow users to specify how the pods (replicas) are being spread across the cluster. It gives more control over this Helm Release in smaller clusters where most worker nodes have taints. As this Kubernetes feature exists since Kubernetes 1.19 and is only useful for a replica count > 1, this was taken into account. --- helm/minio/templates/statefulset.yaml | 9 ++++++++- helm/minio/values.yaml | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/helm/minio/templates/statefulset.yaml b/helm/minio/templates/statefulset.yaml index 186ab8d09..4965899b1 100644 --- a/helm/minio/templates/statefulset.yaml +++ b/helm/minio/templates/statefulset.yaml @@ -1,6 +1,7 @@ {{- if eq .Values.mode "distributed" }} {{ $poolCount := .Values.pools | int }} {{ $nodeCount := .Values.replicas | int }} +{{ $replicas := mul $poolCount $nodeCount }} {{ $drivesPerNode := .Values.drivesPerNode | int }} {{ $scheme := "http" }} {{- if .Values.tls.enabled }} @@ -57,7 +58,7 @@ spec: type: {{ .Values.StatefulSetUpdate.updateStrategy }} podManagementPolicy: "Parallel" serviceName: {{ template "minio.fullname" . }}-svc - replicas: {{ mul $poolCount $nodeCount }} + replicas: {{ $replicas }} selector: matchLabels: app: {{ template "minio.name" . }} @@ -168,6 +169,12 @@ spec: {{- with .Values.tolerations }} tolerations: {{ toYaml . | indent 8 }} + {{- end }} + {{- if and (gt $replicas 1) (ge .Capabilities.KubeVersion.Major "1") (ge .Capabilities.KubeVersion.Minor "19") }} + {{- with .Values.topologySpreadConstraints }} + topologySpreadConstraints: +{{ toYaml . | indent 8 }} + {{- end }} {{- end }} volumes: - name: minio-user diff --git a/helm/minio/values.yaml b/helm/minio/values.yaml index e332445f8..bc4e57198 100644 --- a/helm/minio/values.yaml +++ b/helm/minio/values.yaml @@ -226,6 +226,7 @@ consoleIngress: nodeSelector: {} tolerations: [] affinity: {} +topologySpreadConstraints: [] ## Add stateful containers to have security context, if enabled MinIO will run as this ## user and group NOTE: securityContext is only enabled if persistence.enabled=true