You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Run配置静态出口IP访问Azure SQL Server失败排查

问题核心

你遇到的是Cloud Run出口IP无法匹配Azure SQL白名单的问题,两种VPC路由配置的错误原因分别是:

  1. 全流量路由时:VPC未放行Azure SQL的端口,或ODBC连接缺少加密参数导致连接超时
  2. 仅私有IP路由时:Azure SQL为公网地址,流量不走VPC,直接使用Cloud Run默认随机出口IP,所以白名单的静态IP未生效
最佳解决方案:Cloud NAT绑定静态IP+全流量路由

这是最可靠的方案,确保Cloud Run所有出口流量都经过指定静态IP,步骤如下:

1. 配置Cloud NAT网关(绑定静态IP)

在你的VPC网络中创建Cloud Router,再配置Cloud NAT将静态IP绑定到网关:

# 创建Cloud Router
gcloud compute routers create nat-router --network=你的VPC网络名 --region=你的区域
# 创建NAT配置并绑定静态IP
gcloud compute routers nats create nat-config --router=nat-router --region=你的区域 --nat-all-subnet-ip-ranges --static-ip-addresses=你的静态IP名称

2. 创建Serverless VPC Access连接器

gcloud compute networks vpc-access connectors create run-connector --region=你的区域 --network=你的VPC网络名 --range=10.8.0.0/28

3. 部署Cloud Run时指定VPC配置

部署服务时设置全流量路由并关联上述连接器:

gcloud run deploy 你的服务名 --image=你的镜像地址 --vpc-connector=run-connector --vpc-egress=all-traffic --region=你的区域

4. 优化ODBC连接串

Azure SQL强制要求加密连接,补充参数避免超时:

cnxn_str = (
    "Driver={ODBC Driver 18 for SQL Server};"
    "Server=tcp:你的Azure SQL服务器名.database.windows.net,1433;"
    "Database=你的数据库名;"
    "Uid=你的用户名;"
    "Pwd=你的密码;"
    "Encrypt=yes;"
    "TrustServerCertificate=no;"
    "Connection Timeout=30;"
)

5. 验证配置

  • 在Cloud Run容器中执行curl ifconfig.me,确认出口IP为你绑定的静态IP
  • 检查Azure SQL防火墙规则,确保该静态IP已被加入白名单(等待5分钟生效)
  • 检查VPC防火墙规则,允许出站流量到1433端口(Azure SQL默认端口)
备选方案:Azure Private Link(适合严格网络隔离场景)

如果需要完全通过私有网络访问Azure SQL,可以配置Azure Private Link,将Azure SQL的端点映射到你的GCP VPC中:

  • 在Azure中创建Private Link服务,关联你的SQL Server
  • 在GCP中创建VPC peering或Cloud Interconnect,连接到Azure虚拟网络
  • Cloud Run通过VPC连接器访问私有链接端点,无需公网IP白名单

内容的提问来源于stack exchange,提问作者Hamza Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:26:30