-
Notifications
You must be signed in to change notification settings - Fork 1.6k
[feat aga] Add documentation for AGA controller #4478
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| 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 |
There was a problem hiding this comment.
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)
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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: |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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: |
There was a problem hiding this comment.
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'.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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: |
There was a problem hiding this comment.
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?)
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.)
There was a problem hiding this comment.
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.
|
/retest |
|
|
||
| ## AWS Global Accelerator Service Quotas | ||
|
|
||
| Be aware of the following AWS Global Accelerator service quotas: |
There was a problem hiding this comment.
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?
|
[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:
Approvers can indicate their approval by writing |
6c88a98 to
f3a8a2c
Compare
This PR adds documentation for the AWS Global Accelerator (AGA) Controller feature.
Checklist
README.md, or thedocsdirectory)BONUS POINTS checklist: complete for good vibes and maybe prizes?! 🤯