1

ingress观察: under的字段值spec

案例 1:拒绝应用程序的所有流量。这里 ingress 将一个空数组作为它的值。

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: web-deny-all
spec:
  podSelector:
    matchLabels:
      app: web
  ingress: [] # <-- This DENIES ALL traffic

案例 2:允许应用程序的所有流量。这里 ingress 将一个空地图的列表项作为它的值。

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: web-allow-all
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: web
  ingress:
  - {}  # <-- This ALLOWS ALL traffic

我只是想知道,如果我要大声读出ingress上面的赋值值,我该如何阅读它?

4

1 回答 1

4

YAML 有几种不同的方法来编写列表(以及大多数其他对象)。如果我们使用相同的列表语法编写两者,这可能会变得更清楚:

# deny-all
ingress: []

# allow-all
ingress: [{}]

假设这些策略之一是唯一与相关 pod 匹配的策略。第一个策略在ingress列表中没有项目,第二个。 NetworkPolicySpec API 文档告诉我们

如果流量与 podSelector 与 pod 匹配的所有 NetworkPolicy 对象中的至少一个入口规则匹配,则允许流量进入 pod [...]。

所以在第一种情况下,策略匹配 pod,但没有入口规则,因此至少没有一个匹配的入口规则,因此流量被拒绝。

在第二种情况下,只有一个规则,它是一个空的NetworkPolicyIngressRule。那有两个字段,fromports,但是这两个字段的文档都说

如果此字段为空或缺失,则此规则匹配所有 [来源或端口]

所以空对象规则匹配所有源和所有端口;并且由于存在匹配的入口规则,因此允许流量。

于 2019-09-14T19:27:21.293 回答