静态IP,可通过HTTP / 2通过gRPC流访问GCP机器学习API,

时间:2019-10-16 10:39:54

标签: google-cloud-platform speech-to-text google-cloud-networking google-cloud-http-load-balancer

我们生活在企业代理/防火墙的后面,该代理/防火墙只能使用静态IP规则,而不能使用FQDN。 对于我们的项目,我们需要访问Google Speech To Text API:https://speech.googleapis.com。如果在公司网络之外,我们将通过HTTP / 2使用gRPC流来实现这一目标。

理想情况如下:
Corporate network -> static IP in GCP -> forwarded gRPC stream to speech.googleapis.com

我们尝试创建的是全局静态外部IP,但是在配置Load Balancer时失败,因为它只能连接到VM,而不能连接到API。

或者,我们正在考虑使用nslookup speech.googleapis.com IP地址范围的输出并每天进行更新,尽管看起来很“肮脏”。

我知道我们可以配置计算引擎资源/ VM并转发流量,但这似乎也不是一个很好的解决方案。最好,我们可以使用现有的GCP网络组件来实现。

非常感谢您的指导!

2 个答案:

答案 0 :(得分:0)

Google不会发布供您使用的CIDR块。每天尝试将IP地址列入白名单,您都会感到悲伤。 Google的大多数API服务都以全球前端(GFE)为前端。此操作使用HTTP主机标头路由流量而不是IP地址,这将导致路由失败。

尝试查找IP地址可能是一个问题。 DNS不必在每次调用中都返回所有IP地址以进行名称解析。这意味着DNS查找现在可能会返回一组地址,而返回的地址则与之不同。这是一个悲伤的边缘例子,您可能会因将IP地址列入白名单而导致自己陷入困境。

解决方案:与您的防火墙供应商联系。

答案 1 :(得分:0)

感谢来自Google的聪明的网络工程师找到了解决方案,请在此处发布以供将来参考:

您可以在内部DNS中使用CNAME将* .googleapis.com指向private.googleapis.com。公共DNS中的此记录指向两个公共IP地址(199.36.153.8/30),这些公共IP地址无法通过公共Internet访问,只能通过VPN隧道或云互连来访问。

因此,如果可以在GCP中为项目建立VPN隧道(并且应该很容易,请参阅https://cloud.google.com/vpn/docs/how-to/creating-static-vpns),那么这应该可以解决问题。