Terraform gcp 与共享 vpc、gke

Posted

技术标签:

【中文标题】Terraform gcp 与共享 vpc、gke【英文标题】:Terraform gcp with shared vpc, gke 【发布时间】:2021-09-02 13:59:59 【问题描述】:

我正在GCP中编写terraform文件,在共享vpc的服务项目中创建一个共享vpc,GKE,计算引擎。

我正面临 GKE 说错误的错误

403 permission error service.hostagent even though it has required permissions. 

而且我正在使用服务帐户密钥。不确定这是否是正确的方法,例如我在宿主项目中创建服务帐户,然后在服务项目的 iam 中添加了该服务帐户 ID。使用宿主项目服务密钥。这是正确的方法吗?

谢谢。

【问题讨论】:

github.com/terraform-google-modules/… 【参考方案1】:

在创建共享 VPC 时,从宿主项目共享子网到服务项目允许服务项目的服务帐户中提到的所有成员。

根据错误消息,似乎缺少 IAM 权限。使用 GKE 创建共享 VPC 时,请确保您具有以下权限:

    要创建共享 VPC,需要共享 VPC 管理员角色(您似乎已经拥有)。

    要共享您的子网,您需要授予用户计算网络用户角色。

    在创建 GKE 配置时,请确保在所有项目中启用 Google Kubernetes Engine API。在项目中启用 API 会为项目创建一个 GKE 服务帐号。

    附加服务项目时,启用 Kubernetes Engine 访问权限会授予服务项目的 GKE 服务帐号在宿主项目中执行网络管理操作的权限。

    每个服务项目的 GKE 服务帐号必须与宿主项目上的 Host Service Agent User 角色绑定。此角色专门用于包含以下权限的共享 VPC 集群:

    a) compute.firewalls.get

    b) container.hostServiceAgent.*

更多信息,您可以查看here。

【讨论】:

以上是关于Terraform gcp 与共享 vpc、gke的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Terraform 创建一个健康的 VPC-Native GKE 集群?

在 terraform 中禁用时默认启用 GKE 屏蔽节点

在 terraform 中设置 gke 自动驾驶仪的好例子

如何使用 terraform 为自动创建的 GKE 集群和服务防火墙规则启用 Logconfig

GCP - 将 Vertex.AI 连接到共享 VPC 的问题

compute.networks.get 从共享 VPC 服务项目创建 GCP 实例组?