You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Helm与Terraform部署Ingress ALB时如何获取负载均衡器域名

问题背景
  • 部署EKS集群,计划在集群内运行基于ALB的Ingress控制器
  • 需要获取负载均衡器DNS地址,用于Route53的CNAME记录配置
  • 现有通过Terraform Helm provider部署AWS Load Balancer Controller的配置片段如下:
resource "helm_release" "aws_lb_controller" {
  name              = "aws-load-balancer-controller"
  repository        = "https://aws.github.io/eks-charts"
  chart             = "aws-load-balancer-controller"
  namespace         = "kube-system"
  force_update      = "true"
  dependency_update = "true"
  depends_on = [ aws_iam_role.aws_lb_controller_role, null_resource.get_kubeconfig]
  # version           = "2.4.2" # current

  set {
    # 其余配置项
  }
}
实现方法

AWS Load Balancer Controller本身是管控组件,部署完成时不会提前创建ALB资源。ALB实例会在你创建标注了alb作为Ingress Class的业务Ingress资源时,由控制器自动调用AWS接口创建,对应DNS地址可以通过以下两种方式获取:

Terraform自动读取(适合基础设施即代码场景)

在Terraform中定义业务Ingress资源后,直接从Ingress的状态属性中读取ALB分配的主机名,直接传入Route53记录配置即可,不需要手动查询,示例配置:

# 业务Ingress配置
resource "kubernetes_ingress_v1" "business_ingress" {
  metadata {
    name      = "service-ingress"
    namespace = "default"
    annotations = {
      "kubernetes.io/ingress.class"      = "alb"
      "alb.ingress.kubernetes.io/scheme" = "internet-facing"
      # 按需添加其余ALB配置注解,比如监听端口、SSL证书、安全组等
    }
  }

  spec {
    # 填写对应的路由规则、后端服务配置
    rule {
      http {
        path {
          path = "/*"
          backend {
            service {
              name = "你的业务服务名"
              port {
                number = 服务端口
              }
            }
          }
        }
      }
    }
  }

  # 确保ALB控制器部署完成后再创建Ingress
  depends_on = [helm_release.aws_lb_controller]
}

# Route53 CNAME记录配置,直接引用Ingress状态中的ALB DNS
resource "aws_route53_record" "service_cname" {
  zone_id = "你的Route53托管区域ID"
  name    = "业务访问域名,比如api.yourdomain.com"
  type    = "CNAME"
  ttl     = 300
  records = [kubernetes_ingress_v1.business_ingress.status[0].load_balancer[0].ingress[0].hostname]
}

命令行手动查询(适合临时验证场景)

业务Ingress部署完成后,执行以下kubectl命令可直接输出对应ALB的DNS地址:

kubectl get ingress <你的Ingress资源名称> -n <Ingress所在命名空间> -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'

常见误区:不要尝试从aws-load-balancer-controller的Helm部署输出中找ALB DNS,控制器部署阶段还没有生成任何ALB资源,自然没有对应的DNS地址。


内容的提问来源于stack exchange,提问作者Hristijan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 15:57:28