我试图限制到我的openvpn允许访问内部基础设施和限制它只通过'开发'命名空间,所以我开始与简单的政策,拒绝所有出口流量,并没有看到任何效果或任何反馈从集群,它被应用,我已经阅读了所有的官方和非文档,并没有找到一个解决方案,这是我的政策:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: policy-openvpn
namespace: default
spec:
podSelector:
matchLabels:
app: openvpn
policyTypes:
- Egress
egress: []
字符串
我已经使用kubectl apply -f policy.yaml
命令应用了上面的网络策略,但我看不到此策略的任何效果,我仍然能够连接到我的openvpn pod中的任何内容,如何调试此策略并查看我的策略有什么问题?
对我来说,这似乎是一个黑盒子,只能做试错法,这似乎不是它应该如何工作。
我如何验证它是否找到了pod并将策略应用于它们?
我使用的是GKE提供的最新kubernetes集群
我注意到,我没有检查'使用networkpolicy'在谷歌云设置和我检查后,我的vpn刚刚停止工作,但我不知道如何检查它,或者为什么vpn只是允许我连接和阻止所有网络请求,很奇怪,有没有一种方法来调试是不是随机改变的东西?
4条答案
按热度按时间toiithl61#
GKE使用calico来实现网络策略。在应用网络策略之前,需要为master和nodes启用网络网络策略。您可以通过在kube-system namespace中查找calico pod来验证是否启用了calico。
字符串
为了验证网络策略,您可以看到以下命令。
型
anhgbhbe2#
运行时,您可以检查POD选择器使用的标签:
字符串
Pod选择器将显示此netpol也应用了哪些标签。然后您可以通过以下方式显示所有具有此标签的Pod:
型
nnvyjq4y3#
使用netcat(nc)进行调试:
字符串
P.S:要拒绝所有出口流量,不需要将
spec.egress
键声明为空数组,但它会影响相同:型
参考:https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/
t5fffqht4#
如何检查策略是否确实应用于pod是通过测试。有几件事可能出错,即网络策略是命名空间和真正的标签,加上他们需要通过安装适当的插件设置。另一方面,标签是pod属性(在观察到的情况下),因此,人们往往会忘记检查标签,瞧,豆荚不受限制。如何检查是否适用的政策是通过测试,当连接到可能会或可能不会访问特定pod的pod时,尝试使用CURL。以下内容可能会有所帮助,但我还没有机会测试它
https://orca.tufin.io/netpol/