17
17
locals {
18
18
# GCP service account ids must be <= 30 chars matching regex ^[a-z](?:[-a-z0-9]{4,28}[a-z0-9])$
19
19
service_account_name = trimsuffix (substr (var. metrics_gcp_sa_name , 0 , 30 ), " -" )
20
+
21
+ iam_ksa_binding_members = var. create_metrics_gcp_sa ? [
22
+ var . enable_config_sync ? " config-management-monitoring/default" : null ,
23
+ var . enable_policy_controller ? " gatekeeper-system/gatekeeper-admin" : null ,
24
+ ] : []
20
25
}
21
26
22
27
resource "tls_private_key" "k8sop_creds" {
@@ -33,22 +38,14 @@ resource "time_sleep" "wait_acm" {
33
38
create_duration = " 300s"
34
39
}
35
40
36
- resource "google_service_account_iam_binding" "config-management-monitoring-iam" {
37
- count = var. enable_config_sync && var. create_metrics_gcp_sa ? 1 : 0
38
- service_account_id = google_service_account. acm_metrics_writer_sa [0 ]. name
39
- role = " roles/iam.workloadIdentityUser"
40
-
41
- members = [" serviceAccount:${ var . project_id } .svc.id.goog[config-management-monitoring/default]" ]
42
-
43
- depends_on = [google_gke_hub_feature_membership . main ]
44
- }
45
-
46
- resource "google_service_account_iam_binding" "gatekeeper-system-iam" {
47
- count = var. enable_policy_controller && var. create_metrics_gcp_sa ? 1 : 0
41
+ resource "google_service_account_iam_binding" "ksa_iam" {
42
+ count = length (local. iam_ksa_binding_members ) > 0 ? 1 : 0
48
43
service_account_id = google_service_account. acm_metrics_writer_sa [0 ]. name
49
44
role = " roles/iam.workloadIdentityUser"
50
45
51
- members = [" serviceAccount:${ var . project_id } .svc.id.goog[gatekeeper-system/gatekeeper-admin]" ]
46
+ members = [
47
+ for ksa in local . iam_ksa_binding_members : " serviceAccount:${ var . project_id } .svc.id.goog[${ ksa } ]"
48
+ ]
52
49
53
50
depends_on = [google_gke_hub_feature_membership . main ]
54
51
}
0 commit comments