google-app-engine - 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 防火墙规则应该是什么?
解决方案
当然。我最终选择了负载均衡器解决方案。这给了我一个松耦合的解决方案,这对我的场景来说更好。设置时间不到 30 分钟。
推荐阅读
- python - 对具有精美终端输出的二进制文件的透明 Python 调用
- html - 在 CSS 中修复 HTML 表单我必须做的更多
- javascript - Uglify.js 在 if 语句中搞砸了
- css - 调整图像大小引导工具提示
- php - 如果我返回 true 一次,请继续执行 foreach
- r - 从具有不同行数的所有文件的最后一列制作矩阵
- google-apps-script - 从模板复制数据验证时,Google Apps 脚本中持续出现零星的内存不足错误
- c - 可以使用哪些方法让 C 程序显示统计信息,而不会显着减慢速度?
- arrays - PowerShell:为什么一个参数上的 [Parameter(Mandatory = $True)] 会影响另一个参数的类型转换行为?
- angular - 在 Angular 8 中提交模板驱动表单时有没有办法解决这个问题