【发布时间】:2018-12-11 20:42:38
【问题描述】:
我有一个使用 CloudSQL 进行了一年多的暂存集群,现在我想启动另一个 GKE 集群(同一个谷歌项目),指向同一个数据库进行测试。但是,尝试在新集群中使用旧集群中的 credentials.json 时,我看到了错误。
googleapi: Error 403: The client is not authorized to make this request., notAuthorized"
我在 IAM 上四处寻找一种方法来打开新集群的权限,但即使我看到一个具有“Cloud SQL 客户端”角色的服务帐户,也没有找到方法。
共享凭据或打开权限的正确方法是什么(或者我需要为此创建一个新的服务帐户)?
我们的模板部署 yaml 看起来像:
- name: postgres-proxy
image: gcr.io/cloudsql-docker/gce-proxy:1.09
imagePullPolicy: Always
command: ["/cloud_sql_proxy",
"--dir=/cloudsql",
"-instances=@@PROJECT@@:us-central1:@@DBINST@@=tcp:5432",
"-credential_file=/secrets/cloudsql/credentials.json"]
volumeMounts:
- name: cloudsql-oauth-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: ssl-certs
mountPath: /etc/ssl/certs
- name: cloudsql
mountPath: /cloudsql
【问题讨论】:
-
由于您使用 GKE 集群连接 Cloud SQL 数据库,我假设您使用 Cloud SQL 代理连接 Cloud SQL 实例。此外,您提到您正在使用服务帐户进行连接。在yaml文件中,你是否提供了secret,即本文“cloud.google.com/sql/docs/mysql/connect-kubernetes-engine#proxy”中描述的json密钥文件的路径?
-
Jason - 是的,这是标准的 Sidecar SQL 代理模式。我会将我们的模板添加到原始帖子中
标签: kubernetes google-cloud-platform google-cloud-sql google-kubernetes-engine