如何自动化配置Azure NSG开放全量NodePort端口范围
AKS NodePort公网暴露NSG配置方案
你不需要针对单个节点IP配置规则,也不需要跟随集群自动伸缩持续维护规则列表,以下是可直接落地的最简方案:
- 直接基于节点子网配置NSG入站规则
AKS所有节点(包括自动伸缩扩容出的新节点)都会部署在集群配置的节点虚拟网子网内,你只需要创建一条入站规则:- 目标地址范围:填写节点池所在子网的CIDR地址段
- 目标端口:
30000-32767 - 协议:根据你的服务需求选择TCP/UDP,或同时选两种
- 源地址:根据你的访问控制需求设置,对公网开放可设为
*,仅允许指定来源访问就填对应IP段
这条规则会自动对该子网内所有存量、新增节点生效,完全不需要你单独获取带公网IP的节点内网地址,也不会因为集群自动伸缩、节点重建失效,和你手动指定单个节点内网IP10.240.0.4的测试效果完全一致。
- 如果你需要限制规则仅对开启了节点公网IP的节点池生效,可以给这类节点池分配独立的专用子网,把上述NSG规则绑定到该独立子网即可,不会影响其他未开公网IP的节点。
注意:如果你的NSG是关联在节点网卡层面而非子网层面,只需要给开启公网IP的节点池对应的虚拟机规模集的网络配置绑定上述开放NodePort段的NSG即可,规模集新建的节点会自动继承关联的NSG配置,同样不需要单独为新节点调整规则。
方案避坑说明
- 不需要为每个NodePort服务单独创建LoadBalancer类型资源:LoadBalancer自动创建NSG规则的逻辑是AKS云控制器检测到LoadBalancer资源时触发的,该方案会额外产生公网IP成本,且你无法控制部署流程的场景下完全不适用,不需要绕路实现。
- 用Terraform实现自动化配置时不需要手动查询节点IP:你可以直接在Terraform代码中引用AKS节点池关联的子网资源的
address_prefixes属性作为NSG规则的目标地址参数,后续节点池扩缩容、子网配置变更时,Terraform会自动同步状态,不需要人工介入调整规则。 - Azure没有为开启
enable_node_public_ip的节点自动开放NodePort端口段的默认配置,官方文档没有相关说明是因为这个能力属于NSG的基础流量过滤能力,不属于节点公网IP配置的专属特性,你配置一次上述子网级规则即可永久生效。
内容的提问来源于stack exchange,提问作者Carl Reid
相关产品推荐
相关产品推荐

