11

我已经能够在开发人员控制台中成功创建一个 Google Container Cluster 并将我的应用程序部署到它。这一切都很好,但是我发现我无法连接到 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

我真的希望在我的容器引擎节点中同时使用 Cloud Storage 和 Cloud SQL。我已经在我的项目设置中允许访问这些 API,并且我的 Cloud SQL 实例正在接受来自任何 IP 的连接(我之前一直在 App Engine 上的托管 VM 中运行 Node),所以我的想法是 Google 明确禁用这些 API。

所以我的两部分问题是;

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

非常感谢任何帮助!

4

4 回答 4

19

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

gcloud container node-pools create np1 --cluster $CLUSTER --scopes $SCOPES
gcloud container node-pools delete default-pool --cluster $CLUSTER
于 2016-10-19T15:55:57.367 回答
16

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

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

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

于 2015-04-24T03:56:28.887 回答
1

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

  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. 而已。

于 2019-10-26T19:32:47.863 回答
0

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

于 2017-05-19T13:00:15.773 回答