我正在尝试通过本地开发的Cloud Run应用程序(Node.js)访问我的Cloud SQL数据库(PostgreSQL)(使用Cloud Code作为VS代码扩展的一部分)。
我能够通过我终端中的Cloud SQL Auth代理访问数据库(使用psql "host=127.0.0.1 port=5432 sslmode=disable dbname=***user=***"
),但从未能够从我本地的Cloud Run成功连接。
Cloud SQL数据库设置为My Cloud Run项目中的连接。
我尝试了两种连接方式(但都失败了):
1.使用示例连接名称:当我这样做时:
const pg = require('knex')({
client: 'pg',
connection: {
user: '...',
password: '...',
database: '...',
host: '/cloudsql/...',
},
debug: true,
});
我得到以下错误:
connect ENOENT /cloudsql/.../.s.PGSQL.5432"
1.使用本地主机和端口:当我这样做时:
const pg = require('knex')({
client: 'pg',
connection: {
user: '...',
password: '...',
database: '...',
host: '127.0.0.1',
port: 5432,
},
debug: true,
});
我得到以下错误:
Error: connect ECONNREFUSED 127.0.0.1:5432
1条答案
按热度按时间1bqhqjot1#
云代码本地云运行实现暂时不支持云SQL。添加在Cloud Run应用程序旁边运行的Cloud SQL Proxy的一种方法是将其作为侧车添加到Cloud Code在Cloud Run本地开发会话期间部署的容器中。尝试以下操作:
1.启动云代码
Cloud Run: Run Locally
会话1.等待应用程序构建和启动,以及端点可用
1.此时,您的应用程序以容器的形式在mini kube中运行(位于单独的命名空间
cloud-run-dev-internal
中),并且部署名称与您的Cloud Run服务名称相匹配。1.创建一个YAML补丁文件,它将在您的应用程序旁边启动Cloud SQL Proxy,以便它可以在本地使用(通过本地主机):
1.将其保存为
cloudsql-proxy-patch.yaml
。按以下方式应用此修补程序文件:kubectl patch deployment {your_cloud_run_service_name} --patch-file cloudsql-proxy-patch.yaml --context cloud-run-dev-internal
1.过一段时间后,Cloud SQL Proxy应该会运行。要进行诊断,您可以使用Kubernetes Explorer并查看
cloud-run-dev-internal
命名空间,看看您的Pod是否同时拥有您的应用程序和Cloud SQL代理端CAR容器。其余部分取决于您如何在本地配置您的Cloud SQL代理。有关如何将代理设置为侧车的更多详细信息,请参阅https://cloud.google.com/sql/docs/mysql/connect-kubernetes-engine#run_the_as_a_sidecar。