Terraform на gcloud: serviceaccounts запрещен: User "system:anonymous" cannot create resource "serviceaccounts"

Я пытаюсь написать код terraform для создания кластера GKE (с RBAC) на Google Cloud. Кластер 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: Пользователь "system:anonymous" не может создать ресурс "serviceaccounts" в группе API "" в пространстве имен "kube-system".

Есть идеи, почему я не могу использовать master_auth и что я должен использовать вместо этого?

0
задан 6 April 2021 в 16:40
1 ответ
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
}

1
ответ дан 24 April 2021 в 01:41

Теги

Похожие вопросы