istio egressgateway:通过静态IP路由

时间:2018-08-08 07:03:54

标签: routing kubernetes google-kubernetes-engine istio

由于目标服务器需要将IP列入白名单,因此我试图通过静态IP路由来自GKE群集中应用程序的出站流量。我已经能够使用地形nat网关来执行此操作,但这会影响来自群集的所有流量。

按照站点上的istio指南,我已经能够通过egressgateway pod路由流量(我可以在网关日志中看到它),但是我需要网关具有静态ip,并且没有覆盖在出口静态ip的helm值中。

在安装istio之后,如何为静态IP分配出口网关而不必修补任何东西或对其进行破解?

3 个答案:

答案 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进行的相关部署)部署在某些节点上,是这样的:

  • 带有静态ip的专用虚拟机(您必须通过包括此虚拟机来扩展网格,我现在还不知道如何)
  • 一个仅用于istio-egressgateway pod的GKE集群,然后将其连接到NAT网关,并且仅将计算路由规则应用于该gke集群到nat实例。您必须在多群集上启用istio(请参阅:https://istio.io/docs/examples/multicluster/gke/

注意:您可以始终为自己的目的创建除默认网关以外的其他Istio Egress Gateway。

答案 2 :(得分:-1)

通过使用新的Google NAT作为服务工具,可以(花费大量精力)解决此问题。但是,这是Google专有的服务。