无法通过具有 Workload Identity 的 GKE 连接到云 SQL 代理

Cannot connect to Cloud SQL Proxy through GKE with Workload Identity

我正在按照 Google 云平台的指南使用云 SQL 代理和 Public IP 地址通过 GKE 集群连接到云 SQL 实例( https://cloud.google.com/sql/docs/postgres/connect-kubernetes-engine)。但是,在尝试部署我的应用程序后,我在容器日志中收到以下错误。

{ Error: connect ECONNREFUSED 127.0.0.1:5432
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 5432 }

后面是错误信息

2021/02/01 05:35:31 the default Compute Engine service account is not configured with sufficient permissions to access the Cloud SQL API from this VM. Please create a new VM with Cloud SQL access (scope) enabled under "Identity and API access". Alternatively, create a new "service account key" and specify it using the -credential_file parameter

此外(我假设相关)当我检查集群中节点的计算引擎时,我看到 Cloud SQL Cloud API 访问范围被禁用。有没有办法启用它?

我知道有多种方法可以通过 GKE 集群连接到云 SQL 实例,但是,我想通过凭证文件使用工作负载身份。

如果您不在 Compute Engine VM 上使用默认服务帐户,则无需使用 VM 范围。范围仅适用于计算引擎默认服务帐户,使用自定义服务帐户则不然。

如果您在集群上使用工作负载身份,则情况相同(因为使用的不是 Compute Engine 默认服务帐户,而是自定义帐户)。是的,比服务帐户密钥文件更喜欢这个。