GCP托管的Cloud Run的出站IP范围是什么?

时间:2019-06-26 01:30:12

标签: google-cloud-run

我正在使用GCP管理的Cloud Run和MongoDB Atlas开发应用程序。如果我允许来自任何地方的Atlas IP白名单连接,则Cloud Run可以完美地与MongoDB Atlas配合使用。但是,我只想限制必要IP的连接,但是我找不到Cloud Run的出站IP。有什么办法知道出站IP吗?

4 个答案:

答案 0 :(得分:2)

Cloud Run(像所有可扩展的无服务器产品一样)不会为您提供专用IP地址,这些IP地址已知是传出流量的来源。另请参阅:Possible to get static IP address for Google Cloud Functions?

答案 1 :(得分:1)

Cloud Run服务无法获取静态IP。

一种解决方案是通过具有静态IP的代理发送您的出站请求。

例如在Python中:

import requests
import sys
from flask import Flask
import os

app = Flask(__name__)

@app.route("/")
def hello():

    proxy = os.environ.get('PROXY')
    proxyDict = { 
                "http": proxy,
                "https": proxy
                }
    r = requests.get('http://ifconfig.me/ip', proxies=proxyDict)
    return 'You connected from IP address: ' + r.text

使用PROXY环境变量包含代理的IP或URL(请参见set an environment variable的此处)

对于此代理,您可以:

  • 自己创建它,例如,使用带有运行squid的静态公共IP地址的Compute Engine VM,这很可能适合Compute Engine免费层。
  • 使用提供具有静态IP代理的服务,例如https://www.quotaguard.com/static-ip/,起价为$ 19 / m

我个人使用了第二种解决方案。该服务为我提供了一个包含用户名和密码的URL,然后使用上面的代码将其用作代理。

答案 2 :(得分:1)

直到Cloud Run开始支持Cloud NAT或无服务器VPC访问,遗憾的是不支持。

如@Steren所述,您可以通过运行ssh客户端来创建SOCKS代理,该客户端通过具有静态外部IP地址的GCE VM实例路由流量。

我已经在https://ahmet.im/blog/cloud-run-static-ip/上写过博客,您可以在https://github.com/ahmetb/cloud-run-static-outbound-ip

上找到包含工作示例的分步说明。

答案 3 :(得分:0)

Cloud Run团队现已在 beta 中发布了此功能:

https://cloud.google.com/run/docs/configuring/static-outbound-ip