在没有 clouds_sql 代理的情况下访问 CloudSQL 的最佳方式

Optimal way to access CloudSQL without the clouds_sql proxy

我正在编写一个旨在访问 CloudSQL 数据库的服务 (Golang)。

连接到 CloudSQL 实例的推荐方法是使用 cloud_sql 代理 - 对数据库进行身份验证并处理 SSL。

但是,出于性能和其他一些原因,我想使用处理身份验证的 Golang 包直接访问数据库。

目前,使用database/sql 包发起与数据库的连接无法正常工作,因为我需要使用CloudSQL 将机器IP 列入白名单。但是鉴于我正在使用 Kubernetes 部署我的应用程序,原始 IP 可能随时更改。

我很想知道是否有人知道解决这个问题的最佳方法是什么。

如果您使用的是 Postgresql,则可以使用他们的 go 库:https://cloud.google.com/sql/docs/postgres/connect-external-app#go

对于 MySQL,请参阅此文档: https://cloud.google.com/sql/docs/mysql/connect-external-app#go

尚未测试此方法(供应商会将我锁定到 gcloud)但他们的文档往往是可靠的且是最新的。