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

EKS部署Nginx Ingress自动添加安全组规则的作用及管理方法

EKS NLB自动注入节点安全组规则说明及管理方案

三类自动添加规则的具体作用

你看到的三类带kubernetes.io/rule/nlb/前缀的入站规则,均为K8s AWS云控制器管理器(CCM)在创建Network Load Balancer时自动添加的后端通信必要规则,和Bitnami的Nginx Ingress Chart本身没有直接关系:

  • kubernetes.io/rule/nlb/health={load-balancer-name} 前缀的TCP规则
    这类是NLB健康检查放通规则。跨可用区部署的NLB会从每个所在子网的IP段发起健康探测,源地址为对应子网的CIDR,目标端口为Nginx Ingress Service对应的NodePort临时端口。你看到的两个不同端口,分别对应Ingress暴露的HTTP、HTTPS两个服务端口的NodePort映射,每个子网一条规则是为了覆盖所有可用区NLB节点的探测源地址。
  • kubernetes.io/rule/nlb/client={load-balancer-name} 前缀的全网源TCP规则
    这类是NLB后端流量转发规则。当Nginx Ingress的Service配置externalTrafficPolicy: Cluster时,NLB会对入站流量做源地址转换,转发到集群任意节点的对应NodePort,再由kube-proxy路由到实际运行的Ingress Pod,这条规则用于放通所有公网源到节点NodePort的入向流量。如果将流量策略改为Local,这类规则的源地址会自动收窄为NLB所在子网的CIDR段,不会放通全网。
  • kubernetes.io/rule/nlb/mtu 前缀的ICMP规则
    这是路径MTU发现(PMTUD)的必要规则。AWS NLB和后端节点之间默认使用9001 MTU的巨型帧传输,当公网客户端发送的数据包大小超过链路MTU(常规公网链路为1500)时,节点需要返回Type 3 Code 4(目标不可达:需要分片)的ICMP报文通知NLB调整报文大小,缺少这条规则会出现大请求丢包、长连接超时等问题。

规则残留原因及规范化管理方案

卸载后规则残留的原因

这些规则的生命周期由AWS CCM管理,不属于Helm Chart的资源管理范围。Helm卸载时只会删除K8s集群内的Service、Ingress等自定义资源,如果卸载时CCM组件异常、或者节点已经被提前销毁,CCM无法触发安全组规则的删除逻辑,就会导致规则残留在节点安全组上。

Bitnami Nginx Ingress Helm Chart配置方案

通过Chart参数配置可以完全接管这类规则的生命周期,避免自动注入和残留:

  • 安装Chart时关闭CCM自动修改节点安全组的能力,设置参数:
    service:
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-manage-backend-security-groups: "false"
    
  • 提前手动或通过IaC创建好三类必要的后端安全组规则,在Chart参数中指定预配置的安全组作为NLB后端安全组:
    service:
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-backend-security-groups: "sg-xxxxxx,sg-yyyyyy"
    
  • 如果需要保留CCM自动管理规则的能力,要确保集群中AWS CCM组件正常运行,卸载Chart前不要先删除节点组或CCM的工作负载,给CCM留出触发清理逻辑的时间窗口。

Terraform规范化管理方案

完全通过Terraform管理安全组规则可以彻底避免孤儿规则残留:

  1. 显式关闭CCM自动管理后端安全组的能力,在Terraform管理的Ingress Helm Release配置中传入上述关闭自动管理的注解参数
  2. 在托管节点组关联的安全组中,通过aws_security_group_rule资源定义三类必要规则:
    • 健康检查规则:以所有公有子网CIDR为源地址,放通Ingress Service对应的NodePort端口段TCP入站
    • 客户端流量规则:根据externalTrafficPolicy配置选择源段,Cluster模式放通0.0.0.0/0到对应NodePort的TCP入站,Local模式仅放通NLB所在子网CIDR到对应NodePort的TCP入站
    • MTU探测规则:放通源0.0.0.0/0的ICMP Type 3 Code 4入站
  3. 针对已经存在的历史残留规则,可以通过Terraform自定义数据源,过滤所有描述匹配kubernetes.io/rule/nlb/*且对应NLB已经被删除的孤儿规则,统一纳入Terraform管理后批量清理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:51:45