1# Default values for aws-load-balancer-controller.
2# This is a YAML-formatted file.
3# Declare variables to be passed into your templates.
6revisionHistoryLimit: 10
8 repository: cgr.dev/chainguard-private/aws-load-balancer-controller
9 tag: latest@sha256:3d68443e886dd8e409d5b9fff1a399060418643506699c16e78a9409e4057776
10 pullPolicy: IfNotPresent
15# AWS LBC only has 1 main working pod, other pods are just standby
16# the purpose of enable hpa is to survive load induced failure by the calls to the aws-load-balancer-webhook-service
17# since the calls from kube-apiserver are sent round-robin to all replicas, and the failure policy on those webhooks is Fail
18# if the pods become overloaded and do not respond within the timeout that could block the creation of pods, targetgroupbindings or ingresses
19# Please keep in mind that the controller pods have `priorityClassName: system-cluster-critical`, enabling HPA may lead to the eviction of other low-priority pods in the node
24 targetCPUUtilizationPercentage: 80
26 # Specifies whether a service account should be created
28 # Annotations to add to the service account
30 # The name of the service account to use.
31 # If not set and create is true, a name is generated using the fullname template
33 # Automount API credentials for a Service Account.
34 automountServiceAccountToken: true
35 # List of image pull secrets to add to the Service Account.
39 # Specifies whether rbac resources should be created
47 readOnlyRootFilesystem: true
49 allowPrivilegeEscalation: false
50# Time period for the controller pod to do a graceful shutdown
51terminationGracePeriodSeconds: 10
53# We usually recommend not to specify default resources and to leave this as a conscious
54# choice for the user. This also increases chances charts run on environments with little
55# resources, such as Minikube. If you do want to specify resources, uncomment the following
56# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
64# priorityClassName specifies the PriorityClass to indicate the importance of controller pods
65# ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass
66priorityClassName: system-cluster-critical
69# affinity specifies a custom affinity for the controller pods
71# configureDefaultAffinity specifies whether to configure a default affinity for the controller pods to prevent
72# co-location on the same node. This will get ignored if you specify a custom affinity configuration.
73configureDefaultAffinity: true
74# topologySpreadConstraints is a stable feature of k8s v1.19 which provides the ability to
75# control how Pods are spread across your cluster among failure-domains such as regions, zones,
76# nodes, and other user-defined topology domains.
78# more details here: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
79topologySpreadConstraints: []
86# serviceAnnotations contains annotations to be added to the provisioned webhook service resource
88# deploymentAnnotations contains annotations for the controller deployment
89deploymentAnnotations: {}
92# additionalLabels -- Labels to add to each object of the chart.
95enableCertManager: false
96# Overrideable variables when enableCertManager is set to true
98 # Webhook serving certificate configuration
99 duration: "8760h0m0s" # 1 year
100 renewBefore: "720h0m0s" # 30 days
101 revisionHistoryLimit:
102 # Root CA certificate configuration
104 duration: "43800h0m0s" # 5 years
105 # Optional: custom issuer reference
108 # kind: ClusterIssuer
109# The name of the Kubernetes cluster. A non-empty value is required
111# cluster contains configurations specific to the kubernetes cluster
113 # Cluster DNS domain (required for requesting TLS certificates)
114 dnsDomain: cluster.local
115# The ingress class this controller will satisfy. If not specified, controller will match all
116# ingresses without ingress class annotation and ingresses of type alb
118# ingressClassParams specify the IngressCLassParams that enforce settings for a set of Ingresses when using with ingress Controller.
121 # The name of ingressClassParams resource will be referred in ingressClass
124 # Due to dependency issue, the validation webhook ignores this particular ingressClassParams resource.
125 # We recommend creating ingressClassParams resources separately after installing this chart and the
126 # controller is functional.
128 # You can set the specifications in the `helm install` command through `--set` or `--set-string`
129 # If you do want to specify in the values.yaml, uncomment the following
130 # lines, adjust them as necessary, and remove the curly braces after 'spec:'
138 # loadBalancerAttributes:
141# To use IngressClass resource instead of annotation, before you need to install the IngressClass resource pointing to controller.
142# If specified as true, the IngressClass resource will be created.
143createIngressClassResource: true
144# The AWS region for the kubernetes cluster. Set to use KIAM or kube2iam for example.
146# The VPC ID for the Kubernetes cluster. Set this manually when your pods are unable to use the metadata service to determine this automatically
148# This is alternative to vpcId. Set this when your pods are unable to use the metadata service to determine VPC automatically.
149# All specified tags are used as AND filters for VPC lookup.
153# Custom AWS API Endpoints (serviceID1=URL1,serviceID2=URL2)
155# awsApiThrottle specifies custom AWS API throttle settings (serviceID1:operationRegex1=rate:burst,serviceID2:operationRegex2=rate:burst)
156# example: --set awsApiThrottle="{Elastic Load Balancing v2:RegisterTargets|DeregisterTargets=4:20,Elastic Load Balancing v2:.*=10:40}"
158# Maximum retries for AWS APIs (default 10)
160# Default target type. Used as the default value of the "alb.ingress.kubernetes.io/target-type" and
161# "service.beta.kubernetes.io/aws-load-balancer-nlb-target-type" annotations.
162# Possible values are "ip" and "instance"
163# The value "ip" should be used for ENI-based CNIs, such as the Amazon VPC CNI,
164# Calico with encapsulation disabled, or Cilium with masquerading disabled.
165# The value "instance" should be used for overlay-based CNIs, such as Calico in VXLAN or IPIP mode or
166# Cilium with masquerading enabled.
167defaultTargetType: instance
168# Default load balancer scheme when not specifying "alb.ingress.kubernetes.io/scheme" or
169# "service.beta.kubernetes.io/aws-load-balancer-scheme" annotations.
170# Possible values are "internal" and "internet-facing" (default "internal")
171defaultLoadBalancerScheme:
172# If enabled, targetHealth readiness gate will get injected to the pod spec for the matching endpoint pods (default true)
173enablePodReadinessGateInject:
174# Enable Shield addon for ALB (default true)
176# Enable WAF addon for ALB (default true)
178# Enable WAF V2 addon for ALB (default true)
180# Maximum number of concurrently running reconcile loops for ingress (default 3)
181ingressMaxConcurrentReconciles:
182# Set the controller log level - info(default), debug (default "info")
184# The address the metric endpoint binds to. (default ":8080")
187 # disableIngressValidation disables the validation of resources of kind Ingress, false by default
188 disableIngressValidation:
189 # whether or not to fail the ingress creation if the webhook fails
190 ingressValdationFailurePolicy: Fail
191 # limit ingress validation webhook to only validate ingresses matching the objectSelector
192 ingressValidationObjectSelector:
195 # limit ingress validation webhook to only validate ingresses in the namespace matching the object selector.
196 ingressValidationNamespaceSelector:
199# The TCP port the Webhook server binds to. (default 9443)
201# webhookTLS specifies TLS cert/key for the webhook
206# keepTLSSecret specifies whether to reuse existing TLS secret for chart upgrade when cert-manager is not being used
208# array of namespace selectors for the pod mutator webhook
209webhookNamespaceSelectors:
210# - key: elbv2.k8s.aws/pod-readiness-gate-inject
215# Maximum number of concurrently running reconcile loops for service (default 3)
216serviceMaxConcurrentReconciles:
217# Maximum number of concurrently running reconcile loops for targetGroupBinding
218targetgroupbindingMaxConcurrentReconciles:
219# Maximum duration of exponential backoff for targetGroupBinding reconcile failures
220targetgroupbindingMaxExponentialBackoffDelay:
221# Duration after which TargetGroupBinding will be requeued for reconciliation when it's waiting for AWS resources to update.
222targetgroupbindingRequeueDuration:
223# Maximum number of concurrently running reconcile loops for ALB gateways (default 3)
224albGatewayMaxConcurrentReconciles:
225# Maximum number of concurrently running reconcile loops for NLB gateways (default 3)
226nlbGatewayMaxConcurrentReconciles:
227# Maximum number of concurrently running reconcile loops for GlobalAccelerator objects
228globalAcceleratorMaxConcurrentReconciles:
229# Maximum duration of exponential backoff for GlobalAccelerator reconcile failures
230globalAcceleratorMaxExponentialBackoffDelay:
231# Interval at which the controller monitors the state of load balancer after creation for stabilization
232lbStabilizationMonitorInterval:
233# Period at which the controller forces the repopulation of its local object stores. (default 10h0m0s)
235# Namespace the controller watches for updates to Kubernetes objects, If empty, all namespaces are watched.
237# disableIngressClassAnnotation disables the usage of kubernetes.io/ingress.class annotation, false by default
238disableIngressClassAnnotation:
239# disableIngressGroupNameAnnotation disables the usage of alb.ingress.kubernetes.io/group.name annotation, false by default
240disableIngressGroupNameAnnotation:
241# tolerateNonExistentBackendService permits rules which specify backend services that don't exist, true by default (When enabled, it will return 503 error if backend service not exist)
242tolerateNonExistentBackendService:
243# tolerateNonExistentBackendAction permits rules which specify backend actions that don't exist, true by default (When enabled, it will return 503 error if backend action not exist)
244tolerateNonExistentBackendAction:
245# defaultSSLPolicy specifies the default SSL policy to use for TLS/HTTPS listeners
247# Liveness probe configuration for the controller
254 initialDelaySeconds: 30
256# readiness probe configuration for the controller
264 initialDelaySeconds: 10
266# Environment variables to set for aws-load-balancer-controller pod.
267# We strongly discourage programming access credentials in the controller environment. You should setup IRSA or
268# comparable solutions like kube2iam, kiam etc instead.
273# Use Environment variables credentials from Secret (aws-secret) for aws-load-balancer-controller pod similarly as The EBS CSI Driver does.
274# envSecretName: aws-secret
276# Use envFrom to set environment variables from a Secret or ConfigMap
281# Specifies if aws-load-balancer-controller should be started in hostNetwork mode.
282# This is required if using a custom CNI where the managed control plane nodes are unable to initiate
283# network connections to the pods, for example using Calico CNI plugin on EKS. This is not required or
284# recommended if using the Amazon VPC CNI plugin.
286# Specifies the dnsPolicy that should be used for pods in the deployment
288# This may need to be used to be changed given certain conditions. For instance, if one uses the cilium CNI
289# with certain settings, one may need to set `hostNetwork: true` and webhooks won't work unless `dnsPolicy`
290# is set to `ClusterFirstWithHostNet`. See https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
292# extraVolumeMounts are the additional volume mounts. This enables setting up IRSA on non-EKS Kubernetes cluster
294# - name: aws-iam-token
295# mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount
298# extraVolumes for the extraVolumeMounts. Useful to mount a projected service account token for example.
300# - name: aws-iam-token
304# - serviceAccountToken:
305# audience: sts.amazonaws.com
306# expirationSeconds: 86400
309# defaultTags are the tags to apply to all AWS resources managed by this controller
311# default_tag1: value1
312# default_tag2: value2
314# podDisruptionBudget specifies the disruption budget for the controller pods.
315# Disruption budget will be configured only when the replicaCount is greater than 1
316podDisruptionBudget: {}
319# externalManagedTags is the list of tag keys on AWS resources that will be managed externally
320externalManagedTags: []
321# enableEndpointSlices enables k8s EndpointSlices for IP targets instead of Endpoints (default false)
323# enableBackendSecurityGroup enables shared security group for backend traffic (default true)
324enableBackendSecurityGroup:
325# enableManageBackendSecurityGroupRules enables controller manages security group rules (default false)
326enableManageBackendSecurityGroupRules:
327# backendSecurityGroup specifies backend security group id (default controller auto create backend security group)
329# disableRestrictedSecurityGroupRules specifies whether to disable creating port-range restricted security group rules for traffic
330disableRestrictedSecurityGroupRules:
331# maxTargetsPerTargetGroup specifies the maximum number of targets that the controller will attempt to add to a given ELB instance
332maxTargetsPerTargetGroup:
333# controllerConfig specifies controller configuration
335 # featureGates set of key: value pairs that describe AWS load balance controller features
337 # ListenerRulesTagging: true
338 # WeightedTargetGroups: true
339 # ServiceTypeLoadBalancerOnly: false
340 # EndpointsFailOpen: true
341 # EnableServiceController: true
342 # EnableIPTargetType: true
343 # EnableTCPUDPListener: false
344 # EnableRGTAPI: false
345 # SubnetsClusterTagCheck: true
346 # NLBHealthCheckAdvancedConfig: true
347 # NLBSecurityGroup: true
348 # ALBSingleSubnet: false
349 # LBCapacityReservation: true
350 # SubnetDiscoveryByReachability: true
351 # NLBGatewayAPI: true
352 # ALBGatewayAPI: true
353 # GatewayListenerSet: true
354 # GlobalAcceleratorController: false
355 # EnhancedDefaultBehavior: false
356 # EnableDefaultTagsLowPriority: false
357 # ALBTargetControlAgent: false
358 # EnableCertificateManagement: false
360 allowedCertificateAuthorityARNs: "" # empty means all CAs are in scope
361# objectSelector for webhook
365 # operator: <operator>
371 # Specifies whether a service monitor should be created
373 # Namespace to create the service monitor in
375 # Labels to add to the service monitor
377 # Prometheus scrape interval
379 # Prometheus scrape timeout
381 # Relabelings to apply to samples before ingestion
383 # Metric relabelings to apply to samples before ingestion
385# clusterSecretsPermissions lets you configure RBAC permissions for secret resources
386# Access to secrets resource is required only if you use the OIDC feature, and instead of
387# enabling access to all secrets, we recommend configuring namespaced role/rolebinding.
388# This option is for backwards compatibility only, and will potentially be deprecated in future.
389clusterSecretsPermissions:
390 # allowAllSecrets allows the controller to access all secrets in the cluster.
391 # This is to get backwards compatible behavior, but *NOT* recommended for security reasons
392 allowAllSecrets: false
393# ingressClassConfig contains configurations specific to the ingress class
396# enableServiceMutatorWebhook allows you enable the webhook which makes this controller the default for all new services of type LoadBalancer
397enableServiceMutatorWebhook: true
398# serviceMutatorWebhook contains configurations specific to the service mutator webhook
399serviceMutatorWebhookConfig:
400 # whether or not to fail the service creation if the webhook fails
402 # limit webhook to only mutate services matching the objectSelector
406 # operator: <operator>
411 # array of namespace selectors for the service mutator webhook
414 # operator: <operator>
417 # which operations trigger the webhook
421# podMutatorWebhookConfig contains configurations specific to the service mutator webhook
422podMutatorWebhookConfig:
423 # whether or not to fail the pod creation if the webhook fails
424 failurePolicy: Ignore
425# serviceTargetENISGTags specifies AWS tags, in addition to the cluster tags, for finding the target ENI SG to which to add inbound rules from NLBs.
426serviceTargetENISGTags:
427# Specifies the class of load balancer to use for services. This affects how services are provisioned if type LoadBalancer is used (default service.k8s.aws/nlb)
430# creator will disable helm default labels, so you can only add yours