Skip to content

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

v3.0.0

23 Jan 18:51
eada2db

Choose a tag to compare

📚 Quick Links

v3.0.0 (requires Kubernetes 1.22+)

Image: public.ecr.aws/eks/aws-load-balancer-controller:v3.0.0

Documentation

Thanks to all our contributors!💜💜💜


🎉 Gateway API is Now GA!

We are excited to announce that Gateway API support is now Generally Available (GA) in AWS Load Balancer Controller v3.0.0! This milestone marks the production-ready status of Gateway API features for managing AWS Application Load Balancers and Network Load Balancers through the Kubernetes Gateway API. We encourage you to try it out and welcome any feedback via GitHub Issues.
For more gateway api details, please refer to our live doc.

⚠️ Action Required

CRD Updates

Action : Please apply the latest CRD definitions

  • kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"

If using Gateway API feature

  • Installation of LBC Gateway API specific CRDs: kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/config/crd/gateway/gateway-crds.yaml
  • Standard Gateway API CRDs: kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/standard-install.yaml [REQUIRED]
  • Experimental Gateway API CRDs: kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/experimental-install.yaml [OPTIONAL: Used for L4 Routes]

Webhook Certificate Issue

  • Issue: #4359 attempted to fix a race condition in webhook certificate renewal but introduced a critical bug. The aws-load-balancer-tls Secret persists but the Certificate that owned and renewed it was removed, causing eventual certificate expiration and webhook TLS failures (#4541). This prevents the controller from updating target group bindings and can lead to outages. This bug impacts users deploying with Helm and utilizing the enableCertManager=true flag.
  • Action for users staying on older versions: Set keepTLSSecret=false in your helm chart to mitigate the issue
  • Action for users upgrading to v3.0.0: No action required - the fix is included in this release

