问题:
Kubernetes 的网络策略没有按预期运行(导出和入口似乎切换到我?)更重要的是,我似乎无法在不阻塞前端的情况下直接锁定网络流量访问/api/路由。
代码设置:
使用 Axios 与后端对话的前端(React)。设置为微服务并使用 Ingress 根据路由适本地推送流量。外部托管数据库。
Kubernetes 设置
有问题的网络策略:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: api-blocking
spec:
podSelector:
matchLabels:
component: api
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 111.111.111.0/32
ports:
- port: 98711
egress:
- to:
- podSelector:
matchLabels:
component: frontend
ports:
- port: 3000
允许进入具有特定端口号的特定 CIDR 的流量允许 db 获取适本地发生。允许到前端的导出流量有助于前端能够获取后端数据。
但是,网络策略的任何组合都不会阻止用户转到/api/,而不会导致前端崩溃。希望找到一种方法来锁定它并只允许特定的客户端 pod 连接到后端?
....输入此内容后,也许我需要入口服务的网络策略?
更新:
我尝试使用网络插件特定规则。
我编写规则的方式是只允许入口和导出的“前端”端点访问/api/http 路由。它似乎并没有阻止它从访问 API 的网络流量中分离出来。
具有占位符值的部分示例:
ingress:
- fromEndpoints:
- matchLabels:
component: frontend
toPorts:
- ports:
- port: '1111'
rules:
http:
- path: '/api/ping'
最佳答案
I can't seem to lock down web traffic from accessing the /api/ route directly without also blocking the frontend.
我认为标准网络策略对象不可能做到这一点,因为它只允许您根据 pods, namespaces and IPs 将流量列入白名单。 .
对我来说,Calico Network Policies 似乎更细化。 (检查
for Application layer policy
)。
关于带有微服务的 Kubernetes 网络策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615107/