Set per-controller reconcile concurrency defaults and remove --default-max-concurrent-reconciles (#4670)

This commit is contained in:
Nikola Jokic
2026-09-21 11:32:52 +02:00
committed by GitHub
parent c2104a0b72
commit 68e4cfeea5
9 changed files with 166 additions and 113 deletions
@@ -363,6 +363,10 @@ func TestTemplate_ControllerDeployment_Defaults(t *testing.T) {
"--auto-scaling-runner-set-only",
"--log-level=debug",
"--log-format=text",
"--autoscaling-runner-set-max-concurrent-reconciles=2",
"--autoscaling-listener-max-concurrent-reconciles=2",
"--ephemeral-runner-set-max-concurrent-reconciles=2",
"--ephemeral-runner-max-concurrent-reconciles=4",
"--metrics-addr=0",
"--listener-metrics-addr=0",
"--listener-metrics-endpoint=",
@@ -514,6 +518,10 @@ func TestTemplate_ControllerDeployment_Customize(t *testing.T) {
"--auto-scaler-image-pull-secrets=dockerhub",
"--log-level=info",
"--log-format=json",
"--autoscaling-runner-set-max-concurrent-reconciles=2",
"--autoscaling-listener-max-concurrent-reconciles=2",
"--ephemeral-runner-set-max-concurrent-reconciles=2",
"--ephemeral-runner-max-concurrent-reconciles=4",
"--listener-metrics-addr=0",
"--listener-metrics-endpoint=",
"--metrics-addr=0",
@@ -641,6 +649,10 @@ func TestTemplate_EnableLeaderElection(t *testing.T) {
"--leader-election-id=test-arc-gha-rs-controller",
"--log-level=debug",
"--log-format=text",
"--autoscaling-runner-set-max-concurrent-reconciles=2",
"--autoscaling-listener-max-concurrent-reconciles=2",
"--ephemeral-runner-set-max-concurrent-reconciles=2",
"--ephemeral-runner-max-concurrent-reconciles=4",
"--listener-metrics-addr=0",
"--listener-metrics-endpoint=",
"--metrics-addr=0",
@@ -681,6 +693,10 @@ func TestTemplate_ControllerDeployment_ForwardImagePullSecrets(t *testing.T) {
"--auto-scaler-image-pull-secrets=ghcr",
"--log-level=debug",
"--log-format=text",
"--autoscaling-runner-set-max-concurrent-reconciles=2",
"--autoscaling-listener-max-concurrent-reconciles=2",
"--ephemeral-runner-set-max-concurrent-reconciles=2",
"--ephemeral-runner-max-concurrent-reconciles=4",
"--listener-metrics-addr=0",
"--listener-metrics-endpoint=",
"--metrics-addr=0",
@@ -770,6 +786,10 @@ func TestTemplate_ControllerDeployment_WatchSingleNamespace(t *testing.T) {
"--log-level=debug",
"--log-format=text",
"--watch-single-namespace=demo",
"--autoscaling-runner-set-max-concurrent-reconciles=2",
"--autoscaling-listener-max-concurrent-reconciles=2",
"--ephemeral-runner-set-max-concurrent-reconciles=2",
"--ephemeral-runner-max-concurrent-reconciles=4",
"--listener-metrics-addr=0",
"--listener-metrics-endpoint=",
"--metrics-addr=0",
@@ -801,30 +821,49 @@ func TestTemplate_ControllerDeployment_MaxConcurrentReconciles(t *testing.T) {
releaseName := "test-arc"
namespaceName := "test-" + strings.ToLower(random.UniqueID())
options := &helm.Options{
Logger: logger.Discard,
SetValues: map[string]string{
"flags.defaultMaxConcurrentReconciles": "4",
"flags.autoscalingRunnerSetMaxConcurrentReconciles": "3",
"flags.autoscalingListenerMaxConcurrentReconciles": "5",
"flags.ephemeralRunnerSetMaxConcurrentReconciles": "6",
"flags.ephemeralRunnerMaxConcurrentReconciles": "20",
},
KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
}
t.Run("every flag renders by default", func(t *testing.T) {
options := &helm.Options{
Logger: logger.Discard,
KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
}
output := helm.RenderTemplateContext(t, t.Context(), options, helmChartPath, releaseName, []string{"templates/deployment.yaml"})
output := helm.RenderTemplateContext(t, t.Context(), options, helmChartPath, releaseName, []string{"templates/deployment.yaml"})
var deployment appsv1.Deployment
helm.UnmarshalK8SYaml(t, output, &deployment)
var deployment appsv1.Deployment
helm.UnmarshalK8SYaml(t, output, &deployment)
assert.Len(t, deployment.Spec.Template.Spec.Containers, 1)
args := deployment.Spec.Template.Spec.Containers[0].Args
assert.Contains(t, args, "--default-max-concurrent-reconciles=4")
assert.Contains(t, args, "--autoscaling-runner-set-max-concurrent-reconciles=3")
assert.Contains(t, args, "--autoscaling-listener-max-concurrent-reconciles=5")
assert.Contains(t, args, "--ephemeral-runner-set-max-concurrent-reconciles=6")
assert.Contains(t, args, "--ephemeral-runner-max-concurrent-reconciles=20")
require.Len(t, deployment.Spec.Template.Spec.Containers, 1)
args := deployment.Spec.Template.Spec.Containers[0].Args
assert.Contains(t, args, "--autoscaling-runner-set-max-concurrent-reconciles=2")
assert.Contains(t, args, "--autoscaling-listener-max-concurrent-reconciles=2")
assert.Contains(t, args, "--ephemeral-runner-set-max-concurrent-reconciles=2")
assert.Contains(t, args, "--ephemeral-runner-max-concurrent-reconciles=4")
})
t.Run("every flag renders when configured", func(t *testing.T) {
options := &helm.Options{
Logger: logger.Discard,
SetValues: map[string]string{
"flags.autoscalingRunnerSetMaxConcurrentReconciles": "3",
"flags.autoscalingListenerMaxConcurrentReconciles": "5",
"flags.ephemeralRunnerSetMaxConcurrentReconciles": "6",
"flags.ephemeralRunnerMaxConcurrentReconciles": "20",
},
KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
}
output := helm.RenderTemplateContext(t, t.Context(), options, helmChartPath, releaseName, []string{"templates/deployment.yaml"})
var deployment appsv1.Deployment
helm.UnmarshalK8SYaml(t, output, &deployment)
require.Len(t, deployment.Spec.Template.Spec.Containers, 1)
args := deployment.Spec.Template.Spec.Containers[0].Args
assert.Contains(t, args, "--autoscaling-runner-set-max-concurrent-reconciles=3")
assert.Contains(t, args, "--autoscaling-listener-max-concurrent-reconciles=5")
assert.Contains(t, args, "--ephemeral-runner-set-max-concurrent-reconciles=6")
assert.Contains(t, args, "--ephemeral-runner-max-concurrent-reconciles=20")
})
}
func TestTemplate_ControllerContainerEnvironmentVariables(t *testing.T) {