我正在使用 kubernetes 集群将 Nodejs 应用程序与 mongodb 连接起来。我想确保 mongo POD 仅与 Nodejs POD 通信并拒绝任何其他 POD 流量。当我应用默认拒绝策略然后应用允许策略时,应用不起作用。
我提出了以下政策 - 为什么它们不起作用?
默认拒绝策略:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: default-deny
namespace: default
spec:
podSelector:
matchLabels: {}
网络政策:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: access-nodejs
namespace: default
spec:
podSelector:
matchLabels:
app: nodejs-mongo
ingress:
- from:
- podSelector:
matchLabels:
run: mongo
答案 0 :(得分:0)
拒绝所有策略应如下所示:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
spec:
podSelector: {}
policyTypes:
- Ingress
答案 1 :(得分:0)
我应用了您的政策,并且对我有用。但是,您不必指定拒绝所有策略。一旦您创建了允许 pod 接受来自来自一组特定 pod 的流量的网络策略,它将受到它的限制。这样一来,您的设置就会变得更简单,并且需要更少的故障排除。
因此,在您的情况下,您可以创建允许来自特定 pod 的通信的网络策略。确保您使用正确的标签来选择目标 Pod 和它可以接受流量的 Pod。
请记住,NetworkPolicy
应用于特定的命名空间,并且仅选择该特定 Namespace
中的 Pod。
可应用于接受来自与其选择器匹配的 pod 的流量的示例策略:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: backend-access
spec:
podSelector:
matchLabels:
app: restricted-access #it selects pods that are targeted by this policy
ingress:
- from:
- podSelector:
matchLabels:
app: allowed-traffic #selects pods that communicate with pods