-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
feat: Add WatchIPBlocks and WatchInstanceFilters to TargetGroupBinding #1865
feat: Add WatchIPBlocks and WatchInstanceFilters to TargetGroupBinding #1865
Conversation
Thanks for your pull request. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please follow instructions at https://git.k8s.io/community/CLA.md#the-contributor-license-agreement to sign the CLA. It may take a couple minutes for the CLA signature to be fully registered; after that, please reply here with a new comment and we'll verify. Thanks.
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
Welcome @nicolasgarfinkiel! |
Hi @nicolasgarfinkiel. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: nicolasgarfinkiel The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/check-cla |
@nicolasgarfinkiel |
Hi @M00nF1sh, thanks for your comments. I think this PR opens the door to some configuration corner cases but I don't see why you consider it hacky. Can you please elaborate? We are narrowing the controller area of responsibility using current API constructs: in the case I actually added these as arguments to the controller's executable but since there was We need to have this feature because of our use case, so in case you guys don't accept this, what is your recommendation to support this feature, other than maintaining our own fork? I would like to avoid maintaining a fork as much as possible. |
ad04f6e
to
48dbf65
Compare
I think it's hacky in the way how it sub-divides a TargetGroup and how it treats IP/Instance Targets. If we sub-divides a targetGroup, ideally it should work like another approach is instead of sub-divides a TargetGroup, we use weighted routing, so each set of Targets get it's own TargetGroup. However, only ALB supports this currently, and NLB support for this is planed for 2022. so, personally i'm opposite to add this as fields into TGB's API as it's not generic and adds unnecessary burden for generic users. wondering what's the opinion of other folks? @kishorj |
My concerns
With the current controller, we aren't ready to support cross-cluster modification of resources in a reliable and secure way. While this use case is compelling, we should look at whether alternative solutions are possible. |
I did consider what you mention as "a TGB only manages targets in TargetGroup added by it", and concluded that by filtering we can achieve that without actually managing state, which would require substancial work and also would open a can of worms. I like the idea of adding this feature as a flag to the controller binary (as originally intended) as this makes more sense on a cluster wide level. I will update the PR accordingly. Thanks for your comments.
Thanks. |
48dbf65
to
57f86d9
Compare
57f86d9
to
33ea2c8
Compare
@nicolasgarfinkiel: PR needs rebase. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-contributor-experience at kubernetes/community. |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle rotten |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /close |
@k8s-triage-robot: Closed this PR. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Introduction
This PR adds
WatchIPBlocks
andWatchInstanceFilters
toTargetGroupBinding
.In our use case our product is deployed in multiple EKS clusters that are load balanced through a common ALB. When sharing a single target group among many
aws-load-balancer-controller
instances registration/deregistration of one controller affects other controllers. This PR makes aTargetGroupBinding
to only care about a specific instance group or address space and leave the rest unmanaged.WatchIPBlocks
When using
TargetType: ip
, you can specify IP blocks in CIDR notationto only list (from AWS) ip targets that fall within their ranges. This is
useful when sharing a single target group among many
aws-load-balancer-controller
instances (for example across different clusters), so registration/deregistration
of one controller does not affect other controllers.
WatchInstanceFilters
When using
TargetType: instance
, you can specify filters to only list(from AWS) instance targets that match the specified filters. This is
useful when sharing a single target group among many
aws-load-balancer-controller
instances (for example across different clusters), so registration/deregistration
of one controller does not affect other controllers.
Please read this reference
for more information about these filters.