【问题标题】:Terraform Google cloud service account issueTerraform Google 云服务帐户问题
【发布时间】:2022-11-17 11:24:44
【问题描述】:

我正在尝试通过 Terraform 创建 GKE 集群。面临 w.r.t 服务帐户问题。在我们的企业中,Terraform 要使用的服务帐户是在一个项目中创建的svc 帐户它位于名为 prod 的文件夹中。

我正在尝试在不同的 Dev 文件夹中创建 GKE 集群,项目名称是接口.通过 Terraform,当我使用具有必要权限的服务帐户驻留在项目 apigw 中时,它工作正常。

但是当我尝试使用具有相同权限的服务帐户时,服务帐户位于不同的文件夹中,出现此错误

Error: googleapi: Error 403: Kubernetes Engine API has not been used in project 8075178406 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/container.googleapis.com/overview?project=8075178406 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

其中 8075178406 是项目编号svc 帐户

为什么它会尝试启用 APIsvc 帐户当 GKE 集群创建于接口.服务帐户不应该跨文件夹使用吗?

谢谢。

【问题讨论】:

  • 是的,服务帐户由一个项目拥有,但可以由任何项目使用。这发生在每个使用 Google 管理的服务帐户的项目中。但是,服务帐户必须通过资源的 IAM 绑定显式添加到其他项目或资源。
  • 由于服务帐户位于 prod 文件夹下的项目 - “svc-accnts”,并且具有角色的服务帐户应用于子项目为“apigw”的 DEV 文件夹,因此具有权限的服务帐户会自动应用通过继承在“apigw”项目上。所以我想这满足了要求。

标签: google-cloud-platform terraform terraform-provider-gcp


【解决方案1】:

您提供的错误与服务帐户的权限无关。也许您没有更改提供程序中的项目?请记住,您可以有多个指向不同项目的相同类型 (google) 的提供程序。一些代码示例将提供更多信息。

看:

【讨论】:

  • 这些项目不应用于提供者,而是在资源级别单独应用。项目 ID 作为 .auto.tfvars 文件的变量,并通过模块传递给各个资源。所有资源都使用项目 apigw 的项目 ID 正确设置。
【解决方案2】:

看起来这是一个已知问题,也会通过 gcloud cli 发生。

https://issuetracker.google.com/180053712

解决方法是在项目 (svc-accnts) 上启用 Kubernetes Engine API,它工作正常。我犹豫是否要这样做,因为我认为这可能会在项目中创建资源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-22
    • 2019-04-16
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 2018-12-04
    相关资源
    最近更新 更多