🔧 Enhancements and Fixes

  • Helm Chart Version Alignment: Helm chart version now aligns with LBC version. Previously, LBC v2.x used Helm chart v1.x (e.g., LBC v2.17 = Helm v1.17). Starting with v3.0.0, both versions match.
  • Gateway Deletion: Removed route count check when deleting gateways, allowing deletion of gateways with attached routes (#4549)
  • Subnet Ordering: Fixed subnet order preservation when using aws-load-balancer-subnets annotation - now maintains requested order instead of non-deterministic ordering (#4504)
  • AZ Mismatch Fix: Fixed orphaned targets issue caused by AvailabilityZone mismatch in refreshUnhealthyTargets - targets are now properly deregistered regardless of cached AZ (#4544)
  • NLB Target Group Limit: Fixed target group association limit error for weighted configs by including base service UID in target group name generation (#4540)
  • Listener Error Propagation: Fixed target group tuple error messages not being propagated to end users (#4545)
  • Webhook Certificate: Reverted race condition fix in webhook certificate renewal that caused issues (#4542)

📋 Full Changelog

  • Revert "fix: Race condition in webhook certificate renewal with cert-… by @zac-nixon in #4542
  • Fix NLB target group association limit issue for weighted configs by @shraddhabang in #4540
  • Fix AZ mismatch in refreshUnhealthyTargets causing orphaned targets by @MinhNguyen-at in #4544
  • Update model_build_listener.go by @zac-nixon in #4545
  • Fix: preserve requested order for subnets when using aws-load-balancer-subnets annotation by @nelsen129 in #4504
  • Remove KeepTLS parameter in helm chart by @zac-nixon in #4548
  • [gateway api] remove route count check for deleting gateway by @zac-nixon in #4549
  • [feat gateway-api]update gw api doc by @shuqz in #4550
  • cut v3.0.0 release by @shuqz in #4551

New Contributors

Full Changelog: v2.17.1...v3.0.0

v2.17.1

09 Jan 22:58
3b9bdb1

Choose a tag to compare

v2.17.1 (requires Kubernetes 1.22+)

Documentation

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

🚀 What's New

QUIC Protocol Support: Added QUIC protocol support for Gateway API and Service API
JWT Validation: Support for JWT validation in Gateway API
Default Load Balancer Scheme: Added support for specifying —default-load-balancer-scheme flag in Helm chart

🔧 Enhancements and Fixes

Bug Fixes

  • Helm Chart: Duplicated CRD in helm kustomization

Documentation Updates

  • Service Actions: Fixed service.beta.kubernetes.io/actions example in documentation
  • Conformance Report: Generated v2.17.0 conformance test report

Changelog since v2.17.0

v2.17.0

19 Dec 20:15
0f0cf4a

Choose a tag to compare

v2.17.0 (requires Kubernetes 1.22+)

Documentation

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

Known Issues

Helm Chart 1.17.0 includes duplicated CRD globalaccelerators, causing kustomize render to fail

⚠️ Actions required to use the new AWS Global Accelerator controller

🚀 What's New

AWS Global Accelerator Support - A new controller that enables declarative management of AWS Global Accelerators directly from Kubernetes using Custom Resource Definitions (CRDs). It allows users to define Global Accelerator resources as Kubernetes manifests, automatically provisioning and managing accelerators, listeners, endpoint groups, and endpoints that reference Kubernetes Ingress, Kubernetes Services, Kubernetes Gateway, and AWS resource ARNs. For more details, check the documentation:

Gateway API - GA Release Candidate: The Gateway API implementation in this release is considered a Release Candidate for its General Availability (GA) release planned for next month. We encourage extensive testing in production-like environments and welcome your feedback via GitHub issues to ensure a stable GA release. What's new in this release:

  • TCP_UDP Protocol: Complete support for combined TCP_UDP protocol on NLB Gateways with detailed usage guidance
  • Per-ParentRef Status: Route status now correctly updates per parentRef instead of per-route
  • ReplacePrefixMatch: Enhanced support with documented ALB limitations
  • Conformance Report: Generated Gateway API conformance report with detailed test results
  • ACM Cert Discovery: Fixed memory leak in ACM certificate discovery
  • App Protocol Support: Added support for kubernetes.io/h2c App Protocol

🔧 Enhancements and Fixes

✨ Enhancements

  • Cross-Zone Handling: Improved handling for cross-zone disabled ALBs with automatic AZ detection
  • Weighted Target Groups: Added support for weighted target groups on NLB listeners

🐛 Bug Fixes

  • Helm Template: Fixed objectSelector.matchExpressions indentation in webhook.yaml
  • Helm Chart: Added --max-targets-per-target-group flag support

📚 Documentation

  • Prometheus Metrics: Corrected metric names to include aws_ prefix in documentation

Changelog since v2.16.0

v2.16.0

20 Nov 22:44
95b07ef

Choose a tag to compare

v2.16.0 (requires Kubernetes 1.22+)

Documentation

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

Action required

🚨 🚨 🚨 For ALB Target Optimizer Users who want to use auto-injection for ALB target control agent: New CRD ALBTargetControlConfig has been added. Update your CRDs and RBAC. 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/bases/elbv2.k8s.aws_albtargetcontrolconfigs.yaml also update rbac policy by applying the latest changes kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/config/rbac/role.yaml

What’s new

We're excited to announce two new features!

Changelog since v2.15.0

v2.15.0

14 Nov 06:31
3b18c25

Choose a tag to compare

📚 Quick Links

v2.15.0 (requires Kubernetes 1.22+)

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

Documentation

Thanks to all our contributors!💜💜💜


What’s new

We're excited to announce two new features!

What's Changed

New Contributors

Full Changelog: v2.14.1...v2.15.0

v2.14.1

17 Oct 22:17
584e3fb

Choose a tag to compare

📚 Quick Links

v2.14.1 (requires Kubernetes 1.22+)

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

Documentation

Thanks to all our contributors!💜💜💜


What’s new

We’re excited to announce support for ALB URL Rewrite! You can use this new feature to transform request URLs using regex patterns (e.g., rewrite /api/v1/users to /users, or ^/api/v1/(.*)$ to /$1). Check out the new use case in our documentation on how to configure your ingress resources to utilize this new capability. For more information about the feature, please see the AWS launch announcement.

Enhancement and Fixes

  • Introduced ALB URL Rewrite support! ( Too many feature request issues to link here ;) )
  • Fixed ListenerAttribute string parsing to allow for multiple values. (#4363)
  • Added ability to configure maximum targets per TargetGroupBinding (#4360)
  • Fixed ListenerRule comparison check that incorrectly marks rules as drifted.
  • New Gateway Route & Listener Statuses
  • Fixed WAF name retrieval (#4388)
  • Added support for EKS Hybrid nodes (#4315)
  • Added low priority tag additions (#4030)
  • Fixed edge case that prevented Listener modifications if rule limit has been exceeded (#4373)
  • Updated docs for NLB healthchecks (#3419)

What's Changed

New Contributors

Full Changelog: v2.14.0...v2.14.1

v2.14.0

02 Oct 19:28
d847890

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

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

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

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