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

如何通过Terraform创建NLB并在Helm安装Nginx-controller时完成关联且二者部署分离

问题解答

完全可以实现,该拆分方案是生产环境常用的最佳实践,既可以实现负载均衡层和Ingress控制器层的独立管理迭代,也能避免Ingress控制器重装时触发负载均衡重建导致的业务中断。

前置准备:Terraform创建NLB的注意要点

  • 提前通过Terraform完成对应云厂商NLB资源创建,同步创建匹配后续Nginx Controller暴露端口的目标组:默认HTTP对应80端口、HTTPS对应443端口,目标组类型根据K8s集群节点类型选择,例如AWS EKS的EC2节点选instance类型、Fargate节点选ip类型。
  • 配置NLB、目标组关联的安全组规则,放通NLB到K8s节点对应业务端口的流量,同时确保健康检查端口的访问权限配置正确。

Helm安装Nginx Controller关联已有NLB的配置方法

不需要使用Helm默认的自动创建LoadBalancer类型Service的逻辑,只需修改values.yaml配置指定已有NLB的关联参数即可,不同云厂商只需替换对应annotation配置,通用配置逻辑如下:

  1. 调整Service类型配置,禁用自动创建负载均衡:
controller:
  service:
    # 目标组为instance类型时选NodePort,ip类型时可以选ClusterIP
    type: NodePort
    annotations:
      # 以下为AWS NLB的示例annotation,其他云厂商替换为对应厂商的指定已有LB的配置即可
      service.beta.kubernetes.io/aws-load-balancer-type: external
      service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance
      service.beta.kubernetes.io/aws-load-balancer-name: <你提前创建的NLB名称>
  1. 执行安装命令加载自定义配置:
    helm install ingress-nginx ingress-nginx/ingress-nginx -f values.yaml -n ingress-nginx --create-namespace

后续独立管理说明

  • 如需调整NLB的监听规则、带宽、安全组等配置,直接修改Terraform代码执行terraform apply即可,无需改动Nginx Controller的部署配置
  • 如需升级/调整Nginx Controller的配置,直接执行Helm相关操作即可,不会影响已有的NLB资源配置,完全实现两个组件的生命周期解耦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:54:06