【发布时间】:2021-12-18 16:21:16
【问题描述】:
我需要将 pod 出口流量限制到外部目的地。 Pod 应该能够访问 Internet 上的任何目的地,并且所有集群内部目的地都应该被拒绝。
这是我尝试过的,但没有通过验证:
apiVersion: networking.istio.io/v1beta1
kind: Sidecar
metadata:
name: test
spec:
workloadSelector:
labels:
k8s-app: mypod
outboundTrafficPolicy:
mode: REGISTRY_ONLY
egress:
- hosts:
- 'default/*'
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: all-external
spec:
location: MESH_EXTERNAL
resolution: DNS
hosts:
- '*'
ports:
- name: http
protocol: HTTP
number: 80
- name: https
protocol: TLS
number: 443
Istio 1.11.4
【问题讨论】:
-
ServiceEntry的命名空间是什么? -
我在
sidecar中修复了命名空间。我的问题是:限制集群网络并允许外部一切的正确方法是什么?我猜sidecar+serviceentry做不到。 -
为什么不使用Network Policies?您可以使用它允许所有出口并拒绝所有入口。
-
我只对限制出口流量感兴趣。 Pod 应该能够连接到集群外部的任何主机,而不是集群服务/pod(除了 istio sidecaristiod)。
-
除非您的应用程序明确地向其他 pod 发出请求,否则应该没有必要限制流量。我担心完全阻塞到 Pod 的流量可能会导致 Pod 不断地无法通过健康检查,并进入 CrashLoopBackOff 状态。
标签: kubernetes istio istio-sidecar