【问题标题】:Routing between GCP projects (AppEngine + Kubernetes)GCP 项目之间的路由(AppEngine + Kubernetes)
【发布时间】:2021-09-30 23:46:24
【问题描述】:

在 Google Cloud 中,我有一个应用程序部署在 Kubernetes 中的一个项目中(称为 Project-A),另一个部署在 App Engine 中(称为 Project-B)。 Project-A 有一个使用自动 IP 创建的云 NAT。 Project-B 使用 App Engine 标准。

Project-B 默认情况下允许来自互联网的入口流量。但是,我只希望 Project-A 与 Project-B 进行通信。需要阻止所有其他流量。

我目前没有配置任何共享 VPC。

在 Project-B 中,我使用以下拒绝规则配置 App Engine 防火墙规则(以下列表按 App Engine 防火墙中定义的防火墙规则优先级顺序显示):

0.0.0.1/32
0.0.0.2/31
0.0.0.4/30
0.0.0.8/29
0.0.0.16/28
0.0.0.32/27
0.0.0.64/26
0.0.0.128/25
0.0.1.0/24
0.0.2.0/23
0.0.4.0/22
0.0.8.0/21
0.0.16.0/20
0.0.32.0/19
0.0.64.0/18
0.0.128.0/17
0.1.0.0/16
0.2.0.0/15
0.4.0.0/14
0.8.0.0/13
0.16.0.0/12
0.32.0.0/11
0.64.0.0/10
0.128.0.0/9
1.0.0.0/8
2.0.0.0/7
4.0.0.0/6
8.0.0.0/5
16.0.0.0/4
32.0.0.0/3
64.0.0.0/2
128.0.0.0/1
default rule: allow *

(上面的 CIDR 块对应 0.0.0.1 - 255.255.255.255;我使用https://www.ipaddressguide.com/cidr 为我执行计算)。

从 Project-A,我仍然能够到达 Project-B。谷歌是否有某种绕过 App Engine 防火墙的内部网络路由?在这种情况下,Google 似乎正在使用默认规则并忽略我的所有其他规则。

然后我做了相反的事情。上面所有这些 CIDR 块的规则都更改为 ALLOW,而所有 IP 的最后一个默认规则更改为 DENY。然后我得到了相反的行为 - Project-A 无法到达 Project-B。同样,看起来只使用了默认规则。

如何实现只有 Project-A 可以与 Project-B 通信,不允许 Internet 入口流量到达 Project-B 的情况?我可以避免使用共享 VPC 吗?如果我确实使用了共享 VPC,那么 Project-B 的 App Engine 防火墙规则应该是什么?

【问题讨论】:

  • 我做了更多的研究,似乎如果我删除了所有 App Engine 防火墙规则并且只有这个:1.允许 0.0.0.0,2.默认拒绝:*,那么我需要的行为工作中。因此,似乎 Project-A 和 Project-B 之间的路由使得 Project-A 似乎起源于 0.0.0.0(当然是 /32)。我认为更好的解决方案是在 Project-B 中使用面向外部的负载均衡器(以一些延迟为代价)。
  • 您能否确认您是否正在继续使用负载均衡器解决方案,或者您对此还有其他顾虑吗?
  • 我已经开始实施负载平衡器解决方案。效果很好。
  • 您能否在答案部分发布解决方案,以便对社区有所帮助。

标签: google-app-engine google-cloud-platform google-kubernetes-engine


【解决方案1】:

当然。我最终选择了负载均衡器解决方案。这给了我一个松耦合的解决方案,这对我的场景来说更好。设置时间不到 30 分钟。

【讨论】:

    猜你喜欢
    • 2021-01-03
    • 2021-10-15
    • 2019-05-02
    • 2020-05-22
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多