我在 GCP Cloud run 中设置了我的实例,以连接到 Cloud SQL DB (Postgres),但只有一个实例可以与云 SQL 建立连接,而其他实例则不能,所有实例都使用相同的主机或内部 IP,相同的用户名和密码,我也创建了一个新的用户名和密码,但我不能
提前致谢
答案 0 :(得分:2)
您是否在将云运行部署的实例连接到云 SQL 或连接到云 SQL 时遇到问题?我的第一个猜测是您没有将所有建立直接 TCP 连接的位置的公共 Ipv4 IP 地址列入白名单;但是,如果这只是部署的 CR 实例中的问题,那么我将根据您的连接方式检查以下内容:
最简单的方法是使用公共 IP 并确保所有 IAM 角色和服务帐户对云运行服务帐户可用,并更改连接主机以使用 Unix 套接字而不是使用代理的原始 IP 地址。
比如在本地开发中,你的主机可能是 35.333.333.1 之类的,但是部署到生产环境时,你需要更改主机,使用路径“/cloudsql/<”访问的Cloud SQL实例的Unix域套接字INSTANCE_CONNECTION_NAME>”。
INSTANCE_CONNECTION_NAME 可以在 Google Cloud Console 中您的实例的概览页面上找到,也可以通过运行以下命令找到:
gcloud sql instances describe [INSTANCE_NAME].
这一切都可以为您解决,使用 gcloud
像这样部署到云运行(假设您的代码中的 envvars/connection 参数是正确的):
如果您要部署新容器,请使用以下命令:
gcloud run deploy --image IMAGE \
--add-cloudsql-instances INSTANCE-CONNECTION-NAME \
--update-env-vars INSTANCE_CONNECTION_NAME="INSTANCE-CONNECTION-NAME"
如果您要更新现有服务,请使用以下命令:
gcloud run services update SERVICE-NAME \
--add-cloudsql-instances INSTANCE-CONNECTION-NAME \
--update-env-vars INSTANCE_CONNECTION_NAME="INSTANCE-CONNECTION-NAME"
请参阅此处了解详情:https://cloud.google.com/sql/docs/postgres/connect-run