![如何隔离 kubernetes 命名空间但允许从外部访问](https://linux22.com/image/727782/%E5%A6%82%E4%BD%95%E9%9A%94%E7%A6%BB%20kubernetes%20%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E4%BD%86%E5%85%81%E8%AE%B8%E4%BB%8E%E5%A4%96%E9%83%A8%E8%AE%BF%E9%97%AE.png)
我有一个使用 kubeadm 设置的 Kubernetes 集群,
我正在尝试定义一个网络策略,该策略限制从命名空间外部的访问,但不会阻止从外部(外部 IP)的访问,
详细说明我希望可以从命名空间中的其他 pod 和通过外部 IP 地址访问 pod,但不能从其他命名空间访问,
有什么想法吗?
答案1
我使用了以下网络策略,它对我有用
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
namespace: policy-test
name: deny-from-other-namespaces
spec:
podSelector:
matchLabels:
ingress:
- from:
- podSelector: {}
- namespaceSelector:
matchLabels:
access: "true"
据我所知,外部访问是通过 kube-proxy 授予的,它是 kube-system 命名空间中的一个 pod。此网络策略将允许来自 policy-test 命名空间的所有 pod 以及任何带有 access=true 标签的命名空间,
应用此网络策略并将 access=true 标签添加到 kube-system 命名空间将解决该问题
添加标签:
kubectl label namespace/kube-system access=true