UDS Core项目中Istio Ambient模式下的网络流量限制设计与实现

UDS Core项目中Istio Ambient模式下的网络流量限制设计与实现

背景介绍

在UDS Core项目中使用Istio服务网格时,团队发现当启用Ambient模式后,流量主要(或完全)通过ztunnel端口进行传输。这一发现引发了关于现有网络策略有效性的疑问,特别是在混合使用Sidecar和Ambient模式的环境中。

技术挑战

Ambient模式下的流量传输机制带来了几个关键挑战:

  1. 传统网络策略可能失效,因为流量被重定向到15008端口
  2. 需要同时支持Sidecar和Ambient两种模式的混合部署
  3. 健康检查流量可能被错误拦截
  4. 授权策略在Waypoint代理上的限制

解决方案设计

网络策略调整

在Ambient模式下,安全L4覆盖层通过15008端口在Pod之间建立隧道。这意味着现有的网络策略需要进行调整,明确允许15008端口的流量:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
spec:
  ingress:
  - ports:
    - port: 8080
      protocol: TCP
    - port: 15008
      protocol: TCP
  podSelector:
    matchLabels:
      app.kubernetes.io/name: my-app

健康检查流量处理

Istio Ambient使用特定技术确保kubelet健康检查流量不被错误拦截:

  1. 结合iptables规则和源网络地址转换(SNAT)
  2. 使用固定的链路本地IP(169.254.7.127)标识健康检查流量
  3. 该IP地址按IETF标准不可路由到本地子网之外

对于已有严格网络策略的环境,需要显式允许该IP地址:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-ingress-allow-kubelet-healthprobes
spec:
  podSelector:
    matchLabels:
      app.kubernetes.io/name: my-app
  ingress:
    - from:
      - ipBlock:
          cidr: 169.254.7.127/32

授权策略注意事项

目前L4层级的授权策略(AuthZ Policies)尚不适用于Waypoint代理,这是设计实现时需要特别注意的限制。

实施建议

  1. 渐进式迁移:建议采用混合模式逐步迁移,先验证网络策略调整效果
  2. 策略审计:全面审查现有网络策略,识别需要调整的部分
  3. 健康检查验证:确保健康检查配置正确,避免Pod被错误终止
  4. 监控验证:部署后加强监控,确认流量限制按预期工作

总结

UDS Core项目通过精心设计的网络策略调整方案,成功解决了Istio Ambient模式下的流量限制问题。这一方案不仅考虑了技术实现细节,还兼顾了混合部署环境和迁移过程的平滑性,为服务网格的安全部署提供了可靠保障。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值