Skip to content

Commit 68f7db5

Browse files
authored
Merge pull request #2029 from eytan-avisror/flag-exponential-backoff-tg
Add max backoff flag for TargetGroupBinding reconciler
2 parents dde29f0 + 4a63e65 commit 68f7db5

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)