如何使用 Terraform 在 GKE 中设置非默认服务帐户?
Posted
技术标签:
【中文标题】如何使用 Terraform 在 GKE 中设置非默认服务帐户?【英文标题】:How can a non-default service account be set in GKE using Terraform? 【发布时间】:2021-12-14 18:31:33 【问题描述】:我正在尝试为我正在创建的节点池设置一个非默认服务帐户。
但是,每次使用以下代码时,节点池都会显示为使用default
服务帐户。
resource "google_container_node_pool" "node_pool"
...
service_account = "myserviceaccount@<id>.iam.gserviceaccount.com"
oauth_scopes = [
"https://www.googleapis.com/auth/cloud-platform"
]
当我在 GKE 控制台上查看时,它会将服务帐户显示为 default
,而不是我指定的帐户。
我已在控制台中确认,可以手动创建节点组,并将myserviceaccount
设置为节点组的服务帐户。仅在 Terraform 中不起作用。
创建节点池时如何设置自己的服务帐号?
对此的任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:从您的问题中不清楚您的service_account
是否按要求是node_config
的一部分,而node_config
是资源的一部分。
见example
【讨论】:
您的答案是正确的。不要通过电子邮件地址指定服务帐户。如果服务帐户不存在,请将 google_service_account 资源添加到 HCL 并在 google_container_node_pool 中指定该资源。如果服务帐户已存在,请通过 data 资源添加 google_service_account。 谢谢!我似乎得到了这个工作,但现在,我收到一个错误:查找服务帐户命名空间/myserviceaccount时出错:找不到服务帐户“myserviceaccount”这绝对不是错字。所以我想弄清楚启用服务帐户是否还需要其他任何东西。 你看到@john-hanley 的评论了吗?如果 Service Account 不存在,则必须事先创建。 如果服务帐号已经存在,则使用此数据资源引用一个:registry.terraform.io/providers/hashicorp/google/latest/docs/… 如果服务帐号不存在,则使用此资源创建一个:registry.terraform.io/providers/hashicorp/google/latest/docs/… 然后在 google_container_node_pool 中声明服务帐户,如下所示:service_account = google_service_account.sa_resource_name.email以上是关于如何使用 Terraform 在 GKE 中设置非默认服务帐户?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Terraform 将 GKE 凭证传递给 Kubernetes 提供者?
如何使用 terraform 为自动创建的 GKE 集群和服务防火墙规则启用 Logconfig
如何使用 Terraform 创建一个健康的 VPC-Native GKE 集群?