【问题标题】:Google Cloud SQL Docker Proxy谷歌云 SQL Docker 代理
【发布时间】:2020-09-14 19:05:20
【问题描述】:

我正在尝试使用记录在 here 中的 Google Cloud SQL Docker 代理从我的本地环境 (OSX) 连接到我的 Cloud SLQ (Postgres) 实例。运行代理时,我得到:

google: could not find default credentials.

请注意,我在正确项目的本地环境中运行 gcloud,并通过 application-default 登录进行了身份验证。我知道在类似的问题中,这是解决问题的方法,但这不是我的情况。

【问题讨论】:

  • 澄清...当你说application-default是什么意思?你跑gcloud auth application-default login了吗?还是您打印了不记名令牌?如果您运行gcloud auth list,您是否看到了您期望的帐户,并且是您想要的ACTIVE
  • 哦,刚刚看到您正在运行 Docker 示例,而不仅仅是连接。你有服务帐号吗?您从application-default print-access-token 获得的令牌与您需要的不同。您需要一个 IAM 服务帐号密钥。因为它是一个 Docker 容器,我认为您可以通过在 Docker 容器的构建步骤中运行 gcloud auth application-default login 来做到这一点,但那是......因为它会为您提供最终用户凭据,这不是推荐使用代理的方式。
  • 感谢您的回复。是的,我确实按照文档中的说明创建了一个服务帐户。该帐户具有云 sql 管理员角色,我正在使用其 JSON 密钥。
  • 好的,错误消息暗示 1)您没有在该 docker run 命令中传递-credential_file(请注意,您在该命令中有两个地方指定凭据文件,第二个将导致代理查找默认凭据)或 2)您在 -v 参数中指定的路径到 cred 文件的路径不正确。因此,在任何一种情况下,代理都会尝试查找默认凭据(例如,在 GOOGLE_APPLICATION_CREDENTIALS 环境变量中设置的路径),但它仍然无法找到任何东西。

标签: docker proxy google-cloud-sql gcloud


【解决方案1】:

指定密钥文件的绝对路径解决了我的问题。

【讨论】:

    【解决方案2】:

    这里有一个很好的资源来解决这个问题:https://cloud.google.com/sql/docs/mysql/connect-admin-proxy

    查看您在此处指定 PATH_TO_KEY_FILE 的位置:

       docker run -d \
          -v PATH_TO_KEY_FILE:/config \
          -p 127.0.0.1:3306:3306 \
          gcr.io/cloudsql-docker/gce-proxy:1.19.1 /cloud_sql_proxy \
          -instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:3306 \
          -credential_file=/config
    

    【讨论】:

      猜你喜欢
      • 2020-10-03
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      • 2019-01-29
      • 2019-04-22
      • 2016-12-26
      相关资源
      最近更新 更多