【问题标题】:Kubernetes Network Policy for External Name Service外部名称服务的 Kubernetes 网络策略
【发布时间】:2017-07-06 23:09:21
【问题描述】:

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

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

【问题讨论】:

    标签: kubernetes weave project-calico


    【解决方案1】:

    你真的不能那样做。 ExternalName 服务是一个 DNS 结构。客户端为服务执行 DNS 查找,并且 kube-dns 返回 CNAME 记录,在您的情况下,是 RDS 实例。然后客户端直接连接RDS。

    有两种可能的方法来解决这个问题:

    1. 仅阻止 DNS 查找(如果 Pod 知道 IP 或完全限定的 RDS 主机名,它们仍然可以连接到数据库):

      • 更改命名空间隔离以支持 ExternalName 服务
      • 让 kube-dns 找出每个请求背后的客户端 pod
      • 让 kube-dns 知道命名空间隔离设置并应用它们,因此它只将 CNAME 记录返回给授权的 Pod
    2. 返回 DNS 查询,但阻止 RDS 连接:

      • 以某种方式扩展 NetworkPolicy 以控制出口流量
      • 黑名单/白名单 RDS IP 批发(说起来容易做起来难,因为它们是动态的)或让网络控制器跟踪 DNS 查找的结果并相应地阻止/允许连接。

    无论哪种情况,您都必须在 Kubernetes 和下游提交大量功能请求。

    来源:我编写了 EN 支持代码。

    【讨论】:

    • 感谢您的回答。我还在 K8S Slack 社区的 sig-network 频道中发布了这个问题。一名 Calico 员工和一名 Weave 员工回复道。 Project Calico 支持egress policies,Weave 有一个issue 来支持K8S proposal for egress policies。似乎关于出口的讨论似乎有点停滞了。
    猜你喜欢
    • 2019-10-29
    • 2019-10-30
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多