更改Google容器引擎群集的权限

时间:2015-04-24 02:08:44

标签: node.js google-cloud-storage google-cloud-sql google-cloud-platform google-kubernetes-engine

我已经能够在开发者控制台中成功创建Google容器群集并将我的应用部署到它。这一切都很好,但我发现我无法连接到Cloud SQL,我得到了;

 "Error: Handshake inactivity timeout"

经过一番挖掘后,我从App Engine或本地机器连接到数据库时没有遇到任何问题,所以我觉得这有点奇怪。那时我注意到群集权限......

当我选择我的群集时,我会看到以下内容;

  Permissions

User info           Disabled
Compute             Read Write
Storage             Read Only
Task queue          Disabled
BigQuery            Disabled
Cloud SQL           Disabled
Cloud Datastore     Disabled
Cloud Logging       Write Only
Cloud Platform      Disabled

我真的希望在我的容器引擎节点中同时使用云存储和云端SQL。我允许在我的项目设置中访问每个API,我的Cloud SQL实例正在接受来自任何IP的连接(我之前在App Engine上的托管虚拟机中运行过Node),所以我的想法是Google明确禁用这些API。

所以我的两部分问题是;

  • 有什么办法可以修改这些权限吗?
  • 有没有什么理由可以禁用这些API? (我认为必须有)

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:17)

使用节点池,您可以通过创建具有所需范围的新节点池(然后删除旧节点),排序将范围添加到正在运行的集群中:

gcloud container node-pools create np1 --cluster $CLUSTER --scopes $SCOPES
gcloud container node-pools delete default-pool --cluster $CLUSTER

答案 1 :(得分:13)

权限由群集创建期间附加到节点VM的服务帐户定义(在实例化VM后无法更改服务帐户,因此这是您唯一可以选择权限的时间)。

如果您使用云控制台,请单击“创建群集”页面上的“更多”链接,您将看到可以添加到群集中节点的权限列表(所有权限都默认为关闭)。切换您想要的任何内容,您应该在创建群集后看到相应的权限。

如果使用命令行创建群集,请将--scopes命令传递给gcloud container clusters create以在节点VM上设置相应的服务帐户范围。

答案 2 :(得分:0)

对于cloudsql,可以从指定代理的容器进行连接,如此处所述https://cloud.google.com/sql/docs/postgres/connect-container-engine

答案 3 :(得分:0)

嗯,我发现了一些可能很有趣的东西:

  1. 权限属于服务帐户(所谓的Compute Engine default service account,看起来像12345566788-compute@developer.gserviceaccount.com

  2. 默认情况下,任何VM均可使用此服务帐户运行。而且它的权限不允许我们Cloud SQL,存储桶等。但是...

  3. 但是您可以使用具有正确权限的另一个服务帐户来更改此行为。只需手动创建它,然后仅设置所需的烫发即可。使用gcloud auth activate-service-account --key-file=/new-service-account-cred.json

  4. 将其关闭
  5. 就是这样。