Skip to content

CFE-617: Rebase v2.4.4 #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 89 commits into from
Nov 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
b564cef
documentation updates for v2.4.1 (#2562)
kishorj Mar 18, 2022
7f2555f
docs cleanup in ingress spec (#2565)
prasadkatti Mar 21, 2022
51fe6ee
minor fix (#2566)
prasadkatti Mar 21, 2022
8b473b4
fix formatting (#2567)
prasadkatti Mar 21, 2022
9604877
Misc minor fixes to docs (#2568)
prasadkatti Mar 21, 2022
1646a0d
fix default value in the service annotation doc (#2569)
kishorj Mar 21, 2022
ab09d23
Auto generate CRDs for the Helm chart (#2517)
kishorj Mar 22, 2022
f014735
Update migrate_v1_v2.md (#2573)
yws-ss Mar 22, 2022
118513a
separate target for helm chart crds generation (#2577)
kishorj Mar 23, 2022
81e52ac
adding optional support for topologySpreadConstraints to helm chart (…
stensonb Mar 23, 2022
88b6bdc
helm chart update ; adding support to set affinity in podSpec to the …
stensonb Mar 23, 2022
4c33010
check namespace when update pod condition for deleted TGB
oliviassss Mar 25, 2022
b5c8905
Merge pull request #2585 from oliviassss/check-TGB-namespace
k8s-ci-robot Mar 28, 2022
f0e348e
added EnableServiceController feature gate to controller
Mar 30, 2022
c9675c4
Updated deployment for prometheus.io annotations when sericeMonitor i…
tamboliasir1 Apr 11, 2022
ebe1a05
Sort ingress rules by path length and pathType (#2409)
oliviassss Apr 12, 2022
b614afa
[minor] - print the env variable name in the output (#2610)
orsenthil Apr 15, 2022
c1b9579
Merge pull request #2606 from tamboliasir1/issue-2601
k8s-ci-robot Apr 15, 2022
f6735b5
Merge pull request #2579 from thejasn/feature/restrict-only-ingress
k8s-ci-robot Apr 21, 2022
dd57d47
Format clusterSecretsPermissions.allowAllSecrets (#2620)
orsenthil Apr 22, 2022
e4351bb
helm: add deployment annotation (#2611)
krrrr38 Apr 29, 2022
4fdf113
fix log level (#2598)
mikutas May 2, 2022
cdbeef6
Add additionalLabels to all components (#2618)
jdheyburn May 3, 2022
b065b69
feat: add optional service monitor namespace (#2609)
shalomy-cyera May 3, 2022
b31a648
Add imagePullSecrets option to ServiceAccount in helm chart (#2624)
BrianKopp May 3, 2022
6d3ce75
add flag to configure dualstack lb
oliviassss Mar 31, 2022
8065307
Migrate to ginkgo v2 (#2639)
May 7, 2022
02e9887
Allow negative and duplicate group.orders (#2634)
jtdoepke May 9, 2022
9a09a70
update tests for multi path backend
oliviassss May 9, 2022
9868777
Merge branch 'main' into ipv6-e2e
oliviassss May 9, 2022
1edccda
Merge pull request #2596 from oliviassss/ipv6-e2e
k8s-ci-robot May 10, 2022
cb4f483
Added EnableIPTargetType flag to controller (#2587)
May 10, 2022
0ad294b
Add support to disable cluster tag check during subnet auto-discovery…
oliviassss May 11, 2022
3a9a117
Generate ginkgo test binaries for running tests on Prow
May 9, 2022
406c96f
Renamed run-prow-test
May 20, 2022
f99ca92
Merge remote-tracking branch 'upstream/main' into prow_infra
May 20, 2022
a9beee7
Merge pull request #2648 from cgchinmay/prow_infra
k8s-ci-robot May 21, 2022
58111cd
Add controller deployment ready logic to e2e script (#2658)
May 24, 2022
d9bcf07
update base image & golang for v2.4.2
M00nF1sh May 24, 2022
d8f0a82
Merge pull request #2660 from M00nF1sh/main-lb242
k8s-ci-robot May 25, 2022
9c79e45
Updated run-e2e-test script to remove eksctl iamserviceaccount creati…
May 31, 2022
45f9e9d
Add clusterName as debug info for troubleshooting (#2696)
guessi Jun 24, 2022
49c0358
Fixed typo: Listner => Listener (#2712)
PrajwalBorkar Jul 7, 2022
c31e190
documentation: update versions to match AWS docs (#2714)
Volatus Jul 8, 2022
d8ee617
Add docs for example of health check gRPC success codes. (#2700)
ugwis Jul 8, 2022
a266bf6
Clarify that ip-mode can be NodePort or ClusterIp
orsenthil Jul 11, 2022
c425a00
Update annotations.md
orsenthil Jul 11, 2022
12aea99
Merge pull request #2725 from orsenthil/patch-3
k8s-ci-robot Jul 11, 2022
8da0d47
Fix Dockerfile go dependency caching (#2626)
hintofbasil Jul 15, 2022
09ca986
Do not set caBundle if CertManager is used (#2649)
mikael-lindstrom Jul 15, 2022
a292571
update default cluster version for e2e tests (#2659)
kishorj Jul 15, 2022
ed1f080
e2e test changes to support china regions (#2723)
Jul 16, 2022
550ebd1
fix creation order of ingressClass and ingressClassParams
M00nF1sh Jul 22, 2022
2edc214
Merge pull request #2732 from M00nF1sh/main_fix
k8s-ci-robot Jul 26, 2022
f377486
Enhance client side throttling information (#2739)
orsenthil Jul 28, 2022
da5ae34
update go pkg dependencies (#2742)
kishorj Jul 29, 2022
80888b9
helm: add field for webhook namespace selector (#2724)
Volatus Jul 29, 2022
658166a
use a dedicated config to disable default affinity (#2743)
kishorj Jul 29, 2022
b2eea53
add HELM support for aws-api-throttle (#2745)
M00nF1sh Jul 29, 2022
aff9e62
bump chart version to 1.4.3 (#2746)
M00nF1sh Jul 29, 2022
98a3984
revise install guide (#2704)
geoffcline Aug 4, 2022
fb7d7e9
add docs for NLB TLS termination (#2680)
geoffcline Aug 5, 2022
a17cebf
enhance handling for InvalidIngressClass case (#2750)
M00nF1sh Aug 6, 2022
6d3e976
cut v2.4.3 release (#2753)
kishorj Aug 9, 2022
9b2deb6
Fix documentation typo s/Amzon/Amazon/
jalessio Aug 21, 2022
bdb42ea
Merge pull request #2773 from jalessio/fix-amazon-doc-typo
k8s-ci-robot Aug 22, 2022
65b1809
refine docs about NLB (#2780)
M00nF1sh Aug 25, 2022
0d91884
configure feature gates with helm chart (#2776)
khizunov Aug 26, 2022
3b25a4b
Allow configuring the actual cluster DNS domain for the TLS certifica…
stephan2012 Aug 31, 2022
bb856b6
add guide on using a self managed (or existing) load balancer (#2765)
geoffcline Sep 1, 2022
d47fbe1
update to golang 1.18 (#2774)
kishorj Sep 1, 2022
9e6c703
Sticky weighted routing (#2740)
hanyhesham Sep 1, 2022
6c706b0
fix error handling of load balancer deletion (#2783)
bitoku Sep 1, 2022
116c108
feat: add default ingressclass annotation ✨ (#2756)
meysam81 Sep 8, 2022
67a02b9
add support for configure static IPv6 addresses on NLB (#2790)
M00nF1sh Sep 8, 2022
b20f899
Fix webhook port value (#2795)
kamialie Sep 9, 2022
b95d50c
Fix doc typo (#2798)
yiyu0x Sep 14, 2022
e56aa96
upgrade to golang 1.18.6 (#2808)
M00nF1sh Sep 22, 2022
32f423b
configure default client-side throttle for ELBv2 APIs (#2810)
kishorj Sep 22, 2022
8d28233
cut v2.4.4 release (#2815)
M00nF1sh Sep 23, 2022
166676b
Merge remote-tracking branch 'openshift/main' into rebase-2.4.4
Oct 13, 2022
1258dc0
UPSTREAM: <drop>: Update vendored dependencies
Oct 27, 2022
86ce402
UPSTREAM: <carry>: Added Dockerfile used in Openshift builds
arjunrn Feb 9, 2022
d3d9dc0
UPSTREAM: <carry>: Change the base image from micro to minimal
arjunrn Mar 15, 2022
7b25be4
UPSTREAM: <carry>: Add document with procedure for rebasing
arjunrn Apr 5, 2022
5c71824
UPSTREAM: <carry>: Switch to UBI for builder image
arjunrn Apr 6, 2022
654e632
UPSTREAM: <carry>: Added downstream owners file
arjunrn Apr 14, 2022
bee0499
UPSTREAM: <carry>: Change golang base image from toolset to ocp builder
Oct 27, 2022
d59817b
UPSTREAM: <carry>: Add ci_operator.yaml config for build root image
Oct 27, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .ci-operator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
build_root_image:
name: release
namespace: openshift
tag: rhel-8-release-golang-1.18-openshift-4.12
5 changes: 2 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
# syntax=docker/dockerfile:experimental

FROM --platform=${TARGETPLATFORM} public.ecr.aws/docker/library/golang:1.17.8 AS base
FROM --platform=${TARGETPLATFORM} public.ecr.aws/docker/library/golang:1.18.6 AS base
WORKDIR /workspace
# Copy the Go Modules manifests
COPY go.mod go.mod
COPY go.sum go.sum
# cache deps before building and copying source so that we don't need to re-download as much
# and so that source changes don't invalidate our downloaded layer
RUN --mount=type=bind,target=. \
--mount=type=cache,target=/root/.cache/go-build \
GOPROXY=direct go mod download

FROM base AS build
Expand All @@ -25,7 +24,7 @@ RUN --mount=type=bind,target=. \
CGO_LDFLAGS="-Wl,-z,relro,-z,now" \
go build -buildmode=pie -tags 'osusergo,netgo,static_build' -ldflags="-s -w -linkmode=external -extldflags '-static-pie' -X ${VERSION_PKG}.GitVersion=${GIT_VERSION} -X ${VERSION_PKG}.GitCommit=${GIT_COMMIT} -X ${VERSION_PKG}.BuildDate=${BUILD_DATE}" -mod=readonly -a -o /out/controller main.go

FROM public.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base-nonroot:2022-03-09-1646784337.2 as bin-unix
FROM public.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base-nonroot:2022-07-27-1658910674.2 as bin-unix

COPY --from=build /out/controller /controller
ENTRYPOINT ["/controller"]
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.openshift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM registry.access.redhat.com/ubi8/go-toolset:1.16.12 AS builder
FROM registry.ci.openshift.org/ocp/builder:rhel-8-golang-1.18-openshift-4.12 AS builder

WORKDIR /opt/app-root/src

Expand Down
32 changes: 26 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
MAKEFILE_PATH = $(dir $(realpath -s $(firstword $(MAKEFILE_LIST))))

# Image URL to use all building/pushing image targets
IMG ?= amazon/aws-alb-ingress-controller:v2.4.1
IMG ?= amazon/aws-alb-ingress-controller:v2.4.4

CRD_OPTIONS ?= "crd:crdVersions=v1"

Expand Down Expand Up @@ -32,22 +32,26 @@ run: generate fmt vet manifests

# Install CRDs into a cluster
install: manifests
kustomize build config/crd | kubectl apply -f -
$(KUSTOMIZE) build config/crd | kubectl apply -f -

# Uninstall CRDs from a cluster
uninstall: manifests
kustomize build config/crd | kubectl delete -f -
$(KUSTOMIZE) build config/crd | kubectl delete -f -

# Deploy controller in the configured Kubernetes cluster in ~/.kube/config
deploy: manifests
cd config/controller && kustomize edit set image controller=${IMG}
kustomize build config/default | kubectl apply -f -
cd config/controller && $(KUSTOMIZE) edit set image controller=${IMG}
$(KUSTOMIZE) build config/default | kubectl apply -f -

# Generate manifests e.g. CRD, RBAC etc.
manifests: controller-gen
manifests: controller-gen kustomize
$(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=controller-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
yq eval '.metadata.name = "webhook"' -i config/webhook/manifests.yaml

crds: manifests
$(KUSTOMIZE) build config/crd > helm/aws-load-balancer-controller/crds/crds.yaml


# Run go fmt against code
fmt:
go fmt ./...
Expand Down Expand Up @@ -95,6 +99,22 @@ else
CONTROLLER_GEN=$(shell which controller-gen)
endif

# install kustomize if not found
kustomize:
ifeq (, $(shell which kustomize))
@{ \
set -e ;\
KUSTOMIZE_TMP_DIR=$$(mktemp -d) ;\
cd $$KUSTOMIZE_TMP_DIR ;\
go mod init tmp ;\
GO111MODULE=on go get sigs.k8s.io/kustomize/kustomize/v3 ;\
rm -rf $$KUSTOMIZE_TMP_DIR ;\
}
KUSTOMIZE=$(GOBIN)/kustomize
else
KUSTOMIZE=$(shell which kustomize)
endif

# preview docs
docs-preview: docs-dependencies
pipenv run mkdocs serve
Expand Down
2 changes: 1 addition & 1 deletion config/controller/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ kind: Kustomization
images:
- name: controller
newName: amazon/aws-alb-ingress-controller
newTag: v2.4.1
newTag: v2.4.4
22 changes: 11 additions & 11 deletions controllers/ingress/group_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
"sigs.k8s.io/aws-load-balancer-controller/controllers/ingress/eventhandlers"
"sigs.k8s.io/aws-load-balancer-controller/pkg/annotations"
"sigs.k8s.io/aws-load-balancer-controller/pkg/aws"
cfg "sigs.k8s.io/aws-load-balancer-controller/pkg/config"
"sigs.k8s.io/aws-load-balancer-controller/pkg/config"
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy"
elbv2deploy "sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/elbv2"
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
Expand Down Expand Up @@ -44,26 +44,26 @@ const (
func NewGroupReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorder record.EventRecorder,
finalizerManager k8s.FinalizerManager, networkingSGManager networkingpkg.SecurityGroupManager,
networkingSGReconciler networkingpkg.SecurityGroupReconciler, subnetsResolver networkingpkg.SubnetsResolver,
config cfg.ControllerConfig, backendSGProvider networkingpkg.BackendSGProvider, logger logr.Logger) *groupReconciler {
controllerConfig config.ControllerConfig, backendSGProvider networkingpkg.BackendSGProvider, logger logr.Logger) *groupReconciler {

annotationParser := annotations.NewSuffixAnnotationParser(annotations.AnnotationPrefixIngress)
authConfigBuilder := ingress.NewDefaultAuthConfigBuilder(annotationParser)
enhancedBackendBuilder := ingress.NewDefaultEnhancedBackendBuilder(k8sClient, annotationParser, authConfigBuilder)
referenceIndexer := ingress.NewDefaultReferenceIndexer(enhancedBackendBuilder, authConfigBuilder, logger)
trackingProvider := tracking.NewDefaultProvider(ingressTagPrefix, config.ClusterName)
elbv2TaggingManager := elbv2deploy.NewDefaultTaggingManager(cloud.ELBV2(), cloud.VpcID(), config.FeatureGates, logger)
trackingProvider := tracking.NewDefaultProvider(ingressTagPrefix, controllerConfig.ClusterName)
elbv2TaggingManager := elbv2deploy.NewDefaultTaggingManager(cloud.ELBV2(), cloud.VpcID(), controllerConfig.FeatureGates, logger)
modelBuilder := ingress.NewDefaultModelBuilder(k8sClient, eventRecorder,
cloud.EC2(), cloud.ACM(),
annotationParser, subnetsResolver,
authConfigBuilder, enhancedBackendBuilder, trackingProvider, elbv2TaggingManager,
cloud.VpcID(), config.ClusterName, config.DefaultTags, config.ExternalManagedTags,
config.DefaultSSLPolicy, backendSGProvider, config.EnableBackendSecurityGroup, config.DisableRestrictedSGRules, config.FeatureGates.Enabled(cfg.EnableIPTargetType), logger)
authConfigBuilder, enhancedBackendBuilder, trackingProvider, elbv2TaggingManager, controllerConfig.FeatureGates,
cloud.VpcID(), controllerConfig.ClusterName, controllerConfig.DefaultTags, controllerConfig.ExternalManagedTags,
controllerConfig.DefaultSSLPolicy, backendSGProvider, controllerConfig.EnableBackendSecurityGroup, controllerConfig.DisableRestrictedSGRules, controllerConfig.FeatureGates.Enabled(config.EnableIPTargetType), logger)
stackMarshaller := deploy.NewDefaultStackMarshaller()
stackDeployer := deploy.NewDefaultStackDeployer(cloud, k8sClient, networkingSGManager, networkingSGReconciler,
config, ingressTagPrefix, logger)
controllerConfig, ingressTagPrefix, logger)
classLoader := ingress.NewDefaultClassLoader(k8sClient)
classAnnotationMatcher := ingress.NewDefaultClassAnnotationMatcher(config.IngressConfig.IngressClass)
manageIngressesWithoutIngressClass := config.IngressConfig.IngressClass == ""
classAnnotationMatcher := ingress.NewDefaultClassAnnotationMatcher(controllerConfig.IngressConfig.IngressClass)
manageIngressesWithoutIngressClass := controllerConfig.IngressConfig.IngressClass == ""
groupLoader := ingress.NewDefaultGroupLoader(k8sClient, eventRecorder, annotationParser, classLoader, classAnnotationMatcher, manageIngressesWithoutIngressClass)
groupFinalizerManager := ingress.NewDefaultFinalizerManager(finalizerManager)

Expand All @@ -80,7 +80,7 @@ func NewGroupReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorder
groupFinalizerManager: groupFinalizerManager,
logger: logger,

maxConcurrentReconciles: config.IngressConfig.MaxConcurrentReconciles,
maxConcurrentReconciles: controllerConfig.IngressConfig.MaxConcurrentReconciles,
}
}

Expand Down
18 changes: 9 additions & 9 deletions controllers/service/service_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"sigs.k8s.io/aws-load-balancer-controller/controllers/service/eventhandlers"
"sigs.k8s.io/aws-load-balancer-controller/pkg/annotations"
"sigs.k8s.io/aws-load-balancer-controller/pkg/aws"
cfg "sigs.k8s.io/aws-load-balancer-controller/pkg/config"
"sigs.k8s.io/aws-load-balancer-controller/pkg/config"
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy"
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/elbv2"
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
Expand All @@ -36,30 +36,30 @@ const (
func NewServiceReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorder record.EventRecorder,
finalizerManager k8s.FinalizerManager, networkingSGManager networking.SecurityGroupManager,
networkingSGReconciler networking.SecurityGroupReconciler, subnetsResolver networking.SubnetsResolver,
vpcInfoProvider networking.VPCInfoProvider, config cfg.ControllerConfig, logger logr.Logger) *serviceReconciler {
vpcInfoProvider networking.VPCInfoProvider, controllerConfig config.ControllerConfig, logger logr.Logger) *serviceReconciler {

annotationParser := annotations.NewSuffixAnnotationParser(serviceAnnotationPrefix)
trackingProvider := tracking.NewDefaultProvider(serviceTagPrefix, config.ClusterName)
elbv2TaggingManager := elbv2.NewDefaultTaggingManager(cloud.ELBV2(), cloud.VpcID(), config.FeatureGates, logger)
serviceUtils := service.NewServiceUtils(annotationParser, serviceFinalizer, config.ServiceConfig.LoadBalancerClass, config.FeatureGates)
trackingProvider := tracking.NewDefaultProvider(serviceTagPrefix, controllerConfig.ClusterName)
elbv2TaggingManager := elbv2.NewDefaultTaggingManager(cloud.ELBV2(), cloud.VpcID(), controllerConfig.FeatureGates, logger)
serviceUtils := service.NewServiceUtils(annotationParser, serviceFinalizer, controllerConfig.ServiceConfig.LoadBalancerClass, controllerConfig.FeatureGates)
modelBuilder := service.NewDefaultModelBuilder(annotationParser, subnetsResolver, vpcInfoProvider, cloud.VpcID(), trackingProvider,
elbv2TaggingManager, config.ClusterName, config.DefaultTags, config.ExternalManagedTags, config.DefaultSSLPolicy, config.FeatureGates.Enabled(cfg.EnableIPTargetType), serviceUtils)
elbv2TaggingManager, controllerConfig.FeatureGates, controllerConfig.ClusterName, controllerConfig.DefaultTags, controllerConfig.ExternalManagedTags, controllerConfig.DefaultSSLPolicy, controllerConfig.FeatureGates.Enabled(config.EnableIPTargetType), serviceUtils)
stackMarshaller := deploy.NewDefaultStackMarshaller()
stackDeployer := deploy.NewDefaultStackDeployer(cloud, k8sClient, networkingSGManager, networkingSGReconciler, config, serviceTagPrefix, logger)
stackDeployer := deploy.NewDefaultStackDeployer(cloud, k8sClient, networkingSGManager, networkingSGReconciler, controllerConfig, serviceTagPrefix, logger)
return &serviceReconciler{
k8sClient: k8sClient,
eventRecorder: eventRecorder,
finalizerManager: finalizerManager,
annotationParser: annotationParser,
loadBalancerClass: config.ServiceConfig.LoadBalancerClass,
loadBalancerClass: controllerConfig.ServiceConfig.LoadBalancerClass,
serviceUtils: serviceUtils,

modelBuilder: modelBuilder,
stackMarshaller: stackMarshaller,
stackDeployer: stackDeployer,
logger: logger,

maxConcurrentReconciles: config.ServiceMaxConcurrentReconciles,
maxConcurrentReconciles: controllerConfig.ServiceMaxConcurrentReconciles,
}
}

Expand Down
16 changes: 14 additions & 2 deletions docs/deploy/configurations.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,19 @@ Once disabled:
* you can no longer alter the value of an `alb.ingress.kubernetes.io/group.name` annotation on an existing Ingress.


### Default throttle config
### throttle config

Controller uses the following default throttle config:

```
WAF Regional:^AssociateWebACL|DisassociateWebACL=0.5:1,WAF Regional:^GetWebACLForResource|ListResourcesForWebACL=1:1,WAFV2:^AssociateWebACL|DisassociateWebACL=0.5:1,WAFV2:^GetWebACLForResource|ListResourcesForWebACL=1:1,Elastic Load Balancing v2:^RegisterTargets|^DeregisterTargets=4:20,Elastic Load Balancing v2:.*=10:40
```
Client side throttling enables gradual scaling of the api calls. Additional throttle config can be specified via the `--aws-api-throttle` flag. You can get the ServiceID from the API definition in AWS SDK. For e.g, ELBv2 it is [Elastic Load Balancing v2](https://github.com/aws/aws-sdk-go/blob/main/models/apis/elasticloadbalancingv2/2015-12-01/api-2.json#L9).

Here is an example of throttle config to specify client side throttling of ELBv2 calls.

```
WAF Regional:^AssociateWebACL|DisassociateWebACL=0.5:1,WAF Regional:^GetWebACLForResource|ListResourcesForWebACL=1:1,WAFV2:^AssociateWebACL|DisassociateWebACL=0.5:1,WAFV2:^GetWebACLForResource|ListResourcesForWebACL=1:1
--aws-api-throttle=Elastic Load Balancing v2:RegisterTargets|DeregisterTargets=4:20,Elastic Load Balancing v2:.*=10:40
```

### Instance metadata
Expand All @@ -144,5 +154,7 @@ They are a set of kye=value pairs that describe AWS load balance controller feat
| ListenerRulesTagging | string | true | Enable or disable tagging AWS load balancer listeners and rules |
| WeightedTargetGroups | string | true | Enable or disable weighted target groups |
| ServiceTypeLoadBalancerOnly | string | false | If enabled, controller will be limited to reconciling service of type `LoadBalancer`|
| EndpointsFailOpen | string | false | Enable or disable allowing endpoints with `ready:unknown` state in the target groups. |
| EnableServiceController | string | true | Toggles support for `Service` type resources. |
| EnableIPTargetType | string | true | Used to toggle support for target-type `ip` across `Ingress` and `Service` type resources. |
| SubnetsClusterTagCheck | string | true | Enable or disable the check for `kubernetes.io/cluster/${cluster-name}` during subnet auto-discovery |
Loading