Skip to content

Commit 47d27b9

Browse files
authored
🏜️ configurable max concurrent reconciles #844
configurable max concurrent reconciles
2 parents f3d5399 + 9ae5766 commit 47d27b9

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

cyclops-ctrl/cmd/main/main.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ func main() {
143143
templatesRepo,
144144
k8sClient,
145145
renderer,
146+
getMaxConcurrentReconciles(),
146147
telemetryClient,
147148
monitor,
148149
)).SetupWithManager(mgr); err != nil {
@@ -199,6 +200,20 @@ func getHelmWatchNamespace() string {
199200
return value
200201
}
201202

203+
func getMaxConcurrentReconciles() int {
204+
strValue := os.Getenv("MAX_CONCURRENT_RECONCILES")
205+
if strValue == "" {
206+
return 1
207+
}
208+
209+
value, err := strconv.Atoi(strValue)
210+
if err != nil {
211+
return 1
212+
}
213+
214+
return value
215+
}
216+
202217
func getCommitMessageTemplate() string {
203218
return os.Getenv("COMMIT_MESSAGE_TEMPLATE")
204219
}

cyclops-ctrl/internal/modulecontroller/module_controller.go

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ type ModuleReconciler struct {
5555
kubernetesClient k8sclient.IKubernetesClient
5656
renderer *render.Renderer
5757

58+
maxConcurrentReconciles int
59+
5860
telemetryClient telemetry.Client
5961
monitor prometheus.Monitor
6062
logger logr.Logger
@@ -66,18 +68,20 @@ func NewModuleReconciler(
6668
templatesRepo templaterepo.ITemplateRepo,
6769
kubernetesClient k8sclient.IKubernetesClient,
6870
renderer *render.Renderer,
71+
maxConcurrentReconciles int,
6972
telemetryClient telemetry.Client,
7073
monitor prometheus.Monitor,
7174
) *ModuleReconciler {
7275
return &ModuleReconciler{
73-
Client: client,
74-
Scheme: scheme,
75-
templatesRepo: templatesRepo,
76-
kubernetesClient: kubernetesClient,
77-
renderer: renderer,
78-
telemetryClient: telemetryClient,
79-
monitor: monitor,
80-
logger: ctrl.Log.WithName("reconciler"),
76+
Client: client,
77+
Scheme: scheme,
78+
templatesRepo: templatesRepo,
79+
kubernetesClient: kubernetesClient,
80+
renderer: renderer,
81+
telemetryClient: telemetryClient,
82+
maxConcurrentReconciles: maxConcurrentReconciles,
83+
monitor: monitor,
84+
logger: ctrl.Log.WithName("reconciler"),
8185
}
8286
}
8387

@@ -226,7 +230,10 @@ func (r *ModuleReconciler) SetupWithManager(mgr ctrl.Manager) error {
226230

227231
return ctrl.NewControllerManagedBy(mgr).
228232
For(&cyclopsv1alpha1.Module{}).
229-
WithOptions(controller.Options{RateLimiter: rateLimiter}).
233+
WithOptions(controller.Options{
234+
RateLimiter: rateLimiter,
235+
MaxConcurrentReconciles: r.maxConcurrentReconciles,
236+
}).
230237
Complete(r)
231238
}
232239

0 commit comments

Comments
 (0)