首页 > 解决方案 > GCP 项目之间的路由(AppEngine + Kubernetes)

问题描述

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

默认情况下,Project-B 允许来自 Internet 的入口流量。但是,我只希望 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 防火墙的内部网络路由?在这种情况下,谷歌似乎使用默认规则而忽略了我所有的其他规则。

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

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

标签: google-app-enginegoogle-cloud-platformgoogle-kubernetes-engine

解决方案


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


推荐阅读