如何 allow/deny 来自同一集群的其他命名空间的 http 请求?
How to allow/deny http requests from other namespaces of the same cluster?
在具有 2 个命名空间(ns1
和 ns2
)的集群中,我部署了相同的应用程序 (deployment
) 并使用服务公开它。
我认为单独的命名空间会阻止从 ns2
中的 pod 执行 curl http://deployment.ns1
,但显然,这是可能的。
所以我的问题是,如何allow/deny这样的跨命名空间操作?例如:
- pods in
ns1
应该接受来自任何命名空间的请求
- pods(或服务?)在
ns2
应该拒绝来自其他命名空间的所有请求
这不是您想要的答案,但我可以提供有用的功能信息来实现您的要求。
AFAIK Kubernetes
可以定义 network policy
来限制网络访问。
有关 Network Policy
的更多详细信息,请参阅 Declare Network Policy。
很高兴您正在使用名称空间隔离。
在你的 ns1 中部署一个新的网络策略,所有入口。您可以查找文档以定义网络入口策略以允许所有入站流量
与 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: {}
在具有 2 个命名空间(ns1
和 ns2
)的集群中,我部署了相同的应用程序 (deployment
) 并使用服务公开它。
我认为单独的命名空间会阻止从 ns2
中的 pod 执行 curl http://deployment.ns1
,但显然,这是可能的。
所以我的问题是,如何allow/deny这样的跨命名空间操作?例如:
- pods in
ns1
应该接受来自任何命名空间的请求 - pods(或服务?)在
ns2
应该拒绝来自其他命名空间的所有请求
这不是您想要的答案,但我可以提供有用的功能信息来实现您的要求。
AFAIK Kubernetes
可以定义 network policy
来限制网络访问。
有关 Network Policy
的更多详细信息,请参阅 Declare Network Policy。
很高兴您正在使用名称空间隔离。
在你的 ns1 中部署一个新的网络策略,所有入口。您可以查找文档以定义网络入口策略以允许所有入站流量
与 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: {}