google_gke/service_account.tf (32 lines of code) (raw):
#
# Service Account Setup
#
locals {
registry_projects_list = length(var.registry_project_ids) == 0 ? [local.project_id] : var.registry_project_ids
}
resource "google_service_account" "cluster_service_account" {
account_id = var.service_account_id == null ? "gke-${local.cluster_name}" : var.service_account_id
display_name = "Terraform-managed service account for cluster ${local.cluster_name}"
project = local.project_id
}
resource "google_project_iam_member" "cluster_service_account-defaults" {
for_each = toset(var.node_pool_sa_roles)
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
project = local.project_id
role = each.key
}
resource "google_project_iam_member" "cluster_service_account-gar" {
for_each = var.grant_registry_access ? toset(local.registry_projects_list) : []
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
project = each.key
role = "roles/artifactregistry.reader"
}
resource "google_project_iam_member" "cluster_service_account-gcr" {
for_each = var.grant_registry_access ? toset(local.registry_projects_list) : []
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
project = each.key
role = "roles/storage.objectViewer"
}
resource "google_project_iam_member" "cluster_service_account-gcfs" {
count = var.enable_gcfs ? 1 : 0
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
project = local.project_id
role = "roles/serviceusage.serviceUsageConsumer"
}