Skip to content

Commit fc43485

Browse files
authored
fix: Add ability to impersonate service accounts in kubectl for all submodules (terraform-google-modules#903)
1 parent e2ba8d2 commit fc43485

File tree

17 files changed

+151
-124
lines changed

17 files changed

+151
-124
lines changed

autogen/main/dns.tf.tmpl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
Delete default kube-dns configmap
2121
*****************************************/
2222
module "gcloud_delete_default_kube_dns_configmap" {
23-
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24-
version = "~> 2.0.2"
25-
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26-
cluster_name = google_container_cluster.primary.name
27-
cluster_location = google_container_cluster.primary.location
28-
project_id = var.project_id
29-
upgrade = var.gcloud_upgrade
30-
23+
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24+
version = "~> 2.1.0"
25+
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26+
cluster_name = google_container_cluster.primary.name
27+
cluster_location = google_container_cluster.primary.location
28+
project_id = var.project_id
29+
upgrade = var.gcloud_upgrade
30+
impersonate_service_account = var.impersonate_service_account
3131

3232
kubectl_create_command = "${path.module}/scripts/delete-default-resource.sh kube-system configmap kube-dns"
3333
kubectl_destroy_command = ""

dns.tf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
Delete default kube-dns configmap
2121
*****************************************/
2222
module "gcloud_delete_default_kube_dns_configmap" {
23-
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24-
version = "~> 2.0.2"
25-
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26-
cluster_name = google_container_cluster.primary.name
27-
cluster_location = google_container_cluster.primary.location
28-
project_id = var.project_id
29-
upgrade = var.gcloud_upgrade
30-
23+
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24+
version = "~> 2.1.0"
25+
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26+
cluster_name = google_container_cluster.primary.name
27+
cluster_location = google_container_cluster.primary.location
28+
project_id = var.project_id
29+
upgrade = var.gcloud_upgrade
30+
impersonate_service_account = var.impersonate_service_account
3131

3232
kubectl_create_command = "${path.module}/scripts/delete-default-resource.sh kube-system configmap kube-dns"
3333
kubectl_destroy_command = ""

modules/asm/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ To deploy this config:
6464
| enable\_gcp\_iam\_roles | Sets `--enable_gcp_iam_roles` option if true. | `bool` | `false` | no |
6565
| enable\_registration | Sets `--enable_registration` option if true. | `bool` | `false` | no |
6666
| gcloud\_sdk\_version | The gcloud sdk version to use. Minimum required version is 293.0.0 | `string` | `"296.0.1"` | no |
67+
| impersonate\_service\_account | An optional service account to impersonate for gcloud commands. If this service account is not specified, the module will use Application Default Credentials. | `string` | `""` | no |
6768
| key\_file | The GCP Service Account credentials file path used to deploy ASM. | `string` | `""` | no |
6869
| location | The location (zone or region) this cluster has been created in. | `string` | n/a | yes |
6970
| managed\_control\_plane | ASM managed control plane boolean. Determines whether to install ASM managed control plane. Installing ASM managed control plane does not install gateways. Documentation on how to install gateways with ASM MCP can be found at https://cloud.google.com/service-mesh/docs/managed-control-plane#install_istio_gateways_optional. | `bool` | `false` | no |

modules/asm/main.tf

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,17 @@ locals {
3232

3333
module "asm_install" {
3434
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
35-
version = "~> 2.0.2"
35+
version = "~> 2.1.0"
3636
module_depends_on = [var.cluster_endpoint]
3737

38-
gcloud_sdk_version = var.gcloud_sdk_version
39-
upgrade = true
40-
additional_components = ["kubectl", "kpt", "beta", "kustomize"]
41-
cluster_name = var.cluster_name
42-
cluster_location = var.location
43-
project_id = var.project_id
44-
service_account_key_file = var.service_account_key_file
38+
gcloud_sdk_version = var.gcloud_sdk_version
39+
upgrade = true
40+
additional_components = ["kubectl", "kpt", "beta", "kustomize"]
41+
cluster_name = var.cluster_name
42+
cluster_location = var.location
43+
project_id = var.project_id
44+
service_account_key_file = var.service_account_key_file
45+
impersonate_service_account = var.impersonate_service_account
4546

4647
kubectl_create_command = "${path.module}/scripts/install_asm.sh ${var.project_id} ${var.cluster_name} ${var.location} ${var.asm_version} ${var.mode} ${var.managed_control_plane} ${var.skip_validation} ${local.options_string} ${local.custom_overlays_string} ${var.enable_all} ${var.enable_cluster_roles} ${var.enable_cluster_labels} ${var.enable_gcp_apis} ${var.enable_gcp_iam_roles} ${var.enable_gcp_components} ${var.enable_registration} ${var.outdir} ${var.ca} ${local.ca_cert} ${local.ca_key} ${local.root_cert} ${local.cert_chain} ${local.service_account_string} ${local.key_file_string} ${local.asm_git_tag_string}"
4748
kubectl_destroy_command = "kubectl delete ns istio-system"

modules/asm/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,12 @@ variable "managed_control_plane" {
8787
default = false
8888
}
8989

90+
variable "impersonate_service_account" {
91+
type = string
92+
description = "An optional service account to impersonate for gcloud commands. If this service account is not specified, the module will use Application Default Credentials."
93+
default = ""
94+
}
95+
9096
variable "options" {
9197
description = "Comma separated list of options. Works with in-cluster control plane only. Supported options are documented in https://cloud.google.com/service-mesh/docs/enable-optional-features."
9298
type = list

modules/beta-private-cluster-update-variant/dns.tf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
Delete default kube-dns configmap
2121
*****************************************/
2222
module "gcloud_delete_default_kube_dns_configmap" {
23-
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24-
version = "~> 2.0.2"
25-
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26-
cluster_name = google_container_cluster.primary.name
27-
cluster_location = google_container_cluster.primary.location
28-
project_id = var.project_id
29-
upgrade = var.gcloud_upgrade
30-
23+
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24+
version = "~> 2.1.0"
25+
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26+
cluster_name = google_container_cluster.primary.name
27+
cluster_location = google_container_cluster.primary.location
28+
project_id = var.project_id
29+
upgrade = var.gcloud_upgrade
30+
impersonate_service_account = var.impersonate_service_account
3131

3232
kubectl_create_command = "${path.module}/scripts/delete-default-resource.sh kube-system configmap kube-dns"
3333
kubectl_destroy_command = ""

modules/beta-private-cluster/dns.tf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
Delete default kube-dns configmap
2121
*****************************************/
2222
module "gcloud_delete_default_kube_dns_configmap" {
23-
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24-
version = "~> 2.0.2"
25-
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26-
cluster_name = google_container_cluster.primary.name
27-
cluster_location = google_container_cluster.primary.location
28-
project_id = var.project_id
29-
upgrade = var.gcloud_upgrade
30-
23+
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24+
version = "~> 2.1.0"
25+
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26+
cluster_name = google_container_cluster.primary.name
27+
cluster_location = google_container_cluster.primary.location
28+
project_id = var.project_id
29+
upgrade = var.gcloud_upgrade
30+
impersonate_service_account = var.impersonate_service_account
3131

3232
kubectl_create_command = "${path.module}/scripts/delete-default-resource.sh kube-system configmap kube-dns"
3333
kubectl_destroy_command = ""

modules/beta-public-cluster-update-variant/dns.tf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
Delete default kube-dns configmap
2121
*****************************************/
2222
module "gcloud_delete_default_kube_dns_configmap" {
23-
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24-
version = "~> 2.0.2"
25-
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26-
cluster_name = google_container_cluster.primary.name
27-
cluster_location = google_container_cluster.primary.location
28-
project_id = var.project_id
29-
upgrade = var.gcloud_upgrade
30-
23+
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24+
version = "~> 2.1.0"
25+
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26+
cluster_name = google_container_cluster.primary.name
27+
cluster_location = google_container_cluster.primary.location
28+
project_id = var.project_id
29+
upgrade = var.gcloud_upgrade
30+
impersonate_service_account = var.impersonate_service_account
3131

3232
kubectl_create_command = "${path.module}/scripts/delete-default-resource.sh kube-system configmap kube-dns"
3333
kubectl_destroy_command = ""

modules/beta-public-cluster/dns.tf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
Delete default kube-dns configmap
2121
*****************************************/
2222
module "gcloud_delete_default_kube_dns_configmap" {
23-
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24-
version = "~> 2.0.2"
25-
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26-
cluster_name = google_container_cluster.primary.name
27-
cluster_location = google_container_cluster.primary.location
28-
project_id = var.project_id
29-
upgrade = var.gcloud_upgrade
30-
23+
source = "terraform-google-modules/gcloud/google//modules/kubectl-wrapper"
24+
version = "~> 2.1.0"
25+
enabled = (local.custom_kube_dns_config || local.upstream_nameservers_config) && ! var.skip_provisioners
26+
cluster_name = google_container_cluster.primary.name
27+
cluster_location = google_container_cluster.primary.location
28+
project_id = var.project_id
29+
upgrade = var.gcloud_upgrade
30+
impersonate_service_account = var.impersonate_service_account
3131

3232
kubectl_create_command = "${path.module}/scripts/delete-default-resource.sh kube-system configmap kube-dns"
3333
kubectl_destroy_command = ""

modules/hub/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ resource "google_service_account_key" "gke_hub_key" {
7272

7373
module "gke_hub_registration" {
7474
source = "terraform-google-modules/gcloud/google"
75-
version = "~> 2.0.2"
75+
version = "~> 2.1.0"
7676

7777
platform = "linux"
7878
gcloud_sdk_version = var.gcloud_sdk_version

0 commit comments

Comments
 (0)