Skip to content

Releases: kubernetes-sigs/aws-load-balancer-controller

v2.14.0

02 Oct 19:28
d847890
Compare
Choose a tag to compare

Beta Release: Gateway API Layer 7 (L7) Routing for AWS Load Balancer Controller

We are excited to announce the Beta release of Layer 7 (L7) routing support for the Kubernetes Gateway API within the AWS Load Balancer Controller (LBC)!🥳🥳🥳 This highly anticipated feature allows you to provision and manage AWS Application Load Balancers (ALBs) for HTTP, HTTPS, and GRPC traffic directly from your Kubernetes clusters using the extensible Gateway API. Please refer to L7 Gateway API Documentation to learn more.

This beta release focuses on Gateway API features with comprehensive status reporting, advanced authentication, and stability improvements. While we encourage you to test these features extensively in your development environments, please be aware that this is a Beta release and is not yet production-ready. We are actively gathering feedback to finalize stability for official production use. This Beta status applies only to the new Gateway API features. All existing controller functionality for standard Ingress, Service and TargetGroupBinding resources remains stable and is safe for production workflows. Please restrict use of the new Gateway API features to testing and development environments.


📚 Quick Links

v2.14.0 (requires Kubernetes 1.22+)

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.14.0

Documentation

Thanks to all our contributors!💜💜💜


⚠️ Action Required

EndpointSlices Now Default

CRD Updates

  • Change: We’ve added new fields to both the IngressClassParams and TargetGroupBinding.
  • Action : Please apply the latest CRD definitions: kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"

🚀 What's New in Ingress, Services and TargetGroupBinding

Enhanced Defaulting Flag

  • New: EnhancedDefaultBehavior flag for better annotation lifecycle management
  • Impact: Enable this feature to allow the controller to remove ALPN and mTLS settings by removing the corresponding annotation

CRD Naming Fix

  • Fixed: IngressClassParams singular name: ingressclassparamsingressclassparam
  • Impact: No action required. Both name will be supported, existing customers are not impacted. New customers please use correct name. Resolves SingularConflict errors

Configuration Improvements

  • IngressClassParams Enhancements:
    • Load balancer name specification
    • SSL redirect port configuration
    • WAFv2 ARN/name support
    • PrefixListsIDs backward compatibility
  • Target Group Names: Use names instead of ARNs in forward actions
  • Granular NLB SG: Disable NLB Security Groups at the individual Service, instead of at the controller level.
  • Frontend NLB Tags: Dedicated tagging for frontend NLBs

🚀 What's New in Gateway API

Status Update & Observability

  • Gateway Listener Status: Complete status reporting with all condition types (Conflicted, Accepted, ResolvedRefs, Programmed)
  • Route Status Management: Fixed infinite reconcile loops, proper lifecycle management
  • E2E Status Tests: Comprehensive validation for UDP, TCP, HTTP, gRPC route statuses
  • Target Group Metrics: New aws_target_group_info metric for CloudWatch integration

Advanced Authentication

  • OIDC Support: Complete OpenID Connect integration via ListenerRuleConfiguration
  • Cognito Integration: Complete AWS Cognito integration via ListenerRuleConfiguration

Enhanced Routing

  • gRPC Partially Supported: Complete gRPC routing with header/method matching, E2E tests
  • Source IP Conditions: Advanced source IP matching in rules
  • Multiple Header Values: Support comma-separated header values
  • Hostname Uniqueness: Enforced between gRPC and HTTP routes

Traffic Management

  • Target Group Stickiness: Session affinity support
  • Fixed Response Actions: Custom status codes and response bodies
  • Port-Specific Attributes: Different target group attributes per service port
  • Weighted Target Group Fixes: Improved comparison logic

Infrastructure

  • Gateway API Addons: WAFv2 and Shield support for Gateway API
  • IPv6 Support: Complete IPv6 testing and validation
  • Elastic IP Support: Frontend NLB Elastic IP allocation

🔧 Enhancements and Fixes

Performance & Reliability

  • Go 1.24.6: Security fixes and performance improvements
  • DNS Timeout: Configurable DNS propagation timeout
  • TGB Checkpoints: Fixed check-pointing after accidental service port deletion.
  • Error Metrics: Fixed metric pollution from expected errors

Bug Fixes

  • Weighted Target Groups: Fixed unnecessary rule modifications causing 4XX errors when using Weighted Target Groups.
  • TCP_UDP Security Groups: Proper ingress rule generation for TCP_UDP listeners
  • Backend SG Tags: Automatically sync Security Groups tags on backend Security Groups.

Documentation & Testing

  • Resource Cleanup Guide: Proper deletion order documentation
  • Scaling Documentation: Guidelines for large cluster deployments
  • Comprehensive E2E Tests: gRPC, IPv6, status validation, authentication
  • Error Message Improvements: Clearer guidance for common issues

