如何在Cloud Run中实现跨项目域名映射(多项目部署场景)
跨GCP项目绑定Cloud Run服务到自定义域名
针对你这种DNS与Cloud Run服务分属不同项目的场景,核心是先完成域名所有权验证,再跨项目授权绑定服务,具体步骤如下:
1. 在DNS管理项目(项目A)完成域名所有权验证
因为你的域名区域在项目A,直接在此项目完成mydomain.com的所有权验证:
- 切换到项目A的Google Cloud Console,进入Cloud Run > 自定义域名页面
- 点击「添加映射」,输入任意一个待绑定的子域名(比如
www.mydomain.com),系统会提示需验证域名所有权 - 选择「DNS验证」方式,复制生成的TXT记录内容(格式类似
google-site-verification=xxxxxx) - 回到项目A的Cloud DNS区域,给
mydomain.com添加这条TXT记录 - 等待5-10分钟让DNS生效,刷新Cloud Run页面确认所有权验证通过(验证一次后,该域名下所有子域名无需重复验证)
2. 绑定生产环境服务(项目C)到对应子域名
以www.mydomain.com绑定项目C的www-service为例:
- 切换到项目C的Google Cloud Console,打开
www-service的详情页 - 进入自定义域名标签,点击「添加映射」
- 输入
www.mydomain.com,系统会检测到该域名已在项目A验证,此时需项目A管理员完成授权 - 两种授权方式可选:
- 方式一:项目A管理员登录Cloud Console,进入Cloud Run > 自定义域名,找到已验证的
www.mydomain.com,点击「添加服务映射」,选择项目C的www-service,默认路径/*即可 - 方式二:项目A管理员给项目C的Cloud Run服务账号添加
Cloud Run 域名映射编辑器权限(服务账号格式为service-{项目C编号}@serverless-robot-prod.iam.gserviceaccount.com)
- 方式一:项目A管理员登录Cloud Console,进入Cloud Run > 自定义域名,找到已验证的
- 绑定完成后,Cloud Run会生成一个目标域名(比如
abcdef-uc.a.run.app) - 回到项目A的Cloud DNS区域,修改
www.mydomain.com的CNAME记录值为这个生成的目标域名
重复上述步骤,将app.mydomain.com绑定到项目C的app-service。
3. 绑定预发布环境服务(项目B)到子域名
流程与生产环境一致:
- 切换到项目B的Cloud Console,打开
staging-service的详情页,进入自定义域名标签添加映射 - 输入
staging.mydomain.com,由项目A管理员完成授权或权限配置 - 获取Cloud Run生成的目标域名,修改项目A中
staging.mydomain.com的CNAME记录值为该目标域名
注意事项
- 每个子域名只能绑定一个Cloud Run服务,避免重复绑定
- DNS修改后可能需要10-30分钟全球生效,可通过
nslookup或dig命令验证CNAME记录是否正确 - 权限配置遵循最小权限原则,不要授予过宽的权限
内容的提问来源于stack exchange,提问作者ronen
相关产品推荐
相关产品推荐

