【问题标题】:Cannot connect to Cloud SQL Proxy through GKE with Workload Identity无法使用 Workload Identity 通过 GKE 连接到 Cloud SQL 代理
【发布时间】:2021-05-06 06:48:36
【问题描述】:

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

{ 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 集群连接到 Cloud SQL 实例,但是,我想通过凭据文件使用工作负载身份。

【问题讨论】:

    标签: google-cloud-platform google-kubernetes-engine google-cloud-sql service-accounts cloud-sql-proxy


    【解决方案1】:

    如果您不在 Compute Engine 虚拟机上使用默认服务帐号,则无需使用虚拟机的范围。范围仅适用于计算引擎默认服务帐号,而自定义服务帐号则不会。

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

    【讨论】:

    • 我正在使用类似于 GCP 指南中显示的 kubernetes 部署,并且我有 serviceAccountName: <YOUR-KSA-NAME>。我的 GSA 绑定到我的 KSA 并且我的 KSA 已正确注释。这不应该指定使用该服务帐户而不是默认帐户吗?
    • 集群上是否安装了 Workload Identity?
    • 是的,我的问题是我的 deployment.yml 中的一个错字...我使用的是 serviceAccount: <YOUR-KSA-NAME> 而不是 serviceAccountName: <YOUR-KSA-NAME>
    • @JestGames 很奇怪,我犯了同样的错误。虽然在文档中找不到错误
    猜你喜欢
    • 2018-06-03
    • 2021-10-07
    • 2022-11-10
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2021-05-06
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多