-
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
Installing multiple instances of the ALB controller with different configuration and ingress class into the same namespace (kube-system) #2233
Comments
Additional information... Installing
It appears that the webhook is non-shareable and is installed into a different namespace from the controller? |
@dnutels what's your use case to run multiple deployments instead of a single one? |
Thank you for clarifying, I somehow missed that one. It's somewhat academic. The main use case it to be able to configure the controller differently for different namespaces/ingress classes. I would imagine that having different service accounts might be useful... |
The Kubernetes project currently lacks enough 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 stale |
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 |
Our use case is to have an At the moment the external ALB controller creates the stack for an external ingress and then the internal ALB controller removes it all again (I did think that was a bug but this issue makes it clear that it's more of an unimplemented feature) |
/remove-lifecycle rotten |
Another reason for wanting a separate ingress class is for use with external-dns We use separate external-dns controllers, one that controls private DNS and one that controls public DNS, so that the controller knows which zones to manage records We use annotation filters (and more likely ingress class filters soon) to associate a particular ingress class with a particular external-dns controller. Currently therefore we can only manage only one of public or private ALB ingresses |
Yet a third reason is if you need a network load balancer and an application load balancer for different workloads (for example, doing TCP passthrough for one workload vs needing WAF protection for another workload) |
We have this use case as well. I got the alb-ingress helm chart (v2.4.1) deployed twice by specifying |
The Kubernetes project currently lacks enough 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 stale |
/remove-lifecycle stale |
The Kubernetes project currently lacks enough 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 stale |
We are still here… |
The Kubernetes project currently lacks enough 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 stale |
Still an issue. Confirming the use-case - public vs. internal ALBs - and the need for separate configuration. In fact, instead of installing multiple controller instances a more elegant solution could probably be introducing support for multiple Thank you! /remove-lifecycle stale |
I'm having a similar issue. The inability to specify watchNamespace for multiple namespaces and the inability to create multiple deployments means that it is impossible to deploy load balancers for only 2 specific, externally facing namespaces. |
Would like to echo the sentiments above, particularly for using this to manage public/private DNS alongside external-dns. |
We currently work around this limitation with a script that temporarily removes the MutatingWebhookConfiguration and ValidatingWebhookConfiguration objects, creates TargetGroupBindings that the secondary aws-load-balancer-controllers use, then recreate the MutatingWebhookConfiguration and ValidatingWebhookConfiguration objects... +1 for actual multiple aws-load-balancer-controller support. Also thank you @M00nF1sh and others who have continually improved this project! |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
Chiming in that I would also benefit from the ability to serve multiple IngressClasses from one deployment for internal vs external purposes. |
Amazing how this still seems a low priority ticket... and we are paying to use EKS... this is really sad :-( |
I have the same internal/external ingressClass need. Would love to see some movement on this. |
I have the same issue as well. I should be able to create both internal and external ingress. Any updates? |
@dim-at-ocp
Thank you! |
I guess you still hit #2185 with that approach. |
@visit1985 Thanks for the response. I didn't notice that there's also an open issue #2185 (Allow multiple controller deployment per cluster) regarding deployment of multiple controller instances within a single cluster. I've thought it will work as a workaround in the meantime while this issue #2233 is still open. It kinda sucks, we have a use case for exposing an internal ingress and external ingress using aws-lb-controller. |
I can just give an update on my impl.: We are currently installing a single controller on EKS Fargate via helm-chart with createIngressClassResource=false + ingressClassParams.create=false and then deploying the IngressClass and IngressClassParams 2 or more times depending on our needs. All IngressClasses are handled by a singe controller without issues in our scenario. We only use it to provision ALBs from ingresses. No other use-cases like NLBs or k8s services etc. |
@visit1985 Thanks and in your implem, since it provisions multiple ALBs as ingresses with a single controller, were you guys able to implement an internal and external ingress with it? |
Yes, but as stated, on a Fargate only cluster. We didn’t test it with EC2 node groups. |
@visit1985 Got it, Fargate only cluster, what is the target type of those ALBs? is it private IPs? We're using EC2 node groups |
@nd-at-globetel |
Yet another use case - if I want to deploy another LB controller (for using different IngressClass for each) in another VPC (like in this blogpost https://aws.amazon.com/blogs/containers/expose-amazon-eks-pods-through-cross-account-load-balancer/, not only in VPC-account-A, but and in the current EKS cluster VPC-account-B. |
@talkerbox how about in the same VPC (EKS Cluster)? Is it still not supported? |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
Please don't close this ticket.. this is a basic need for many of the users. |
/remove-lifecycle stale |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
We are encountering a similar challenge where a single Kubernetes cluster is shared among multiple customers. Our objective is to control the subnet where the network load balancer (NLB) is created and the account responsible for the operation. Specifically, our goal is to provision NLBs in the customer’s account rather than in the account hosting the Kubernetes cluster. Currently, the setup includes a NetworkAccount hosting the EKS cluster and VPC. In the NetworkAccount, we create subnets for each customer and share these subnets with their respective CustomerAccounts. We aim to provision NLBs within each CustomerAccount. What are the available options to effectively manage account switching in this scenario? I am considering using roles—one role per CustomerAccount—and deploying multiple controllers. Is this approach feasible? Thank you. |
There is a simple way you guys can solve this issue. Don't use fullNameOverride, instead use nameOverride (Tried and tested, working!) Make the following changes in values.yaml to create new aws load balancer controller with different ingressClass:- nameOverride: "<your_new_ingress_class_name>-aws-load-balancer-controller"
ingressClass: <your_new_ingress_class_name> Then run the helm command to install new deployment:- helm upgrade --install <your_new_ingress_class_name>-aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system -f values.yaml |
Describe the bug
I am trying to install multiple, differently configured instances of the ALB controller into
kube-system
namespace. It won't work because the first instance claims ownership ofaws-load-balancer-tls
in the target namespace viameta.helm.sh/release-name
and prevents the second instance to do the same.Steps to reproduce
values.yml
for the first instance:values.yml
for the second instance:Then the instances are deployed using:
Expected outcome
Both controller instances are deployed and each handles separate ingress class.
Actual outcome
Environment
Additional Context:
The text was updated successfully, but these errors were encountered: