由于目标服务器需要将IP列入白名单,因此我试图通过静态IP路由来自GKE群集中应用程序的出站流量。我已经能够使用地形nat网关来执行此操作,但这会影响来自群集的所有流量。
按照站点上的istio指南,我已经能够通过egressgateway pod路由流量(我可以在网关日志中看到它),但是我需要网关具有静态ip,并且没有覆盖在出口静态ip的helm值中。
在安装istio之后,如何为静态IP分配出口网关而不必修补任何东西或对其进行破解?
答案 0 :(得分:1)
我认为您的问题有三个步骤。首先,将传出流量固定到特定的Pod。 istio出口网关可以为您完成此任务。其次,将Pod固定到特定的IP地址。
如果使用GCP的浮动IP地址版本,则可以将已知IP分配给群集中的主机之一。然后,在出口网关上使用节点关联性将其调度到特定主机https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
我已经在一个测试集群中编辑了出口部署,以
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64
- ppc64le
- s390x
- key: kubernetes.io/hostname
operator: In
values:
- worker-2720002
可以通过主机名标签来固定它,但是当您为它分配一个浮动ip时,可能要选择一个新标签并将其应用于节点。在我的测试中,吊舱已移至指定的节点,我的传出流量也是如此。
答案 1 :(得分:0)
我目前也正面临您的问题。我已经通过GCP支持询问了此问题,他们说,目前没有将某些IP附加到Egress Gateway
的机制。
因此,另一种解决方案是修补istio本身。这个想法是使Istio Egress Gateway
吊舱(请参阅通过kubectl get deployment istio-egressgateway -n istio-system
进行的相关部署)部署在某些节点上,是这样的:
注意:您可以始终为自己的目的创建除默认网关以外的其他Istio Egress Gateway。
答案 2 :(得分:-1)
通过使用新的Google NAT作为服务工具,可以(花费大量精力)解决此问题。但是,这是Google专有的服务。