Skip to content

Conversation

@shraddhabang
Copy link
Collaborator

This PR adds documentation for the AWS Global Accelerator (AGA) Controller feature.

  • Add installation guide with CRD installation steps and feature flag requirements
  • Document IAM permissions required for the Global Accelerator controller
  • Clarify cross-region support limitations and auto-discovery capabilities
  • Add configuration options and feature flag details
  • Document AWS partition availability (standard partition only)

Checklist

  • Added tests that cover your change (if possible)
  • Added/modified documentation as required (such as the README.md, or the docs directory)
  • Manually tested
  • Made sure the title of the PR is a good description that can go into the release notes

BONUS POINTS checklist: complete for good vibes and maybe prizes?! 🤯

  • Backfilled missing tests for code in same general area 🎉
  • Refactored something and made the world a better place 🌟

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. approved Indicates a PR has been approved by an approver from all required OWNERS files. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Dec 1, 2025
The AGA Controller operates as a continuous reconciliation loop within the AWS Load Balancer Controller, watching for changes to the `GlobalAccelerator` CRD. When it detects a change, it:

1. Translates the desired state defined in the CRD into corresponding AWS Global Accelerator API calls
2. Automatically discovers resources like Elastic Load Balancers (ELBs) referenced by Kubernetes Services, Ingresses, and Gateway APIs
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we want to also mention we support manual specification (direct ARN as endpointID)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Good point I can update it.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Good catch.

- **Update**: Modifies existing accelerator configurations when the CRD is updated
- **Delete**: Cleans up AWS resources when the CRD is deleted

### Extended Endpoint Discovery
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: I am thinking Extended Endpoint Discovery and Auto-Discovery for One-Click Accelerators consolidate to one auto discovery. They're the same auto-discovery feature just focusing on different aspects (endpoint versus listener and port). Maybe it is partial used based on their crd config. but looks to me it is same thing. What do you think.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree; "Automatic Endpoint Discovery" sounds great as a combined heading.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All right. let me rewrite this to capture this better.


### BYOIP (Bring Your Own IP) Support

The AWS Global Accelerator Controller supports Bring Your Own IP (BYOIP) functionality with some important constraints:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thinking if we want to add some prerequisites. For example, link to how they provision IP address range with Global Accelerator - https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html.

Also, if we want to clarify No Updates Allowed is controller limitation.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Good point.


3. **IAM Permissions**: The IAM role used by the AWS Load Balancer Controller must include the Global Accelerator permissions listed above.

## Installation
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we want to also mention RBAC config needed for controller to have permissions to manage AGA resources

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Required RBACs will be updated automatically when they upgrade to latest version. That we dont have conditional. So we dont need to specify that.

- The accelerator itself
- Listeners with protocol and port range configurations
- Endpoint groups with region and traffic dial settings
- Endpoints from different Kubernetes resource types

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd highlight AWS Load Balancer Controller Ingress, Service, and Gateway resources specifically here as supported endpoint types

- **Update**: Modifies existing accelerator configurations when the CRD is updated
- **Delete**: Cleans up AWS resources when the CRD is deleted

### Extended Endpoint Discovery

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree; "Automatic Endpoint Discovery" sounds great as a combined heading.


### Manual Endpoint Registration

For more advanced use cases, you can manually specify endpoint ARNs instead of using auto-discovery:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's be specific and say that to use multiple regions, you can specify endpoint ARNs, instead of 'advanced use cases'.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it.

The controller updates the CRD status with important information from the AWS Global Accelerator:

- The Accelerator's ARN for reference in other systems
- The assigned DNS name for client access

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The DNS name is a courtesy; because AWS Global Accelerator operates at layer 3/4 (TCP/UDP), you don't need to use it. So I'd call this "The default DNS name for the accelerator."

Also, do we want to provide the dual stack DNS name, if available, in another field? https://docs.aws.amazon.com/global-accelerator/latest/api/API_Accelerator.html#globalaccelerator-Type-Accelerator-DualStackDnsName

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.


This approach ensures reliable service while making necessary changes to your Global Accelerator configuration.

## Port Override Constraints and Solutions

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure this is super relevant / useful to users of the system; we might want to highlight when to use port overrides (when you plan to support both direct access to the endpoint, and also access over AGA): https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoint-groups-port-override.html

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense. Let me update this.


## References

- [AWS Global Accelerator Documentation](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call this the AWS Global Accelerator Developer Guide


## Prerequisites

> **Important**: AWS Global Accelerator is only available in the standard AWS partition. It is not available in specialized AWS partitions such as AWS GovCloud (US) or AWS China regions.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...is only available in the commercial aws partition. It is not available in other partitions such as the AWS GovCoud (aws-us-gov) or AWS China (aws-cn) partitions.

(ref: https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html )


## AWS Global Accelerator Service Quotas

Be aware of the following AWS Global Accelerator service quotas:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What limits do you want to highlight? (Maybe 10 ALBs or NLBs per endpoint group, and 20 accelerators per account?)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Just the overall limits so directed them to the service quota page.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it, we can probably remove this sentence then, and just leave the line with the link to the maintained service quotas documentation?


This document outlines the required IAM permissions for the AWS Global Accelerator Controller feature of the AWS Load Balancer Controller.

## IAM Policy

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be worth highlighting that this is a scoped-down (RBAC) version of the GlobalAcceleratorFullAccess policy: https://docs.aws.amazon.com/aws-managed-policy/latest/reference/GlobalAcceleratorFullAccess.html

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Scoped down version GlobalAcceleratorFullAccess will get full access to all the resources. While our IAM policy is tag based.


This policy provides fine-grained access to AWS Global Accelerator resources:

### Service-Linked Role Creation

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some customers are sensitive about IAM create permissions; it's also fine to pre-create the role outside of k8s automation as well. Not sure if we want to highlight that here or not. (not is simpler.)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have given the same policy for our ELB service as well. So the customers are aware of this. These are anyway recommended policies. If the customer wants, they can always remove this from their policies. This is pretty common practice to use our controller.

@shraddhabang
Copy link
Collaborator Author

/retest


## AWS Global Accelerator Service Quotas

Be aware of the following AWS Global Accelerator service quotas:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it, we can probably remove this sentence then, and just leave the line with the link to the maintained service quotas documentation?

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: emdelaney, shraddhabang, wweiwei-li

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:
  • OWNERS [shraddhabang,wweiwei-li]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@shraddhabang shraddhabang force-pushed the agadocs branch 2 times, most recently from 6c88a98 to f3a8a2c Compare December 3, 2025 11:41
@shraddhabang shraddhabang merged commit c3a7895 into kubernetes-sigs:main Dec 3, 2025
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants