Google Compute Engine - 如何允许(仅)其他项目实例的访问?

时间:2016-05-06 20:28:50

标签: google-compute-engine firewall google-kubernetes-engine

使用Google Compute Engine,如何创建防火墙规则,以便只允许同一项目中的实例访问?应允许从其他集群(在同一项目内)进行访问。

该方案允许GKE集群访问在GCE实例上运行的RethinkDB数据库服务器集群。

2 个答案:

答案 0 :(得分:1)

"因此,只允许同一项目中的实例访问"什么?

我认为您并不意味着可以访问群集的apiserver,因为该IP应该已经可以从您的所有实例访问。

如果您是指从群集外部的实例访问群集中的容器,则可以创建防火墙规则,以便更容许允许GCE网络中的流量。在执行此操作时,您可以非常宽松或更精细:

  1. 非常宽松 - 只需创建一个防火墙规则,允许来自源IP范围10.0.0.0/8的流量到您网络中的所有实例(不要添加任何"目标代码" )关于你关心的所有协议和端口(例如tcp:1-65535,udp:1-65535,icmp)。 10.0.0.0/8范围将涵盖网络中的所有实例和容器(除了它之外的任何内容)。

  2. 每个群集分开防火墙 - 执行与第一个相同的操作,但添加群集中所有节点上的目标标记。您可以通过查看其中一个实例来获得此信息。标记或查看GKE在创建时为群集创建的防火墙上的目标标记。这种方法的好处是,它可以让网络中的所有内容与您的群集通信,而不会在网络中暴露出您不想打开的任何其他内容。

  3. 如果您的意思是从群集外部访问服务,那么由于您需要在群集外部的实例上运行kube-proxy并将其配置为与群集的apiserver通信,因此它有点困难为了正确路由服务数据包。

答案 1 :(得分:0)

原来问题是我通过外部IP访问RethinkDB实例。由于某种原因,这会导致内部源IP的防火墙规则不匹配。解决方案是通过内部DNS名称访问实例,在这种情况下应用防火墙规则。

此外,还有一个默认的防火墙规则, default-allow-internal ,它允许同一项目中的实例之间的任何流量。因此,我不需要创建自己的规则。