我正在尝试在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,那也将损害群集网络的性能。
答案 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