在具有 2 个命名空间 (ns1
和ns2
) 的集群中,我部署了相同的应用程序 ( deployment
) 并使用服务公开它。
我认为单独的命名空间会阻止从curl http://deployment.ns1
pod 中执行ns2
,但显然,这是可能的。
所以我的问题是,如何允许/拒绝这样的跨命名空间操作?例如:
- 中的 pod
ns1
应该接受来自任何命名空间的请求 - 中的 pod(或服务?)
ns2
应该拒绝来自其他命名空间的所有请求
在具有 2 个命名空间 (ns1
和ns2
) 的集群中,我部署了相同的应用程序 ( deployment
) 并使用服务公开它。
我认为单独的命名空间会阻止从curl http://deployment.ns1
pod 中执行ns2
,但显然,这是可能的。
所以我的问题是,如何允许/拒绝这样的跨命名空间操作?例如:
ns1
应该接受来自任何命名空间的请求ns2
应该拒绝来自其他命名空间的所有请求很好,您正在使用命名空间隔离。
在你的 ns1 中部署一种新的网络策略,使用 ingress all。您可以查找文档以定义网络入口策略以允许所有入站流量
同样对于 ns2,您可以创建一种新的网络策略并在 ns2 中部署配置以拒绝所有入口。文档将再次帮助您构建 yaml 结构。
它可能看起来像这样:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
namespace: ns1
name: web-allow-all-namespaces
spec:
podSelector:
matchLabels:
app: app_name_ns1
ingress:
- from:
- namespaceSelector: {}
这不是您想要的答案,但我可以提供有用的功能信息来实现您的要求。
AFAIKKubernetes
可以定义network policy
限制网络访问。
有关更多详细信息,请参阅声明网络策略Network Policy
。
OpenShift
。