【问题标题】:How to allow/deny http requests from other namespaces of the same cluster?如何允许/拒绝来自同一集群的其他命名空间的 http 请求?
【发布时间】:2019-01-22 12:00:35
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您如何部署 OpenShift?如果您使用oc cluster upminishift,则未安装提供分离所需的SDN 层。应该安装完整的 OpenShift 集群。
  • @graham 有人编辑了问题并添加了openshift标签,但问题与Kubernetes有关
  • 好的,那么值得强调的是,您使用 OpenShift 获得的好处之一是开箱即用的多租户。这意味着命名空间(项目)在默认情况下是隔离的,您无需自己将其添加到 Kubernetes 之上。

标签: kubernetes kubernetes-networkpolicy


【解决方案1】:

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

  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: {}

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-10-07
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 2012-09-18
      • 2021-05-23
      • 2019-09-14
      相关资源
      最近更新 更多