🌟 Complete Change Log

Read more

v2.13.4

30 Jul 20:43
aefed36
Compare
Choose a tag to compare

v2.13.4 (requires Kubernetes 1.22+)

Documentation

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.13.4
Thanks to all our contributors! 😊

Action required

🚨 🚨 🚨 For user who is trying out our gateway api features, we’ve created a new CRD ListenerRuleConfiguration. Make sure to update the CRD definition in your cluster. If you're upgrading the charts using helm upgrade, you need to update CRDs manually: kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/config/crd/gateway/gateway-crds.yaml also update rbac policy by applying the latest changes from rbac.yaml

What’s new

We’ve been working on ALB support in Gateway API. Some of the main additions are:

  • introduced a new ListenerRuleConfiguration CRD that lets you use those AWS ALB features that Gateway API doesn't support yet. Note: we have not complete all development on this new CRD. Therefore, it is not recommended to use it at this time.
  • added Reference Grant support
  • added mTLS support
  • weighted target group is now supported for HTTPRoutes
  • TLS listeners now accept TCP routes

Enhancement and Fixes

  • Upgraded Go to 1.24.5
  • Fixed NLB security groups not working when multiple security groups assigned
  • Added Patch permission to loadbalancerconfigurations in helm chart
  • Made the error message more clear when someone tries to use ClusterIP services with Instance targets
  • CI now runs on K8s 1.32 instead of 1.25
  • Increased E2E test coverage

Full Changelog

New Contributors

Full Changelog: v2.13.3...v2.13.4

v.2.13.3

16 Jun 22:38
31ec9f0
Compare
Choose a tag to compare

v2.13.3 (requires Kubernetes 1.22+)

Documentation

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.13.3
Thanks to all our contributors! 😊

Action required

🚨 🚨 🚨 We’ve updated the Gateway API relevant LBC CRDs LoadBalancerConfigurations and TargetGroupConfigurations Make sure to update the CRD definition in your cluster. If you're upgrading the charts using helm upgrade, you need to update CRDs manually: kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/config/crd/gateway/gateway-crds.yaml

What’s new

  • We are pleased to announce the (Beta) of Layer 4 (L4) routing support for the Kubernetes Gateway API within the AWS Load Balancer Controller (LBC). This significant enhancement allows users to provision and manage AWS Network Load Balancers (NLBs) for TCP, UDP, and TLS traffic directly from their Kubernetes clusters, leveraging the powerful and extensible Gateway API. The LBC now fully supports the GatewayClass ,Gateway, TCPRoute, UDPRoute, and TLSRoute resources from the Gateway API. Please refer L4Routing for more info.

Enhancement and Fixes

  • Upgraded Secuirty group deletion to be more responsive.
  • Reduced the duplicated DescribeTargetGroups calls to enhance performance.
  • Docs updates

Changelog since v2.13.2

v2.13.2

15 May 18:05
ac0e1ff
Compare
Choose a tag to compare

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.13.2

This release fixes TLS Protocol detection:
#4183
#4181

v2.13.1

14 May 00:55
2d66bb1
Compare
Choose a tag to compare

v2.13.1 (requires Kubernetes 1.22+)

[PLEASE USE v2.13.2]

Documentation

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.13.1
Thanks to all our contributors! 😊

This release fixes the v2.13.0 release that contained a bug that erroneously published reconcile error metrics

v2.13.0

06 May 23:00
73980cf
Compare
Choose a tag to compare

v2.13.0 (requires Kubernetes 1.22+)

[PLEASE USE v2.13.2]

Documentation

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.13.3
Thanks to all our contributors! 😊

Action required

🚨 🚨 🚨

We’ve added new fields to the IngressClassParams CRD. Please apply the latest CRD definitions: kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"

What’s new

Enhancement and Fixes

  • Added more customization options (TargetType, PrefixListsIDs) to the IngressClassParams CRD.
  • Allow for setting PPv2 header at per target group level.
  • Refactored Subnet discovery to make LB creation easier.
  • Updated to Go 1.24.2 and AL2023 base image to resolve security vulnerabilities.
  • Lots of documentation and logging fixes!

