以编程方式检查 Cloud 运行 域映射是否已完成

Programmatically check if Cloud Run domain mapping has done

我正在开发一项服务,该服务将为每个客户提供一个子域。到目前为止,我已将 Google 域的 DNS 规则设置为

* | CNAME | 3600 | ghs.googlehosted.com.

然后我在 Cloud 运行 控制台中为每个子域添加映射。我想在每次新用户注册时以编程方式执行所有这些操作。

DNS 规则将自动处理任何新的子域,并将其映射到我将使用 gcloud 命令的服务: gcloud beta run domain-mappings create --service frontend --domain sub.domain.com

现在,我如何检查云 运行 配置何时完成,以便我可以通知客户平台已准备好使用?我可以每分钟 CRON 命令 gcloud beta run domain-mappings describe --domain sub.domain.com,解析 JSON 输出并检查状态是否已完成。它很昂贵,但它应该有效。 问题是,即使 gcloud cli 或 Web 控制台将配置标记为已完成,该平台在 5-10 分钟内仍无法访问,从而导致 ERR_CONNECTION_REFUSED 错误。服务日志显示正在向子域发出请求,但不知何故它不会为它提供服务。

我最终按照建议使用了负载均衡器。我遵循了这个文档“Setting up a load balancer with Cloud Run, App Engine, or Cloud Functions”,唯一不同的是我提供了我自己的通配符证书(感谢 Let's Encrypt 和 certbox)。

现在我只需使用 Google 域的 API 即可立即创建子域。