有没有办法在 Google App Engine 中部署面向内部的应用程序?

Posted

技术标签:

【中文标题】有没有办法在 Google App Engine 中部署面向内部的应用程序?【英文标题】:Is there a way to deploy internal facing applications in Google App Engine? 【发布时间】:2018-07-26 14:21:15 【问题描述】:

有没有办法在 Google App Engine 中部署“面向内部”的应用程序。正如here 所解释的那样,AWS 提供了此功能,here 所解释的 Azure 也是如此。

这方面的 GCP 等效项是什么?看来 App Engine 柔性环境可能是答案,但我找不到关于柔性环境是否确实是托管面向 Intranet 的应用程序的方式的明确文档。有 GCP 的人可以提供建议吗?

更新

我最近测试了 Dan 推荐的解决方案。下面列出了我的观察:

App Engine Flex 允许部署到 VPC,这允许 *** 场景。但是,*** 场景适用于从 App Engine 到 GCP VPC 或到 GCP 之外的其他网络(可以在本地或其他云中)的连接(发起)。 从 GCP 或其他网络对应用程序本身的访问(目标)始终通过面向 Internet 的公共 IP 进行路由。目前没有通过私有 IP 访问应用的选项。

如果有其他更新,我会在这里更新。

2021 年 10 月 28 日更新

Google 现已推出无服务器网络端点组 (NEG)。有了这个,用户可以将 AppEngine、Cloud Run 和 Cloud Function 端点连接到 LoadBalancer。但是目前,您只能将无服务器 NEG 与外部 HTTP(S) 负载均衡器一起使用。您不能将无服务器 NEG 与区域外部 HTTP(S) 负载平衡器或任何其他负载平衡器类型一起使用。无服务器 NEG 的 Google 文档可在 here 获得。

【问题讨论】:

您问题中的 AWS 链接不起作用,这可能有助于澄清。根据 Azure 链接,听起来您想部署一个应用引擎应用程序,然后可以从专用网络独占访问? 我很抱歉没有早点回复这个问题。更新了链接。还找到了关于 AWS 选项的 *** 帖子 here 来执行此操作。 【参考方案1】:

我不确定这是否满足您的要求,但可以设置一个 App Engine 标准应用程序(不确定是否灵活),以便只有登录到您的 G-Suite 域的用户才能访问它。这是我过去用于面向内部的应用程序的方法,但它仅适用于您的案例涉及使用 G-Suite 的实体。

您可以在 App Engine 应用程序设置下的 Identity Aware Proxy 下进行设置。

在这种情况下,应用程序仍在可公开访问的位置运行,但只有登录到您的 G-Suite 域的用户才能访问它。

【讨论】:

请注意,您仍然需要采取措施限制只有经过身份验证的用户才能访问。 嗨@CameronRoberts,感谢您的回复。但我试图解决的需求是避免通过公共网络访问应用程序。类似于能够在 VPC 中托管 AppEngine 应用程序。下面 Dan Cornilescu 的答案似乎与我要找的很接近。 @Cameron Roberts,虽然您的答案不是我在这种情况下寻找的解决方案,但在某些情况下它是一个有用的选择。感谢您指出了这一点。真的希望 GCP 在某个时候能提供更好的解决方案。 @Cyac 这实际上也得到了增强,它现在被称为“身份感知代理”,并且比旧的“限制到 g-suite 域”功能提供了更多的灵活性。不过,我还没有深入研究它,所以我不知道它是否更接近解决您在此处原始帖子中的问题。【参考方案2】:

在 GAE 柔性环境中应该可以实现。来自Advanced network configuration:

您可以将 Compute Engine 网络划分为子网。这 允许您启用 *** 方案,例如访问内部的数据库 您的公司网络。

为您的 App Engine 应用启用子网:

    Create a custom subnet network.

    将网络名称和子网名称添加到您的app.yaml 文件中,指定为above。

    要建立 ***,create a gateway and a tunnel for a custom subnet network。

标准的 env GAE 不提供对网络层的访问来实现这一目标。

【讨论】:

@ThorkilVærge,我没有亲自尝试过,但我认为这应该可行。顺便说一句,刚刚注意到上面答案中第 2 点中的链接可能已损坏。指定网络设置的 app.yaml 引用是here @ThorkilVærge,我终于设法检查了这一点。据我目前所见,App Engine Flex 环境允许将应用程序部署到 VPC 中。正如 Dan 在他的回答中提到的,这确实允许 *** 场景,但据我了解,它只允许 *** 访问从 appengine 到 *** 网络。此外,我认为这不允许(在撰写本文时)从 *** 网络或 Google Cloud VPC 内私下访问应用程序引擎应用程序本身。与 Appengine 应用程序的连接始终通过 Internet 路由。可以通过防火墙规则将访问限制为一组受限制的公共 IP。 感谢您回复我!您是否碰巧知道这些 IP 地址是什么,或者我可以从哪里了解到它们? 它可以是任何公共 IP。您可以在 App Engine 控制台中为 IP 地址范围配置允许/拒绝规则。导航路径为 GCP Cloud Console -> App Engine -> 防火墙规则

以上是关于有没有办法在 Google App Engine 中部署面向内部的应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine 大文件上传

Python Google App Engine - 获取位置

有没有办法在 App Engine 中跟踪 Cloud SQL 调用? (哥朗)

使用 Google App Engine 索引搜索返回整个数据集

Google App Engine检查更新

Maven + App Engine + Google Eclipse 插件