如何允许/拒绝来自同一群集的其他命名空间的http请求?

时间:2019-01-19 14:07:28

标签: kubernetes kubernetes-networkpolicy

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

  1. 在具有ingress all的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: {}

答案 1 :(得分:1)

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

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

有关Network Policy的更多信息,请参考Declare Network Policy