Changelog since v2.12.0

  • Bump version to 2.13, add documentation for Gateway API (4169, @zac-nixon)
  • [gw api] gateway class reconciler, config generation (4163, @zac-nixon)
  • [feat gw-api] add support for capacity reservation and add simple logic to process lb configuration (4162, @shuqz)
  • Add certs discovery (4159, @wweiwei-li)
  • Add support for TCP_UDP to NLB TargetGroups and Listeners (4161, @lyda, @amorey, @zac-nixon)
  • [feat: gw api] Add common listener config for gateway api (4160, @shraddhabang)
  • bug: fix misformated crd url in CRD cleanup (4157, @Issacwww)
  • [feat:gw-api] add support for ServiceExternalTrafficPolicyLocal (4156, @shuqz)
  • [feat: gw-api] Creating Target Group + TGB from Gateway spec (4150, @zac-nixon)
  • [feat: gw api] Add eventhandler for the gateway resource (4149, @shraddhabang)
  • Enable frontend NLB (4126, @wweiwei-li)
  • [feat: gw api] subnet discovery that works for both ALB / NLB (4137, @zac-nixon)
  • support cli flag to enable manage backend SG rules for ALB (4145, @shuqz)
  • chore: change tgb field to lowercase everywhere to avoid logs dropped due to conflict in OS/ES (4143, @94DanielBrown)
  • Add TargetType field to IngressClassParams (4029, @mikutas)
  • Update security_groups.md (4120, @tucktuck9)
  • Update configurations.md (4120, @tucktuck9)
  • fix bug in subnet resolver (4114, @M00nF1sh)
  • Allow the same certificate to be specified for both the default and SNI certificate (4113, @u-kai)
  • Allow override of Certificate resource fields for duration of webhook certs (4105, @usamaahmadkhan)
  • Merge pull request #4109 from M00nF1sh/subnet-reachability (4109, @M00nF1sh)
  • Update Go to version 1.24.1, update base image to AL2023 (4104, @kellyyan)
  • docs: fix broken link to targetgroupbinding CRD page (4101, @ariyonaty)
  • Add prometheus metrics (4056, @wweiwei-li)
  • [bug fix] handle ram shared VPCs for cross account tgb (4095, @zac-nixon)
  • Add PrefixListsIDs field to IngressClassParams (3860, @gdlx)
  • Added support for setting Proxy protocol per target group based on ServicePort (4079, @pthak94)
  • Added example for multiple certificates to Service annotation (4078, @raghu-manne)
  • service healthcheck timeout doc (3945, @phuhung273)
  • add missing targets field to de/registered targets log (3898, @applike-ss)

v2.12.0

10 Mar 17:54
ab69d95
Compare
Choose a tag to compare

v2.12.0 (requires Kubernetes 1.22+)

Documentation

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.12.0
Thanks to all our contributors! 😊

Action required

🚨 🚨 🚨

In v2.12.0, we have changed the default policy of the LBC webhook from Fail to Ignore in order to improve disaster recovery. See our documentation for how to change the policy back to Fail if you want better guarantees for having readiness gates getting attached to your pods.

We’ve added new fields to both the IngressClassParams and
TargetGroupBinding. Please apply the latest CRD definitions: kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"

AWS ALB now supports integrating with AWS VPC IPAM (ec2:DescribeIpamPools, elasticloadbalancing:ModifyIpPools). We also have added new IAM permissions (elasticloadbalancing:SetRulePriorities) in order to effectively manage your ALB listener rules. We've updated the reference IAM policies to explicitly add new permissions to allow for usage of the features.

What’s new

  • Support AWS VPC IPAM with Application Load Balancers.
    • Application Load Balancer (ALB) now supports BYOIP (Bring your own IP) utilizing AWS VPC IP Manager.
  • Application Load Balancer now supports Advertise CA when using mTLS.
    • When you enable Advertise CA subject names, the Application Load Balancer will advertise the list of Certificate Authorities (CAs) subject names that it trusts, based on the trust store it's associated with. When a client connects to a target through the Application Load Balancer, the client receives the list of trusted CA subject names.
  • NLB now supports path discovery using ICMP.
    • It might be necessary for some environments to allow Path MTU discovery for negotiation of MTU between two hosts. If a receiving host has a smaller MTU than the sending host, the receiving host sends an ICMP message to instruct the sending host to split the payload into multiple smaller packets and retransmit them. This work introduces a Service annotation that when configured, will automatically add a security group rule to the managed security group, depending on the IP address type.
  • The LBC now supports registering targets in cross account target groups.
    • You can now use the iamRoleArnToAssume field in the TargetGroupBinding CRD to allow for registration and deregistration of IP targets into Target Groups outside the account that owns the cluster.
  • The LBC now supports multiple references to the same Target Group.
    • In previous releases there was an enforced 1-1 mapping of TargetGroupBinding to Target Group. v2.12.0 removes this limitation if the MultiCluster flag is set on each binding.

Enhancement and Fixes

  • ListenerRule modification have been refactored to allow for no downtime changes to routing rules.
  • SG ingress and egress rule modifications are re-ordered to prevent outage on mis-configured SG setting.
  • Fixed a bug that prevented the controller from setting Dualstack mode.
  • Used better metric buckets for publishing readiness gate latency.
  • Added support for karpenter.sh/disrupted:NoSchedule taint to improve application availability during node patching and scaling.

Changelog since v2.11.0

v2.11.0

