Skip to content

Commit 567e29a

Browse files
committed
Attach correct permission to cluster SA
1 parent ee441be commit 567e29a

File tree

4 files changed

+71
-2
lines changed

4 files changed

+71
-2
lines changed

autogen/sa.tf

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
locals {
2020
service_account_list = "${compact(concat(google_service_account.cluster_service_account.*.email, list("dummy")))}"
21-
service_account = "${var.service_account == "create" ? element(local.service_account_list, 0) : var.service_account}"
21+
service_account = "${var.service_account == "create" ? element(local.service_account_list, 0) : var.service_account}"
2222
}
2323

2424
resource "google_service_account" "cluster_service_account" {
@@ -27,3 +27,24 @@ resource "google_service_account" "cluster_service_account" {
2727
account_id = "tf-gke-${substr(var.name, 0, 20)}"
2828
display_name = "Terraform-managed service account for cluster ${var.name}"
2929
}
30+
31+
resource "google_project_iam_member" "cluster_service_account-log_writer" {
32+
count = "${var.service_account == "create" ? 1 : 0}"
33+
project = "${google_service_account.cluster_service_account.project}"
34+
role = "roles/logging.logWriter"
35+
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
36+
}
37+
38+
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
39+
count = "${var.service_account == "create" ? 1 : 0}"
40+
project = "${google_project_iam_member.cluster_service_account-log_writer.project}"
41+
role = "roles/monitoring.metricWriter"
42+
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
43+
}
44+
45+
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
46+
count = "${var.service_account == "create" ? 1 : 0}"
47+
project = "${google_project_iam_member.cluster_service_account-metric_writer.project}"
48+
role = "roles/monitoring.viewer"
49+
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
50+
}

modules/private-cluster/sa.tf

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,24 @@ resource "google_service_account" "cluster_service_account" {
2727
account_id = "tf-gke-${substr(var.name, 0, 20)}"
2828
display_name = "Terraform-managed service account for cluster ${var.name}"
2929
}
30+
31+
resource "google_project_iam_member" "cluster_service_account-log_writer" {
32+
count = "${var.service_account == "create" ? 1 : 0}"
33+
project = "${google_service_account.cluster_service_account.project}"
34+
role = "roles/logging.logWriter"
35+
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
36+
}
37+
38+
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
39+
count = "${var.service_account == "create" ? 1 : 0}"
40+
project = "${google_project_iam_member.cluster_service_account-log_writer.project}"
41+
role = "roles/monitoring.metricWriter"
42+
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
43+
}
44+
45+
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
46+
count = "${var.service_account == "create" ? 1 : 0}"
47+
project = "${google_project_iam_member.cluster_service_account-metric_writer.project}"
48+
role = "roles/monitoring.viewer"
49+
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
50+
}

sa.tf

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,24 @@ resource "google_service_account" "cluster_service_account" {
2727
account_id = "tf-gke-${substr(var.name, 0, 20)}"
2828
display_name = "Terraform-managed service account for cluster ${var.name}"
2929
}
30+
31+
resource "google_project_iam_member" "cluster_service_account-log_writer" {
32+
count = "${var.service_account == "create" ? 1 : 0}"
33+
project = "${google_service_account.cluster_service_account.project}"
34+
role = "roles/logging.logWriter"
35+
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
36+
}
37+
38+
resource "google_project_iam_member" "cluster_service_account-metric_writer" {
39+
count = "${var.service_account == "create" ? 1 : 0}"
40+
project = "${google_project_iam_member.cluster_service_account-log_writer.project}"
41+
role = "roles/monitoring.metricWriter"
42+
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
43+
}
44+
45+
resource "google_project_iam_member" "cluster_service_account-monitoring_viewer" {
46+
count = "${var.service_account == "create" ? 1 : 0}"
47+
project = "${google_project_iam_member.cluster_service_account-metric_writer.project}"
48+
role = "roles/monitoring.viewer"
49+
member = "serviceAccount:${google_service_account.cluster_service_account.email}"
50+
}

test/integration/simple_zonal/controls/gcloud.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,13 @@
8080
let(:node_pools) { data['nodePools'].reject { |p| p['name'] == "default-pool" } }
8181

8282
it "uses an automatically created service account" do
83-
raise node_pools.to_json.inspect
83+
expect(node_pools).to include(
84+
including(
85+
"config" => including(
86+
"serviceAccount" => starting_with("tf-gke-simple-zonal-cluster@"),
87+
),
88+
),
89+
)
8490
end
8591

8692
it "has autoscaling enabled" do

0 commit comments

Comments
 (0)