【发布时间】:2019-11-08 05:32:26
【问题描述】:
我正在使用 Google Cloud 运行托管集群,因此它可以选择启用 NetworkPolicy,并且在后端它使用 calico。我遇到的问题,看来我只能使用 api 版本networking.k8s.io/v1。
我正在尝试创建策略来禁用来自 pod 的任何内部出口 traefik,并允许任何进出外部网络的入口 + 出口。
使用 calico API,它看起来像这样:
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: policy-name
namespace: namespace-name
spec:
selector: label == value
types:
- Ingress
- Egress
ingress:
- action: Allow
notProtocol: UDP
destination:
ports:
- 53
- action: Allow
notProtocol: TCP
destination:
ports:
- 53
egress:
- action: Deny
protocol: UDP
destination:
ports:
- 53
- action: Deny
protocol: TCP
destination:
ports:
- 53
或以下政策的否定版本:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: policy-name
namespace: namespace-name
spec:
podSelector:
matchLabels:
label: value
policyTypes:
- Egress
egress:
- ports:
- port: 53
protocol: UDP
- port: 53
protocol: TCP
- to:
- namespaceSelector: {}
所以我有两个问题:
1. 是否可以使用networking.k8s.io/v1 API 重现上述规则?
2. 我能否在托管 GKE 集群上启用projectcalico.org/v3 API?
【问题讨论】:
-
如果在后端使用 calico,您是否有理由要在 apiVersion 字段中明确指定 calico?
-
我不能肯定,但这似乎不太可能。 GKE 上的 CNI 实现完全由 Google 控制。
-
@Prashant 不同的语法。使用
networking.k8s.io/v1api,我不能使用否定或否认语句,但可以使用projectcalico.org/v3 -
语法没问题。但是有什么东西只能通过calico而不是gke API来实现吗?
-
@Prashant 这就是我要问的问题)
标签: networking kubernetes calico gke-networking