如何 allow/deny 来自同一集群的其他命名空间的 http 请求?

How to allow/deny http requests from other namespaces of the same cluster?

在具有 2 个命名空间(ns1ns2)的集群中,我部署了相同的应用程序 (deployment) 并使用服务公开它。

我认为单独的命名空间会阻止从 ns2 中的 pod 执行 curl http://deployment.ns1,但显然,这是可能的。

所以我的问题是,如何allow/deny这样的跨命名空间操作?例如:

这不是您想要的答案,但我可以提供有用的功能信息来实现您的要求。

AFAIK Kubernetes 可以定义 network policy 来限制网络访问。

有关 Network Policy 的更多详细信息,请参阅 Declare Network Policy

很高兴您正在使用名称空间隔离。

  1. 在你的 ns1 中部署一个新的网络策略,所有入口。您可以查找文档以定义网络入口策略以允许所有入站流量

  2. 与 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: {}