在GCP上构建Hasura的故事
引子
由于在GCP上构建Hasura并且希望以Cloud Run + Cloud SQL的配置顺利进行个人开发,但是我发现通过Auth Proxy连接的方法并不常见,因此将其作为备忘录留在这里。
操作程序
-
- 创建服务帐户(用于Cloud SQL Auth Proxy)
-
- 创建Cloud SQL实例(PostgreSQL)
-
- 将Docker镜像推送到Artifact Resitory
- 在Cloud Run上启动Hasura
创建服务账号(用于Cloud SQL Auth Proxy)
创建Cloud SQL实例(PostgresSQL)
我将构建用于Hasura连接的数据库。由于这是个人开发用途,因此我将采用最小配置。
▼ 配置
类型:PostgreSQL 15.2(默认)
机器配置:db-g1-small(1vCPU,1.7GB)
存储:SSD 10GB
将Docker镜像推送到Artifact存储库。
首先,在ArtifactRepository中创建一个存储库。
我通过控制台界面手动创建了一个存储库。
接下来可以直接在本地使用Hasura的Docker镜像
docker pull hasura/graphql-engine:latest
给它贴上标签
docker tag hasura/graphql-engine:latest \
us-central1-docker.pkg.dev/< ProjectID >/< RepositoryName >/< IMAGE >
在推送之前,我有些忘记了一个咒语。
记得好像是将认证通过到Artifact Registry的咒语…
gcloud auth configure-docker us-central1-docker.pkg.dev
将Artifact Registry推送
docker push \
us-central1-docker.pkg.dev/< ProjectID >/< RepositoryName >/< IMAGE >
使用Cloud Run来启动Hasura
从Artifact Repository推送的镜像中创建版本。
▼ 构成
我真的只设置了最小配置!
環境更改:
HASURA_GRAPHQL_ADMIN_SECRET:訪問Hasura控制台時的密碼
HASURA_GRAPHQL_ENABLE_CONSOLE:設置為TRUE以訪問Hasura控制台
HASURA_GRAPHQL_SERVER_PORT:啟動的端口
HASURA_GRAPHQL_DATABASE_URL:數據庫的URL(由於通過認證代理存在一些特點,詳情請參考以下記錄)
重点有三个!
将下面的话用中文进行本地化的改写,只需要一种选项:
在环境变量中设置用于Cloud SQL Auth Proxy的变量名为HASURA_GRAPHQL_DATABASE_URL,并以“postgres://:@/?host=/cloudsql/”的格式进行设置。
在云SQL连接中选择创建的数据库。说实话,如果不选择这个选项,我不知道是否能连接上?当我将鼠标悬停在图标上时,提示说会自动化代理,所以没有选择的话可能无法连接。
从安全选项卡中选择最初创建的服务帐户,否则代理可能无法正常工作,因此需要设置创建的服务帐户。虽然可能可以将”Cloud SQL Client”添加到默认的服务帐户中,但由于希望权限最小化,因此选择了最初创建的服务帐户。
当启动修订版本后,通过发布的Cloud Run URL 进入到 Hasura 控制台页面!
如果可以使用环境变量设置的 HASURA_GRAPHQL_ADMIN_SECRET 登录成功,则表示成功 ?
结束了
如果只是在Cloud Run上运行原封不动的镜像,那么构建Hasura非常容易!由于Hasura可以进行代码管理,所以在使用产品时,代码管理似乎比在Hasura控制台上点点点更好!(虽然我完全不知道如何做到…)
只需要一个选择的话,以下是对原文的汉语释义:
除此之外,只需要通过使用SecretManager之类的工具来管理『HASURA_GRAPHQL_ADMIN_SECRET』和『HASURA_GRAPHQL_DATABASE_URL』,并在进行区域引用时进行相应的配置,似乎就可以完成全部操作了!
感谢您阅读到最后 ?♂️