terraformkubernetes-helmaws-nlb

AWS NLB over Helm in Terraform - how to find DNS name?


I am using Helm chart provisioned by Terraform which creates Network Load Balancer, but I do not know how to get DNS name of this balancer so I can create Route53 records in Terraform for it.

If I can get it's ARN, I can call it over data block and read dns_name, however there is nothing like thit that Helm can return for me.

Do you have any suggestions?
I would like to keep it as IaC as possible

PS: I am passing some values to Helm chart so it's creating NLB, native functionality of this Chart is to create Classic LB.

   service.beta.kubernetes.io/aws-load-balancer-type: nlb

Solution

  • I just found and answer, it's simple using: Note: I had to specify namespace, otherwise was service null (not found).

    data "kubernetes_service" "ingress_nginx" {
      metadata {
        name = "ingress-nginx-controller"
        namespace = "kube-system"
      }
    }
    
    output "k8s_service_ingress" {
      description   = "External DN name of load balancer"
      value         = data.kubernetes_service.ingress_nginx.status.0.load_balancer.0.ingress.0.hostname
    }
    

    It can be found in official docs too - https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/data-sources/service