kubernetes-sigs / aws-load-balancer-controller

A Kubernetes controller for Elastic Load Balancers
https://kubernetes-sigs.github.io/aws-load-balancer-controller/
Apache License 2.0
3.88k stars 1.44k forks source link

[Feature Request] Global LoadBalancer support #1572

Open M00nF1sh opened 3 years ago

M00nF1sh commented 3 years ago

Global LoadBalancer support

neilkuan commented 3 years ago

any update 😊

fejta-bot commented 3 years ago

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

fejta-bot commented 3 years ago

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

vito-laurenza-zocdoc commented 3 years ago

/remove-lifecycle stale

nvermalulu commented 3 years ago

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 commented 3 years ago

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

IliaGe commented 2 years ago

+1 for needed use cases :)

xeivieni commented 2 years ago

+1 needed here to 🙏

Tien-Jellyfish commented 2 years ago

+1

dbs-gong commented 2 years ago

+1

goruha commented 2 years ago

+1

apatapniou commented 2 years ago

+1

M00nF1sh commented 2 years ago

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

vyanhursky commented 2 years ago

+1

danthegoodman1 commented 2 years ago

+1

mihaela1992 commented 2 years ago

+1

ChristianOps commented 2 years ago

+1

carlcauchi commented 2 years ago

+1

Eran-BenShahar commented 2 years ago

+1

GuilleAmutio commented 2 years ago

+1

olivernaaris commented 2 years ago

+1

ShonL commented 2 years ago

Any updates? 2.4 is out

mreardonx commented 1 year ago

+1

WaffleThief123 commented 1 year ago

+1 here as well

acrazing commented 1 year ago

+1 again, any updates?

anilerencelik commented 1 year ago

+1

thalescosta commented 1 year ago

+1

fabianberisha commented 1 year ago

+1

regmicmahesh commented 1 year ago

+1

fjanicki commented 1 year ago

bump, +1

sgrotz-cepres commented 1 year ago

No update on this?

gbhosal commented 1 year ago

+1

jwenz723 commented 1 year ago

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

andrikoz commented 1 year ago

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 commented 1 year ago

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 },
  2. 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.

  3. 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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

+1

sujith-s commented 1 year ago

+1

minhhoangvn commented 11 months ago

+1

shamjyothi commented 11 months ago

+1

assiakhateeb commented 10 months ago

+1

dchittibala commented 10 months ago

+1

flossiebilly commented 10 months ago

+1

longleionah commented 9 months ago

+1 we need this feature

Gershon-A commented 9 months ago

+1

potix2 commented 9 months ago

+1

bnssoftware commented 7 months ago

+1 Any update?

gugu commented 7 months ago

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

bnssoftware commented 7 months ago

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?