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

AKS集群配置SMTP白名单实现Pod出站邮件发送方案咨询

AKS(Azure CNI+AGIC)场景下固定出站邮件源IP适配SMTP白名单方案

先明确源IP问题

在你当前的Azure CNI模式+AGIC部署的AKS集群中:

  • AGIC仅负责入向流量的路由,完全不影响Pod的出站流量路径。
  • 默认情况下,Pod的出站流量会通过所在节点的网络栈进行SNAT转换,SMTP中继服务器看到的源IP是节点的公网IP(如果节点分配了公网IP);若节点无公网IP,流量会走集群配置的出站网关(如NAT网关、Azure Firewall)的IP。
  • Pod IP和节点IP确实会随Pod重建、节点扩容/替换动态变化,无法直接作为白名单。

可行解决方案(适配Azure CNI,无需StaticEgressGatewayPreview)

方案1:用Azure NAT网关绑定Pod子网,固定出站IP池

这是最通用的方案,适合所有需要固定出站IP的Pod:

  • 原理:将Pod所在的子网关联到Azure NAT网关,NAT网关配置固定的标准SKU公网IP池。Pod出站流量会被自动SNAT成NAT网关的公网IP,SMTP服务器只需将这些固定IP加入白名单即可。
  • 操作步骤:
    1. 创建1个或多个标准SKU静态公网IP(组成IP池),确保IP不会被释放。
    2. 创建Azure NAT网关,关联上述公网IP池,并设置合适的空闲超时(建议至少5分钟适配邮件连接)。
    3. 将Pod所在的Azure CNI子网关联到该NAT网关,同时配置子网的用户定义路由表(UDR),将0.0.0.0/0的下一跳指向NAT网关(覆盖节点默认的出站路由)。
  • 优势:无需修改任何Pod配置,该子网内所有Pod的出站流量都使用固定IP,维护成本低。

方案2:为邮件Pod配置专用子网+独立NAT网关

如果只有部分Pod需要发邮件,可以隔离流量:

  • 原理:创建一个专用的Azure CNI子网,绑定独立的NAT网关(带固定公网IP),通过调度策略让邮件Pod仅运行在该子网的节点上,或者直接指定Pod使用该子网的IP。
  • 操作步骤:
    1. 创建专用子网、标准SKU静态公网IP池、NAT网关并关联(同方案1)。
    2. 在AKS中,要么创建新的节点池并绑定该专用子网,通过污点/容忍度让邮件Pod仅调度到这个节点池;要么直接在邮件Pod的YAML中,通过annotations指定使用该子网(Azure CNI支持静态子网分配)。
    3. 配置专用子网的UDR指向NAT网关。
  • 优势:仅隔离邮件流量,不影响其他Pod的出站策略。

方案3:部署专用SMTP代理Pod,固定其出站IP

适合需要更精细控制邮件流量的场景:

  • 原理:部署一个轻量SMTP代理(如Postfix),给这个代理Pod分配固定的Azure CNI静态IP(在Pod YAML中通过spec.ip指定),并让代理Pod的出站流量走绑定固定IP的NAT网关。其他业务Pod发邮件时,统一转发到这个代理Pod,SMTP服务器只需白名单代理Pod的出站IP(即NAT网关的IP)。
  • 可选优化:给代理Pod所在的节点分配固定公网IP,通过污点/容忍度让代理Pod独占该节点,此时代理Pod的出站源IP就是节点的固定公网IP。

注意事项

  • 所有用于NAT网关的公网IP必须是标准SKU,基本SKU不支持NAT网关绑定。
  • 配置UDR时,确保0.0.0.0/0路由的优先级高于节点的默认出站路由,否则流量仍会走节点公网IP。
  • 如果集群同时使用Azure Firewall,需要确保Firewall的SNAT规则不会覆盖NAT网关的配置,优先使用NAT网关处理邮件流量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:36:17