Google-Cloud-Platform

gcloud 上的 Terraform:服務帳戶被禁止:使用者“系統:匿名”無法創建資源“服務帳戶”

  • April 8, 2021

我正在嘗試編寫用於在 Google Cloud 上引導 GKE 集群(使用 RBAC)的 terraform 程式碼。GKE 集群已成功創建,但我還想創建一個服務帳戶,我可以將其重用於以後的kubernetes提供程序配置。這意味著我需要kubernetes在我的子模組中使用提供程序來臨時創建kubernetes_service_account其餘 terraform 程式碼所需的內容。

resource "google_container_cluster" "k8s_autopilot_cluster" { ... }

provider kubernetes {
   alias = "k8s_gcloud_temp"
   cluster_ca_certificate  = base64decode(google_container_cluster.k8s_autopilot_cluster.master_auth.0.cluster_ca_certificate)
   host                    = google_container_cluster.k8s_autopilot_cluster.endpoint
   client_certificate      = base64decode(google_container_cluster.k8s_autopilot_cluster.master_auth.0.client_certificate)
   client_key              = base64decode(google_container_cluster.k8s_autopilot_cluster.master_auth.0.client_key)
}

resource "kubernetes_service_account" "terraform_k8s_sa" {
   provider = kubernetes.k8s_gcloud_temp
   metadata {
       namespace = "kube-system"
       name = "terraform-k8s-sa"
   }

 automount_service_account_token = false
}

所以我的集群創建成功,但我的創建kubernetes_service_account總是失敗,Error: serviceaccounts is forbidden: User "system:anonymous" cannot create resource "serviceaccounts" in API group "" in the namespace "kube-system".

知道為什麼我不能使用master_auth以及應該使用什麼嗎?

data "google_client_config" "provider" {}
provider kubernetes {
   alias = "k8s_gcloud_temp"
   cluster_ca_certificate  = base64decode(google_container_cluster.k8s_autopilot_cluster.master_auth.0.cluster_ca_certificate)
   host                    = google_container_cluster.k8s_autopilot_cluster.endpoint
   token = data.google_client_config.provider.access_token
}

引用自:https://serverfault.com/questions/1059515