Kubernetes文档example here显示了如何将网络策略应用于由pod选择器或名称空间选择器指定的源。我可以指定同时满足两个约束条件的来源。
例如源可以是带有标签“ tier = web”的容器,该容器部署在名称空间“ ingress”中。
PS 。目前,我通过将名称空间名称添加为吊舱标签来使其正常工作。
答案 0 :(得分:2)
是的,这是可能的,但并非立即直观。如果查看链接的section below块,它会给出很好的解释(在您提出问题后似乎已添加了该解释)。通常,NetworkPolicy API文档here也很有帮助。
基本上,如果像示例一样将每个选择器放在列表中的两个单独项目中,则它使用逻辑或。如果将它们作为两个项目放在列表中的同一数组元素中(第二个项目前面没有破折号)(如下面的示例所示)与AND podSelector和namespaceSelector结合使用,它将起作用。在yaml到json转换器中查看这些内容可能会有所帮助。
这是他们政策中的一个入口块,已修改为AND条件
ingress:
- from:
- namespaceSelector:
matchLabels:
project: myproject
podSelector:
matchLabels:
role: frontend
如果在ports
或to
语句旁边使用from
规则,则这种逻辑也适用。您会在示例中注意到,根据入口规则,它们在ports
前面没有破折号。如果他们在前面加了一个破折号,那就等于入口和端口的条件。
以下是他们讨论如何实现组合选择器时的一些GitHub链接: