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



我已经能够在开发者控制台中成功创建一个谷歌容器集群,并将我的应用程序部署到它上。这一切都开始得很好,但我发现我无法连接到云SQL,我明白;

"Error: Handshake inactivity timeout"

经过一番挖掘,我从应用程序引擎或本地机器连接到数据库时没有遇到任何问题,所以我觉得这有点奇怪。就在那时,我注意到集群权限。。。

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

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中的每一个,并且我的云SQL实例接受来自任何IP的连接(我之前一直在App Engine上的托管虚拟机中运行Node),所以我的想法是Google正在显式禁用这些API。

所以我的两部分问题是:;

  • 有什么方法可以修改这些权限吗
  • 这些API被禁用的原因是什么?(我想肯定有)

非常感谢您的帮助!

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

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

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

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

如果使用命令行创建集群,请将--scopes命令传递给gcloud container clusters create,以在节点虚拟机上设置适当的服务帐户作用域。

嗯,我发现了一些可能感兴趣的东西:

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

  2. 默认情况下,任何VM都可以使用此服务帐户。它的权限不允许我们使用Cloud SQL、bucket等。但是。。。

  3. 但您可以使用另一个具有正确排列的服务帐户来更改此行为。只需手动创建并设置所需的排列即可。使用gcloud auth activate-service-account --key-file=/new-service-account-cred.json进行切换

  4. 就是这样。

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

相关内容

  • 没有找到相关文章

最新更新