type
status
date
slug
summary
tags
category
icon
Cloud Run 是 Google Cloud 提供的一款serverless产品,它提供了两种服务的形式,一种是
服务
,另一种是 作业
,本文主要讲讲使用 服务
的过程。
Cloud Run
Cloud Run 提供的
服务
可用来部署容器映像
、源代码
或函数
,三者都是 serverless 中常见的角色,我以部署一个 New API 来演示。New API 官网提供了 docker 部署的方式:
Docker 部署 - New API Docs![Docker 部署 - New API Docs]()
Docker 部署 - New API Docs
新一代大模型网关与AI资产管理系统
在 Cloud Run 中,选择
从现有容器镜像部署一个修订版本

如果部署的项目需要对外提供服务,记得取消
身份验证

默认情况下,Cloud Run 部署的应用是不能访问 Cloud SQL 中的数据库的,想要 Cloud Run 和 Cloud SQL 能够通信,需要将
网络
中的连接到 VPC 以获取出站流量
勾选上。
另外一种方式是创建
无服务器 VPC 访问通道连接器
,光是看这个名字都头大,我简单尝试了一下,一个连接器一个月的预估价格是几十美刀,流量不大的话,还是不折腾这个连接器了。接下来点击创建,稍微等待一会儿就创建好了。
Cloud SQL
New API 官网文档使用的是 MySQL,所以在 Cloud SQL 中我们也创建一个 MySQL 的项目。
为了安全起见,数据库服务不应该暴露到公网上,但是为了方便我们在 Cloud Run 部署的容器中访问,我们在
网络
中选择分配一个专用IP
,并且需要勾选上 Google Cloud 服务授权

配置 SQL_DSN
在 NewAPI 中配置外部数据库,需要添加 SQL_DSN,格式为:
用户名:密码@tcp(数据库地址:3306)/数据库名
在 Cloud SQL 中,可以分别创建数据库和数据库用户,对应前面的 SQL_DSN 中的用户名、密码和数据库名。

而此时还剩下一个
数据库地址
,实际上就是我们前面要求分配的专用IP

因此以我的这个例子,最终的 SQL_DSN 为:
newapiadmin:newpassword@tcp(10.56.65.3:3306)/newapi
接下来返回到 Cloud Run,在
变量和密钥
中添加 SQL_DSN,再部署一次即可。
检查
部署完成以后,我们可以通过 CloudSQL Studio 访问 newapidb 数据库,看到各种表都已经生成,那就说明一切正常,完事了。

部署区域
需要注意的是,部署在香港地区的 Cloud Run 服务不支持绑定自定义域名。同时经过我的测试,即使是部署在香港地区,大陆的访问延迟基本也是在180ms左右,说明 Cloud Run 没有走谷歌的优质网络。在GCP上创建虚拟机时,选择香港地区的高级网络,可以做到国内访问延迟50ms左右,所以使用Cloud Run部署的服务访问体验实际上应该会比较一般。
当我发现延迟180+ms以后,我就放弃了使用Cloud Run来部署服务,延迟太高了就没必要。
总结
一时兴起想使用 Cloud Run + Cloud SQL 来搭建一个自用的服务,在使用过程中遇到 Cloud Run 和 Cloud SQL 网络不通的问题,在谷歌搜索上搜了好多帖子,都没解决,最后是靠 Cloud SQL 提供的连接测试帮忙分析出原因,然后才知道要开启
连接到VPC以获取出站流量

- 作者:阿杰鲁
- 链接:https://dddd.moe/article/2097d549-6f33-809f-b399-d2b042ab953e
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。