12 Dec 21:56
ba4152c
Compare
Choose a tag to compare

v2.11.0 (requires Kubernetes 1.22+)

Documentation

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.11.0
Thanks to all our contributors! 😊

Action required

🚨 🚨 🚨 We’ve added new fields for capacity unit reservation on IngressClassParams. We’ve also added the targetGroupName field to the TargetGroupBinding which users can set in order to fetch targetGroup by Name instead or ARN. Make sure to update the CRD definition in your cluster. If you're upgrading the charts using helm upgrade, you need to update CRDs manually: kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"

We've updated the reference IAM policies to explicitly add the elasticloadbalancing:DescribeCapacityReservation and elasticloadbalancing:ModifyCapacityReservation permissions for describing and modifying capacity reservation. Please be sure to apply the latest IAM policy when upgrading.

What’s new

  • Support Load balancer Capacity Unit Reservation for ALB and NLBs.
    • Application Load Balancer (ALB) and Network Load Balancer (NLB) now support Load Balancer Capacity Unit (LCU) Reservation that allows you to proactively set a minimum capacity for your load balancer, complementing its existing ability to auto-scale based on your traffic pattern. For more info checkout what’s new post.

Enhancement and Fixes

  • Add support to set the default load balancer scheme at the controller level
  • TargetGroupBinding now support targetGroupName
  • Bug fix: EnablePrefixForIpv6SourceNat is only applicable to NLB

Changelog since v2.10.1

v2.10.1

22 Nov 20:00
2a63f05
Compare
Choose a tag to compare

v2.10.1 (requires Kubernetes 1.22+)

Documentation

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.10.1
Thanks to all our contributors! 😊

What's new

  • Supports HTTP and HTTPS listener attributes on load balancers.
    • Application Load Balancer (ALB) now supports HTTP request and response header modification giving you greater controls to manage your application’s traffic and security posture without having to alter your application code. For more information checkout what’s new post and the ALB document.

Enhancement and Fixes

  • Use pod target namespace to get pod info from repo when resolving endpoint.
  • Remove sort by ID so that EIP allocations and subnet ID order is respected.
  • [Doc] fixed documentation styling for Support UDP-based services over IPv6.
  • Publish internal controller metrics, such as target register time.
  • Trim control characters from OIDC secret

Changelog since v2.10.0

Full Changelog: v2.10.0...v2.10.1

v2.10.0

01 Nov 00:46
8416a43
Compare
Choose a tag to compare

v2.10.0 (requires Kubernetes 1.22+)

Documentation

Image: public.ecr.aws/eks/aws-load-balancer-controller:v2.10.0
Thanks to all our contributors!

Action required

🚨 🚨 🚨 We’ve added the multiClusterTargetGroup field to the TargetGroupBinding which users can set in order to share target groups among different Kubernetes clusters. Make sure to update the CRD definition in your cluster. If you're upgrading the charts using helm upgrade, you need to update CRDs manually: kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"

ELB has updated their managed policy to include ec2:GetSecurityGroupsForVpc. We have updated the Load Balancer Controller policy to reflect that change. Please be sure to apply the latest IAM policy when upgrading.

What’s new

  • AWS Load Balancer Controller now supports MultiCluster target groups. This mode allows users to share target groups among multiple clusters, enabling a wide variety of use cases. For more information checkout the use case documentation
  • We’ve added support SageMaker HyperPod clusters. Users can now install the Load Balancer Controller into SageMaker HyperPod clusters in order to get integration with AWS ELB.
  • We’ve added integration with a new ELB feature that allows configuring sourceNAT for Dualstack NLBs to allow UDP traffic over IPv6.

Enhancement and Fixes

  • Update shield integration to use in-region endpoint rather then always using us-east-1.
  • (docs) Fix TLS Ingress annotation documentation for Security policy
  • (docs) Fix configuration documentation typos
  • (docs) Fix external-dns routing policies link
  • Add new ec2:GetSecurityGroupsForVpc permission to LBC policy.

Changelog since v2.9.2

  • UDP Support over IPv6 via Dualstack NLBs using SourceNAT configurations (#3926)
  • Refactor aws cloud service and introduce a client provider (#3895)
  • New Feature: Multi Cluster TargetGroupBinding (#3853)
  • add sagemaker-hyperpod compute type to resolve its pods via VPC ENI (#3886)
  • Fixed documentation typos (#3885)
  • Fix alphabetic order in CRD for verify CRD to run (#3911)
  • chore(docs): fix external-dns routing policies link (#3893)
  • fix(docs): Update the link to the AWS documentation for the TLS Ingress annotation for Security policy (#3876)
  • update the region of shield api (#3920)
  • add ec2:GetSecurityGroupsForVpc to account for ELB API changes (#3921)
  • BUG FIX: fix log message when target group and cluster are in different VPCs (#3924)