0

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

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

所以我的问题是,如何允许/拒绝这样的跨命名空间操作?例如:

  • 中的 podns1应该接受来自任何命名空间的请求
  • 中的 pod(或服务?)ns2应该拒绝来自其他命名空间的所有请求
4

2 回答 2

3

很好,您正在使用命名空间隔离。

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

  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: {}
于 2019-01-19T20:53:48.130 回答
1

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

AFAIKKubernetes可以定义network policy限制网络访问。

有关更多详细信息,请参阅声明网络策略Network Policy

于 2019-01-19T16:09:04.073 回答