From 0006dd5eb1a3a24e91eba17ec5448f27aa0c9f16 Mon Sep 17 00:00:00 2001 From: Alexandre Chouinard Date: Fri, 12 Apr 2024 08:22:41 -0400 Subject: [PATCH] Add topologySpreadConstraint to gha-runner-scale-set-controller chart (#3405) --- .../templates/deployment.yaml | 4 ++++ .../tests/template_test.go | 10 ++++++++++ charts/gha-runner-scale-set-controller/values.yaml | 8 +++++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/charts/gha-runner-scale-set-controller/templates/deployment.yaml b/charts/gha-runner-scale-set-controller/templates/deployment.yaml index 2a32f525..e0dd8297 100644 --- a/charts/gha-runner-scale-set-controller/templates/deployment.yaml +++ b/charts/gha-runner-scale-set-controller/templates/deployment.yaml @@ -128,6 +128,10 @@ spec: affinity: {{- toYaml . | nindent 8 }} {{- end }} + {{- with .Values.topologySpreadConstraints }} + topologySpreadConstraints: + {{- toYaml . | nindent 8 }} + {{- end }} {{- with .Values.tolerations }} tolerations: {{- toYaml . | nindent 8 }} diff --git a/charts/gha-runner-scale-set-controller/tests/template_test.go b/charts/gha-runner-scale-set-controller/tests/template_test.go index e72e0e37..125ef0b0 100644 --- a/charts/gha-runner-scale-set-controller/tests/template_test.go +++ b/charts/gha-runner-scale-set-controller/tests/template_test.go @@ -345,6 +345,7 @@ func TestTemplate_ControllerDeployment_Defaults(t *testing.T) { assert.Len(t, deployment.Spec.Template.Spec.NodeSelector, 0) assert.Nil(t, deployment.Spec.Template.Spec.Affinity) + assert.Len(t, deployment.Spec.Template.Spec.TopologySpreadConstraints, 0) assert.Len(t, deployment.Spec.Template.Spec.Tolerations, 0) managerImage := "ghcr.io/actions/gha-runner-scale-set-controller:dev" @@ -424,6 +425,9 @@ func TestTemplate_ControllerDeployment_Customize(t *testing.T) { "tolerations[0].key": "foo", "affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].key": "foo", "affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].operator": "bar", + "topologySpreadConstraints[0].labelSelector.matchLabels.foo": "bar", + "topologySpreadConstraints[0].maxSkew": "1", + "topologySpreadConstraints[0].topologyKey": "foo", "priorityClassName": "test-priority-class", "flags.updateStrategy": "eventual", "flags.logLevel": "info", @@ -487,6 +491,11 @@ func TestTemplate_ControllerDeployment_Customize(t *testing.T) { assert.Equal(t, "foo", deployment.Spec.Template.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms[0].MatchExpressions[0].Key) assert.Equal(t, "bar", string(deployment.Spec.Template.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms[0].MatchExpressions[0].Operator)) + assert.Len(t, deployment.Spec.Template.Spec.TopologySpreadConstraints, 1) + assert.Equal(t, "bar", deployment.Spec.Template.Spec.TopologySpreadConstraints[0].LabelSelector.MatchLabels["foo"]) + assert.Equal(t, int32(1), deployment.Spec.Template.Spec.TopologySpreadConstraints[0].MaxSkew) + assert.Equal(t, "foo", deployment.Spec.Template.Spec.TopologySpreadConstraints[0].TopologyKey) + assert.Len(t, deployment.Spec.Template.Spec.Tolerations, 1) assert.Equal(t, "foo", deployment.Spec.Template.Spec.Tolerations[0].Key) @@ -745,6 +754,7 @@ func TestTemplate_ControllerDeployment_WatchSingleNamespace(t *testing.T) { assert.Len(t, deployment.Spec.Template.Spec.NodeSelector, 0) assert.Nil(t, deployment.Spec.Template.Spec.Affinity) + assert.Len(t, deployment.Spec.Template.Spec.TopologySpreadConstraints, 0) assert.Len(t, deployment.Spec.Template.Spec.Tolerations, 0) managerImage := "ghcr.io/actions/gha-runner-scale-set-controller:dev" diff --git a/charts/gha-runner-scale-set-controller/values.yaml b/charts/gha-runner-scale-set-controller/values.yaml index 43b79740..efd39958 100644 --- a/charts/gha-runner-scale-set-controller/values.yaml +++ b/charts/gha-runner-scale-set-controller/values.yaml @@ -72,6 +72,8 @@ tolerations: [] affinity: {} +topologySpreadConstraints: [] + # Mount volumes in the container. volumes: [] volumeMounts: [] @@ -81,9 +83,9 @@ volumeMounts: [] # PriorityClass: system-cluster-critical priorityClassName: "" -## If `metrics:` object is not provided, or commented out, the following flags -## will be applied the controller-manager and listener pods with empty values: -## `--metrics-addr`, `--listener-metrics-addr`, `--listener-metrics-endpoint`. +## If `metrics:` object is not provided, or commented out, the following flags +## will be applied the controller-manager and listener pods with empty values: +## `--metrics-addr`, `--listener-metrics-addr`, `--listener-metrics-endpoint`. ## This will disable metrics. ## ## To enable metrics, uncomment the following lines.