【问题标题】:GKE Cluster unable to connect to PG Cloud SQL instance using KnexJSGKE 集群无法使用 KnexJS 连接到 PG Cloud SQL 实例
【发布时间】:2021-10-27 19:21:49
【问题描述】:

作为前言,我觉得我可能误解了 GCP 的含义,因为它的“App Engine 授权”范围仅限于项目中的任何应用程序,因为尽管输入了正确的 postgres 连接 URL (postgresql://username: secret@SQL_PUBLIC_IP_ADDRESS:5432/DB_NAME),我的 GKE 节点无法连接。

我正在我的 API 中启动连接;

knex({
  client: 'pg',
  connection: process.env.POSTGRES_URL.slice(0, -process.env.DATABASE_NAME.length),
  pool: { min: 0, max: 100 }
});

我已经阅读了很多关于将 Cloud SQL 实例连接到 GKE 集群的中型帖子和文章,但它们都提到创建 VPC 并通过 Cloud SQL 实例上的私有 IP 进行连接,这似乎是必需的在 GCP 对项目中的任何应用程序默认授权之前 (??)。最后一点是我觉得我可能弄错的地方,但这些文章/问题中的大多数似乎来自 1 年多以前,所以这让我相信这可能以前需要,但现在不再需要了。

无论如何,如果我对此推定有误解,请告诉我,否则,如果您知道为什么我会遇到此错误,我们将不胜感激。

【问题讨论】:

标签: postgresql google-cloud-platform google-kubernetes-engine google-cloud-sql knex.js


【解决方案1】:

问题在于 GKE 集群是私有的,我试图通过其公共 IP 而非私有 IP 地址连接到实例。

为了解决这个问题,我在 GKE 集群所在的 VPC 网络上的 SQL 实例上启用了私有 IP,然后将连接字符串中的 SQL_PUBLIC_IP_ADDRESS 值更改为实例的私有 IP 地址。现在连接正常。

来自类似问题的其他信息。 Connecting to public Cloud SQL from a private GKE cluster

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2022-07-26
    • 2021-03-10
    • 2021-05-06
    相关资源
    最近更新 更多