问题:
我正在尝试使我的 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: []
然后我允许从网络访问前端:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-external
spec:
podSelector:
matchLabels:
component: frontend
ingress:
- from: []