作为序言,我觉得我可能误解了GCP的"应用引擎授权"所表示的含义。被范围到项目中的任何应用程序,因为尽管输入了适当的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年多以前的,所以它让我相信这可能是以前需要的,但现在不需要了。
无论如何,如果我对这个假设有误解,请让我知道,否则,如果你知道我为什么会遇到这个错误,我将非常感谢你的帮助。
问题是GKE集群是私有的,我试图通过其公共IP与私有IP地址连接到实例。
为了解析,我在GKE集群所在的VPC网络上的SQL实例上启用了私有IP,然后将连接字符串中的SQL_PUBLIC_IP_ADDRESS值更改为实例的私有IP地址。现在连接正常。
类似问题的附加信息。从私有GKE集群连接到公共云SQL