首页 文章

Kubernetes外部域名服务网络政策

提问于
浏览
0

我们正在考虑为Kubernetes集群设置网络策略 . 但是,在我们的至少一个命名空间中,我们有一个ExternalName服务(kubernetes reference - service types)用于AWS RDS intance . 我们希望将此ExternalName服务的流量限制为来自特定的一组pod,或者如果不可能,则限制来自特定的namespace isolation policyNetworkPolicy resoure似乎都不适用于ExternalName服务 . 在搜索WeaveProject Calico的文档之后,似乎没有提到这样的功能 .

是否可以将来自ExternalName服务的网络流量限制为来自特定的一组pod或特定的命名空间?

1 回答

  • 1

    你真的不能这样做 . ExternalName服务是DNS构造 . 客户端为服务执行DNS查找,kube-dns返回CNAME记录,在您的情况下,返回RDS实例 . 然后客户端直接连接到RDS .

    有两种方法可以解决这个问题:

    • 阻止DNS查找(如果知道IP或完全合格的RDS主机名,则pod仍然可以连接到数据库):

    • 更改名称空间隔离以支持ExternalName服务

    • make kube-dns计算每个请求后面的客户端pod

    • 使kube-dns知道命名空间隔离设置并应用它们,因此它只将CNAME记录返回给授权的pod

    • 返回DNS查找,但阻止RDS连接:

    • 以某种方式扩展NetworkPolicy以控制出口流量

    • 黑名单/白名单RDS IP批发(说起来容易做起,因为它们是动态的)或使网络控制器跟踪DNS查找的结果并相应地阻止/允许连接 .

    在任何一种情况下,您都必须在Kubernetes和下游提交一些功能请求 .

    来源:我写了EN支持代码 .

相关问题