我们正在考虑为Kubernetes集群设置网络策略。但是,在我们的至少一个命名空间中,我们有一个ExternalName服务({3}}用于AWS RDS intance。我们希望将此ExternalName服务的流量限制为来自特定的一组pod,或者如果不可能来自特定名称空间。kubernetes reference - service types)或namespace isolation policy似乎都不适用于ExternalName服务。在搜索NetworkPolicy resoure和Weave的文档后,似乎没有提及这种功能。
是否可以将来自ExternalName服务的网络流量限制为来自特定的一组pod或来自特定命名空间?
答案 0 :(得分:2)
你真的不能这样做。 ExternalName服务是DNS构造。客户端为服务执行DNS查找,kube-dns返回CNAME记录,在您的情况下,返回RDS实例。然后客户端直接连接到RDS。
有两种方法可以解决这个问题:
阻止DNS查找(如果pod知道IP或完全合格的RDS主机名,则仍然可以连接到数据库):
返回DNS查找,但阻止RDS连接:
在任何一种情况下,您都必须在Kubernetes和下游提交一些功能请求。
来源:我写了EN支持代码。