Skip to content
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

[Feature Request] Global LoadBalancer support #1572

Open
M00nF1sh opened this issue Oct 27, 2020 · 54 comments
Open

[Feature Request] Global LoadBalancer support #1572

M00nF1sh opened this issue Oct 27, 2020 · 54 comments
Labels
kind/feature Categorizes issue or PR as related to a new feature.
Projects

Comments

@M00nF1sh
Copy link
Collaborator

Global LoadBalancer support

@M00nF1sh M00nF1sh created this issue from a note in Roadmap (TODO) Oct 27, 2020
@M00nF1sh M00nF1sh added the kind/feature Categorizes issue or PR as related to a new feature. label Oct 27, 2020
@M00nF1sh M00nF1sh changed the title Global LoadBalancer support [Feature request] Global LoadBalancer support Oct 27, 2020
@M00nF1sh M00nF1sh changed the title [Feature request] Global LoadBalancer support [Feature Request] Global LoadBalancer support Oct 27, 2020
@neilkuan
Copy link
Contributor

neilkuan commented Jan 6, 2021

any update 😊

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Apr 6, 2021
@kishorj kishorj removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Apr 6, 2021
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jul 5, 2021
@vito-laurenza-zocdoc
Copy link

/remove-lifecycle stale

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jul 7, 2021
@nvermalulu
Copy link

any update .. Must need feature for DR

ALB Ingress --> Global Load Balancer (aws global accelerator ) --> external DNS automation like we have currently ALB Ingress --> external DNS

@olemarkus
Copy link
Contributor

Being able to have LB controller manage either instance or IP targets to a global accelerator would be really useful.

@IliaGe
Copy link

IliaGe commented Oct 31, 2021

+1 for needed use cases :)

@xeivieni
Copy link

+1 needed here to 🙏

@Tien-Jellyfish
Copy link

+1

3 similar comments
@dbs-gong
Copy link

dbs-gong commented Jan 5, 2022

+1

@goruha
Copy link

goruha commented Jan 6, 2022

+1

@apatapniou
Copy link

+1

@M00nF1sh
Copy link
Collaborator Author

We acknowledge this is a important feature request, and will start work on it post our v2.4.0 release.

@vyanhursky
Copy link

+1

7 similar comments
@danthegoodman1
Copy link

+1

@mihaela1992
Copy link

+1

@ChristianOps
Copy link

+1

@carlcauchi
Copy link

+1

@Eran-BenShahar
Copy link

+1

@GuilleAmutio
Copy link

+1

@olivernaaris
Copy link

+1

@anilerencelik
Copy link

+1

3 similar comments
@thalescosta
Copy link

+1

@fabianberisha
Copy link

+1

@regmicmahesh
Copy link

+1

@fjanicki
Copy link

bump, +1

@sgrotz-cepres
Copy link

No update on this?

@gbhosal
Copy link

gbhosal commented Jan 17, 2023

+1

@jwenz723
Copy link
Contributor

I was told by an AWS tam that this will likely not get worked on during 2023.

@andrikoz
Copy link

We are designing our multi-regional setup, so including aws global accelerator in lb controller is really critical. Do we know if this is already planned?

@ChrisLahaye
Copy link

You could provision the load balancer with appropriate tags and global accelerator resources manually. I know this is not an ideal or fully dynamic solution but it at least lets you use ingresses with global accelerator.

  1. Provision a load balancer so that we can later provision a global accelerator endpoint group using this static load balancer as endpoint. Apply the following tags to use an existing load balancer with the controller:
        { key: 'elbv2.k8s.aws/cluster', value: clusterName },
        { key: 'ingress.k8s.aws/resource', value: 'LoadBalancer' },
        { key: 'ingress.k8s.aws/stack', value: groupName },
  1. Provision the global accelerator with a listener on port 80 and 443 and an endpoint group using the using the static load balancer as endpoint.

  2. Create at least one ingress to avoid the load balancer being terminated by the controller. Assign ingresses to this specific load balancer by annotating the resources with alb.ingress.kubernetes.io/group.name using the same value as the ingress.k8s.aws/stack tag of the load balancer. We use the following ingress to ensure there always exists at least one such ingress:

{
  apiVersion: 'networking.k8s.io/v1',
  kind: 'Ingress',
  metadata: {
    name: groupName,
    annotations: {
      'alb.ingress.kubernetes.io/actions.ok': '{"type":"fixed-response","fixedResponseConfig":{"contentType":"text/plain","statusCode":"200","messageBody":"OK"}}',
      'alb.ingress.kubernetes.io/certificate-arn': certificateArns.join(),
      'alb.ingress.kubernetes.io/group.name': groupName,
      'alb.ingress.kubernetes.io/listen-ports': '[{"HTTP": 80}, {"HTTPS": 443}]',
      'alb.ingress.kubernetes.io/scheme': 'internet-facing',
      'alb.ingress.kubernetes.io/ssl-redirect': '443',
      'kubernetes.io/ingress.class': 'alb',
    },
  },
  spec: {
    rules: [
      {
        host: loadBalancer.attrDnsName,
        http: {
          paths: [
            {
              path: '/',
              pathType: 'ImplementationSpecific',
              backend: {
                service: {
                  name: 'ok',
                  port: { name: 'use-annotation' },
                },
              },
            },
          ],
        },
      },
    ],
  },
},

@andrikoz
Copy link

Thanks, @ChrisLahaye I guess that would work, however, we operate with alb controller && external DNS controller so load balancers get provisioned based on ingress objects dynamically via the controller, since we don't want to break the dynamic nature of our flow we are looking for a fully dynamic solution as you pre-mentioned.

@gugu
Copy link

gugu commented May 10, 2023

I will add one more reason for controller for GA - we need to serve non-http traffic (DNS and HTTPS with custom SNI hook). ALB can not handle it and NLB + GA can not preserve IP address correctly. Controller, which can register instances/IP in Global Accelerator and deregister them automatically will be extremely helpful

@jogendrakumarjangid
Copy link

+1

2 similar comments
@sujith-s
Copy link

sujith-s commented Jul 6, 2023

+1

@minhhoangvn
Copy link

+1

@shamjyothi
Copy link

+1

3 similar comments
@assiakhateeb
Copy link

+1

@dchittibala
Copy link

+1

@flossiebilly
Copy link

+1

@longleionah
Copy link

longleionah commented Nov 22, 2023

+1 we need this feature

@Gershon-A
Copy link

+1

1 similar comment
@potix2
Copy link

potix2 commented Dec 12, 2023

+1

@bnssoftware
Copy link

+1 Any update?

@gugu
Copy link

gugu commented Feb 10, 2024

Right now it is possible to use NLB endpoints for AWS Global Accelerator and use controller with NLB

@bnssoftware
Copy link

So if this works, why is this still an open issue? Perhaps it's not working like we have requested? So right now, when installing the ingress-nginx controller it automatically creates an NLB in AWS for me and maps that as the external address for the internal Load Balancer. How do I instead tell the Load Balancer to use an existing Global Accelerator address, instead of creating an NLB for me and using that?

@mballoni
Copy link

@bnssoftware I believe you can create your load balancer "manually" and then use the aws lb controller target group option

@torgus
Copy link

torgus commented Apr 4, 2024

+1

2 similar comments
@RAR
Copy link

RAR commented May 3, 2024

+1

@NourDh
Copy link

NourDh commented Jun 12, 2024

+1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature.
Projects
Development

No branches or pull requests