skip to Main Content

I normally use GKE but wanted to test EKS and I am struggling to deploy nginx as ingress-controller. In GKE I get an external IP, put it in the values config (controller.service.loadBalancerIP) sent it and ready to go.

In AWS an NLB is been created but the Schema is interna and therefore I cannot get external traffic in. Can you direct me what I need to set in the default
https://kubernetes.github.io/ingress-nginx (4.7.1) Helm chart to change it to an internet-facing NLB? I am deploying the chart via ArgoCD.

I also tried to annotate already the subnets with kubernetes.io/role/elb and kubernetes.io/role/internal-elb tags but it changed nothing…

EKS version is 1.27

NLB Schema Internal

2

Answers


  1. In AWS EKS, you usually want to use the AWS Load Balancer Controller, which is both a load balancer and an ingress controller. This will deploy a Network Load Balancer for each Service you create, and an Application Load Balancer for each Ingress you create in the cluster.

    Refer to the link above, and to:
    https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html

    Login or Signup to reply.
  2. You need to set these annotations to make your NLB internet-facing

    #   --set controller.service.annotations."service.beta.kubernetes.io/aws-load-balancer-scheme"=internet-facing 
    #   --set controller.service.annotations."service.beta.kubernetes.io/aws-load-balancer-nlb-target-type"=ip 
    

    Regarding the controller.service.loadBalancerIP annotation, it didn’t work for me, the nlb keep getting random IPs.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search