【问题标题】:kubernetes: NetworkPolicy deny-all not denyingkubernetes:NetworkPolicy 拒绝所有不拒绝
【发布时间】:2018-06-21 22:16:14
【问题描述】:

我正在使用weaveaws 上的kubernetes 集群上部署应用程序

我还有一个(除了default)命名空间:my-staging

我想申请并测试kubernetes 建议的以下拒绝所有政策:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: staging-default-deny-all
  namespace: my-staging
spec:
  podSelector: {}
  policyTypes:
  - Ingress

然后我在默认命名空间中启动 busybox 用于测试目的:

kubectl run busybox --rm -ti --image=busybox /bin/sh  --namespace=default

...和my-staging 命名空间中的我的ui 服务(应该在端口80 上监听)是可访问的!

/ # wget --spider ui.staging-els.svc.cluster.local
Connecting to ui.staging-els.svc.cluster.local (100.68.222.37:80)

为什么会这样?

附言如果这有任何意义,我正在应用 NetworkPolicy,而该应用程序已经部署。

更新:这一定是 weave 的原因,当删除我的集群并使用 --networking calico 重新创建时,一切正常,没有任何问题。

【问题讨论】:

标签: kubernetes weave kubernetes-security


【解决方案1】:

为了让您的命名空间具有默认拒绝策略,您需要对其进行注释:

kind: Namespace
apiVersion: v1
metadata:
  name: my-staging
  annotations:
    net.beta.kubernetes.io/network-policy: |
      {
        "ingress": {
          "isolation": "DefaultDeny"
        }
      }

然后,您将只需要明确启用 pod 之间连接的策略。

有关详细信息,请参阅文档:https://kubernetes.io/docs/tasks/administer-cluster/weave-network-policy/

【讨论】:

  • 所以这个yml 文件中的namespece 定义消除了我引用的明确网络策略的必要性?还是两者都需要(您的注释和我的默认拒绝策略)?或者这是 waeve 特有的东西,所以只需要这个注释来实现默认拒绝?
  • 在任何情况下使用上述定义更新 ns 仍然可以从默认命名空间发现服务 ...
猜你喜欢
  • 1970-01-01
  • 2011-07-02
  • 2012-01-30
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 2011-11-30
相关资源
最近更新 更多