diff --git a/templates/helm/templates/deployment.yaml.tpl b/templates/helm/templates/deployment.yaml.tpl index 7d478d7f4..26d6f592d 100644 --- a/templates/helm/templates/deployment.yaml.tpl +++ b/templates/helm/templates/deployment.yaml.tpl @@ -95,6 +95,14 @@ spec: - --reconcile-default-max-concurrent-syncs - "$(RECONCILE_DEFAULT_MAX_CONCURRENT_SYNCS)" {{ "{{- end }}" }} +{{ "{{- if .Values.aws.sdkMaxTPS }}" }} + - --sdk-max-tps + - "$(ACK_SDK_MAX_TPS)" +{{ "{{- end }}" }} +{{ "{{- if .Values.aws.sdkMaxBurst }}" }} + - --sdk-max-burst + - "$(ACK_SDK_MAX_BURST)" +{{ "{{- end }}" }} {{ "{{- range $key, $value := .Values.reconcile.resourceMaxConcurrentSyncs }}" }} - --reconcile-resource-max-concurrent-syncs - {{ "\"$(RECONCILE_RESOURCE_MAX_CONCURRENT_SYNCS_{{ $key | upper }})\"" }} @@ -124,6 +132,14 @@ spec: value: {{ "{{ .Values.aws.endpoint_url | quote }}" }} - name: AWS_IDENTITY_ENDPOINT_URL value: {{ "{{ .Values.aws.identity_endpoint_url | quote }}" }} +{{ "{{- if .Values.aws.sdkMaxTPS }}" }} + - name: ACK_SDK_MAX_TPS + value: {{ "{{ .Values.aws.sdkMaxTPS | quote }}" }} +{{ "{{- end }}" }} +{{ "{{- if .Values.aws.sdkMaxBurst }}" }} + - name: ACK_SDK_MAX_BURST + value: {{ "{{ .Values.aws.sdkMaxBurst | quote }}" }} +{{ "{{- end }}" }} - name: ACK_WATCH_NAMESPACE value: {{ IncludeTemplate "watch-namespace" }} - name: ACK_WATCH_SELECTORS diff --git a/templates/helm/values.yaml.tpl b/templates/helm/values.yaml.tpl index aafedbcfe..5edcabbb3 100644 --- a/templates/helm/values.yaml.tpl +++ b/templates/helm/values.yaml.tpl @@ -95,6 +95,14 @@ aws: {{- if eq .ControllerName "s3" }} endpoint_use_path_style: false {{- end }} + # Client-side rate limiting for AWS SDK API calls. + # Limits the maximum request rate to the AWS service API. + # Useful for services with low account-level rate limits. + # For example, Route53 enforces 5 req/s account-wide — setting sdkMaxTPS: 3 + # leaves headroom for other consumers (external-dns, Terraform, etc.). + # Set to 0 or leave commented to disable (default). + # sdkMaxTPS: 3 + # sdkMaxBurst: 5 credentials: # If specified, Secret with shared credentials file to use. secretName: ""