在 GCP Cloud Run/Function 上使用固定公共 IP(列入白名单)

2023-11-25

我正在寻找将应用部署到 GCP 的最佳方法。该应用程序需要使用微服务(在Cloud Run或Cloud Function上运行)在远程数据库上执行SQL代码。

基本上,微服务接收一段 SQL 代码,并需要在远程数据库上执行它。出于安全原因,远程数据库必须将应用程序用于连接它的 IP 地址列入白名单。

在 GCP 上,拥有固定的公共 IP 地址(远程数据库可以将其列入白名单)的最佳方式是什么?考虑到我想使用Cloud Run或Cloud Function。

注意:我知道使用 GKE 的解决方案。或者在 AWS 上,使用 Lambda + NAT 实例。

Thanks !


您有多种解决方案可以实现这一目标

  • 在 GKE 上使用 Cloud Run。在这种情况下,您的虚拟机位于 VPC 上,您知道它们的 IP。但是,您有多个公共 IP,并且如果虚拟机重新启动,IP 就会发生变化。好的模式是删除虚拟机的公共 IP,并部署一个云网络用于将所有出口流量映射到单个外部(和公共)IP。
  • 使用云函数。在这种情况下,您必须添加一个附加组件:无服务器 VPC 访问。该组件允许路由源自无服务器组件的流量(全部或仅私有目标 IP)。因此,您的请求将通过此元素并进入您的 VPC。然后,和之前一样,配置 Cloud Nat 以将外部 IP 映射为静态公共 IP.

无服务器 VPC 访问可与 AppEngine 和 Cloud Function 配合使用。 Cloud Run 应该会在 2020 年兼容它。

最后一种选择:在这两种情况下,我们都使用 Cloud Nat 通过静态 IP 访问公共互联网。您可以想象在您的 VPC 和本地网络(托管您的数据库的位置)之间设置一个 VPN,这样您就无需将任何内容列入白名单,所有通信都在同一个虚拟专用网络内

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 GCP Cloud Run/Function 上使用固定公共 IP(列入白名单) 的相关文章

