Skip to content

Commit e79df01

Browse files
Eytan AvisrorEytan Avisror
Eytan Avisror
authored and
Eytan Avisror
committed
Add max backoff flag for TargetGroupBinding reconciler
Allows control over max exponential backoff for reconciler, while keeping existing default values Signed-off-by: Eytan Avisror <[email protected]>
1 parent dde29f0 commit e79df01

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

controllers/elbv2/targetgroupbinding_controller.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@ package controllers
1919
import (
2020
"context"
2121
"fmt"
22+
"time"
23+
2224
"github.com/aws/aws-sdk-go/aws"
2325
"github.com/pkg/errors"
2426
corev1 "k8s.io/api/core/v1"
2527
"k8s.io/client-go/tools/record"
28+
"k8s.io/client-go/util/workqueue"
2629
"sigs.k8s.io/aws-load-balancer-controller/controllers/elbv2/eventhandlers"
2730
"sigs.k8s.io/aws-load-balancer-controller/pkg/config"
2831
"sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
@@ -55,7 +58,8 @@ func NewTargetGroupBindingReconciler(k8sClient client.Client, eventRecorder reco
5558
tgbResourceManager: tgbResourceManager,
5659
logger: logger,
5760

58-
maxConcurrentReconciles: config.TargetGroupBindingMaxConcurrentReconciles,
61+
maxConcurrentReconciles: config.TargetGroupBindingMaxConcurrentReconciles,
62+
maxExponentialBackoffDelay: config.TargetGroupBindingMaxExponentialBackoffDelay,
5963
}
6064
}
6165

@@ -67,7 +71,8 @@ type targetGroupBindingReconciler struct {
6771
tgbResourceManager targetgroupbinding.ResourceManager
6872
logger logr.Logger
6973

70-
maxConcurrentReconciles int
74+
maxConcurrentReconciles int
75+
maxExponentialBackoffDelay time.Duration
7176
}
7277

7378
// +kubebuilder:rbac:groups=elbv2.k8s.aws,resources=targetgroupbindings,verbs=get;list;watch;update;patch;create;delete
@@ -157,7 +162,9 @@ func (r *targetGroupBindingReconciler) SetupWithManager(ctx context.Context, mgr
157162
Watches(&source.Kind{Type: &corev1.Service{}}, svcEventHandler).
158163
Watches(&source.Kind{Type: &corev1.Endpoints{}}, epsEventsHandler).
159164
Watches(&source.Kind{Type: &corev1.Node{}}, nodeEventsHandler).
160-
WithOptions(controller.Options{MaxConcurrentReconciles: r.maxConcurrentReconciles}).
165+
WithOptions(controller.Options{
166+
MaxConcurrentReconciles: r.maxConcurrentReconciles,
167+
RateLimiter: workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, r.maxExponentialBackoffDelay)}).
161168
Complete(r)
162169
}
163170

pkg/config/controller_config.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package config
22

33
import (
4+
"time"
5+
46
"github.com/pkg/errors"
57
"github.com/spf13/pflag"
68
"k8s.io/apimachinery/pkg/util/sets"
@@ -9,16 +11,18 @@ import (
911
)
1012

1113
const (
12-
flagLogLevel = "log-level"
13-
flagK8sClusterName = "cluster-name"
14-
flagDefaultTags = "default-tags"
15-
flagExternalManagedTags = "external-managed-tags"
16-
flagServiceMaxConcurrentReconciles = "service-max-concurrent-reconciles"
17-
flagTargetGroupBindingMaxConcurrentReconciles = "targetgroupbinding-max-concurrent-reconciles"
18-
flagDefaultSSLPolicy = "default-ssl-policy"
19-
defaultLogLevel = "info"
20-
defaultMaxConcurrentReconciles = 3
21-
defaultSSLPolicy = "ELBSecurityPolicy-2016-08"
14+
flagLogLevel = "log-level"
15+
flagK8sClusterName = "cluster-name"
16+
flagDefaultTags = "default-tags"
17+
flagExternalManagedTags = "external-managed-tags"
18+
flagServiceMaxConcurrentReconciles = "service-max-concurrent-reconciles"
19+
flagTargetGroupBindingMaxConcurrentReconciles = "targetgroupbinding-max-concurrent-reconciles"
20+
flagTargetGroupBindingMaxExponentialBackoffDelay = "targetgroupbinding-max-exponential-backoff-delay"
21+
flagDefaultSSLPolicy = "default-ssl-policy"
22+
defaultLogLevel = "info"
23+
defaultMaxConcurrentReconciles = 3
24+
defaultMaxExponentialBackoffDelay = time.Second * 1000
25+
defaultSSLPolicy = "ELBSecurityPolicy-2016-08"
2226
)
2327

2428
var (
@@ -62,6 +66,8 @@ type ControllerConfig struct {
6266
ServiceMaxConcurrentReconciles int
6367
// Max concurrent reconcile loops for TargetGroupBinding objects
6468
TargetGroupBindingMaxConcurrentReconciles int
69+
// Max exponential backoff delay for reconcile failures of TargetGroupBinding
70+
TargetGroupBindingMaxExponentialBackoffDelay time.Duration
6571
}
6672

6773
// BindFlags binds the command line flags to the fields in the config object
@@ -77,6 +83,8 @@ func (cfg *ControllerConfig) BindFlags(fs *pflag.FlagSet) {
7783
"Maximum number of concurrently running reconcile loops for service")
7884
fs.IntVar(&cfg.TargetGroupBindingMaxConcurrentReconciles, flagTargetGroupBindingMaxConcurrentReconciles, defaultMaxConcurrentReconciles,
7985
"Maximum number of concurrently running reconcile loops for targetGroupBinding")
86+
fs.DurationVar(&cfg.TargetGroupBindingMaxExponentialBackoffDelay, flagTargetGroupBindingMaxExponentialBackoffDelay, defaultMaxExponentialBackoffDelay,
87+
"Maximum duration of exponential backoff for targetGroupBinding reconcile failures")
8088
fs.StringVar(&cfg.DefaultSSLPolicy, flagDefaultSSLPolicy, defaultSSLPolicy,
8189
"Default SSL policy for load balancers listeners")
8290

0 commit comments

Comments
 (0)