允许从Pod标签等于Pod标签的流量

时间:2019-01-19 13:47:11

标签: networking kubernetes policy kubernetes-networkpolicy

我正在尝试在kubernetes中设置网络策略,在该策略中,允许一组具有相同密钥标签值的通用Pod在一个端口上进行通信。

说有:

Pod A:
 labels:
  meshId="d5ea1b48"

Pod B:
 labels:
  meshId="d5ea1b48"

更多具有相同标签meshId=d5ea1b48的吊舱。 网格表示一种网格网络,其中仅允许所有包含的Pod在一个端口上进行通信。

我的目标用yaml解释:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: example
spec:
  podSelector:
    matchLabels:
      meshId: %meshId of from-pod%
  ingress:
  - ports:
    - port 1234
    - protocol: TCP
  - from:
      - podSelector:
          matchLabels:
            meshId: %meshId of to-pod%

因此,如果我没有记错的话,此配置会说:对于那些没有相同meshId的用户,我想拒绝端口1234上的传入流量。

是否可以为所有可能的meshId创建一次kubernetes NetworkPolicy?这样的解决方案在Yaml中的外观如何?

我不想为每个新的meshId创建一个新的NetworkPolicy,因为会有很多,而且如果有超过50.000个NetworkPolicies,那也将损害群集网络的性能。

1 个答案:

答案 0 :(得分:1)

无法以您提出的方式来概括标签选择器。请注意,网络策略旨在强化基础,以便仅真正的流量进出。

我也想向您指出一个事实,为什么您最终还会获得5万条附加政策。这意味着您对广告连播的选择器策略不正确。考虑改变这一点,而不是相反。您快要完成了!

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1    
metadata:
 name: example
spec:
 podSelector:
  matchLabels:
   meshId: value1
 ingress:
 - ports:
  - port 1234
  - protocol: TCP
 - from:
  - podSelector:
      matchLabels:
        meshId: value1