问题:
我正在尝试使我的API能够进入我的外部托管数据库,同时要求将其他所有内容都列入白名单。
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: server-allow-external
spec:
podSelector:
matchLabels:
component: api
ingress:
- from:
- namespaceSelector: {}
- podSelector:
matchLabels: frontend
- ipBlock:
cidr: 172.17.0.0/16
我在这里尝试了各种组合。网络插件策略,将外部数据库映射到基于集群的服务等,但我还没有走运。
注意:是的,我允许所有名称空间通信。
上面的代码是我从逻辑上解决问题的地方……但是仍然无法正常工作。如果这可能会起作用,我还有一个负载平衡器是否位于此范围之外?
代码:
我有一个依赖于后端API的前端(均在默认名称空间内)。然后是一个外部数据库。我已经实施了默认的拒绝政策:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: default-deny-all
namespace: default
spec:
podSelector: {}
ingress: []
然后,我允许从Web访问前端:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-external
spec:
podSelector:
matchLabels:
component: frontend
ingress:
- from: []
答案 0 :(得分:0)
为外部服务器配置网络策略。 您必须修复定义入口的部分。
只需将小节添加到matchLabels-
component: frontend
:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: server-allow-external
spec:
podSelector:
matchLabels:
component: api
ingress:
- from:
- namespaceSelector: {}
- podSelector:
matchLabels:
component: frontend
- ipBlock:
cidr: 172.17.0.0/16
希望对您有帮助。