随机推荐

  • 如何在 shell 中以可移植的方式在第一个空行上分割文件(例如使用 sed)?

    我想将包含 HTTP 响应的文件拆分为两个文件 一个仅包含 HTTP 标头 另一个包含消息正文 为此 我需要在第一个空行上将文件分成两个 或者对于仅包含 CR 的第一行的 UNIX 工具 r 字符 使用外壳脚本 如何以可移植的方式执行此操作
  • 错误 android SurfaceFlinger

    我有这个错误消息 SurfaceFlinger 半透明 0 isOpaque 1 isExternalDisplayLayer 0 isExternalBlockLayer0 我使用的是安卓4 1 1 我无法说出我的代码的哪一部分正在生成此
  • 使用 Watir 检查坏链接

    我有一个无序列表的链接 我保存在一边 我想单击每个链接并确保它转到真实页面 而不是 404 500 等 问题是我不知道该怎么做 是否有一些我可以检查的对象可以为我提供 http 状态代码或其他内容 mylinks Browser ul id
  • Android 中具有动态 ActionBar 颜色的半透明 StatusBar

    我正在尝试实现一个半透明的状态栏 以便我的导航视图是BEHIND状态栏 但仍然喜欢动态更改操作栏的颜色 因此 状态栏颜色需要更改为操作栏颜色的较暗版本 如果我将状态栏设置为透明 正如许多消息来源所建议的那样 我的 Primary dark
  • 如何编写多行命令?

    我们如何将命令扩展到下一行 基本上 Linux 的 Windows 替代品是什么 ls l usr 这里我们使用反斜杠将命令扩展到下一行 Windows 的等效项是什么 尝试了键盘上的几乎每个键后 C Users Tim gt cd Meh
  • 在 C# 中递归打印斐波那契字符串

    可以不用 while 循环来完成吗 static void Main string args Console WriteLine Please enter a number int number Convert ToInt32 Consol
  • Ruby on Rails:按月对博客文章进行分组

    嘿伙计们 我使用常见的 CRUD 操作创建了一个简单的博客应用程序 我还在 PostController 中添加了一个名为 archive 的新操作和一个关联的视图 在此视图中 我想带回所有博客文章并按月对它们进行分组 以这种格式显示它们
  • PHP 的 count() 函数对于数组来说是 O(1) 还是 O(n) ?

    Does count 真的计算了 PHP 数组的所有元素 还是这个值缓存在某处并且只是被检索 嗯 我们可以看一下源码 ext standard array c PHP FUNCTION count calls php count recur
  • 如何使用 BorderLayout 将两个组件放入 JPanel 中?

    基本上我想做的是添加两张图片 并排在 JPanel 的中心 并在 JPanel 的右侧添加一个 JLabel 所以我被告知将 JPanel 的布局设置为 BorderLayout 并使用 BorderLayout CENTER 添加图片 使
  • 创建一个自动填充目标页面上字段的链接

    我正在编写一份时事通讯 要求我这样做的人想要其中的链接 一切都很完美 没有问题 现在的问题是 当您单击此链接时 它会进入一个包含字段的页面 并且该人问我是否可以自动填写其中一个字段 该页面是某些服务的订阅页面 当您使用他的电子邮件登录该页面
  • 如何在 iPhone 的 Objective-C 中以编程方式调整图像大小

    我有一个应用程序 可以在很小的空间中显示大图像 这些图像相当大 但我仅以 100x100 像素帧显示它们 由于我使用的图像大小 我的应用程序响应缓慢 为了提高性能 如何使用 Objective C 以编程方式调整图像大小 请找到以下代码 U
  • 枚举的 rawValue 属性无法识别

    我正在使用 Xcode 6 的 Playground 来尝试 Swift 中的枚举 enum Rank String case One One Two Two init rawValue String self rawValue rawVa
  • 创建 Pandas 滚动窗口系列数组

    假设我有以下代码 import numpy as np import pandas as pd x np array 1 0 1 1 1 2 1 3 1 4 s pd Series x index 1 2 3 4 5 这会产生以下结果s 1
  • Python-pandas 将 NA 替换为数据框中一组的中位数或平均值

    假设我们有一个 df A B apple 1 0 apple 2 0 apple NA orange NA orange 7 0 melon 14 0 melon NA melon 15 0 melon 16 0 要替换 NA 我们可以使用
  • 如何防止Gson将整数表示为浮点数

    当我尝试将字符串转换为 json 时 Gson 有一些奇怪的行为 下面的代码将字符串草稿转换为 json 响应 有没有办法阻止 gson 将 0 添加到所有整数值 ArrayList
  • google-api-java-client NetHttpTransport 导致 NoClassDefFoundError

    我刚刚开始研究Android上的google api java client 将接下来的 3 个库添加到项目中 我不使用 Maven google api client 1 4 1 beta jar google api client go
  • Emacs/CEDET。多个项目和代码完成

    我已经使用 CEDET 1 0 和 ECB 2 40 设置了 emacs 23 1 50 1 很大程度上受到 Alex Otts 设置的启发 http github com alexott emacs configs blob master
  • CSS:-webkit-mask-image

    我正在使用 CSS 属性 webkit mask image 在图像上应用蒙版 但是 在 Chrome 中 当您将图像滚动到页面之外时 遮罩会移动 如何防止面罩移动 还是渲染神器 JSFiddle http jsfiddle net DZT
  • Scala 中不明确的导入

    我正在用 Scala 编写一个小型模拟程序 它是基于演员的 所以我创建了一个文件messages scala包含系统中所有有效的消息 除此之外 我还有一个管理组件 management scala以及定义节点和链接类的文件nodes sca
  • 在 GCP Cloud Run/Function 上使用固定公共 IP(列入白名单)

    我正在寻找将应用部署到 GCP 的最佳方法 该应用程序需要使用微服务 在Cloud Run或Cloud Function上运行 在远程数据库上执行SQL代码 基本上 微服务接收一段 SQL 代码 并需要在远程数据库上执行它 出于安全原因 远