Skip to content

Commit 50ea965

Browse files
authored
fix: random zones only when zones are not provided (#1709)
1 parent fd233e5 commit 50ea965

File tree

15 files changed

+82
-34
lines changed

15 files changed

+82
-34
lines changed

autogen/main/main.tf.tmpl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
{% if beta_cluster %}
2426
provider = google-beta
2527
{% else %}
@@ -31,7 +33,9 @@ data "google_compute_zones" "available" {
3133
}
3234

3335
resource "random_shuffle" "available_zones" {
34-
input = data.google_compute_zones.available.names
36+
count = local.zone_count == 0 ? 1 : 0
37+
38+
input = data.google_compute_zones.available[0].names
3539
result_count = 3
3640
}
3741

@@ -43,7 +47,7 @@ locals {
4347
location = var.regional ? var.region : var.zones[0]
4448
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4549
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
46-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
50+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result),[])) : slice(var.zones, 1, length(var.zones))
4751
// Kubernetes version
4852
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4953
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -245,6 +249,6 @@ data "google_container_engine_versions" "zone" {
245249
//
246250
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
247251
//
248-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
252+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
249253
project = var.project_id
250254
}

examples/simple_zonal_with_acm/acm.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ module "acm" {
2828

2929
secret_type = "ssh"
3030

31-
policy_bundles = ["https://github.com/GoogleCloudPlatform/acm-policy-controller-library/bundles/policy-essentials-v2022?ref=59f4695394285078f7c2029ec7d0f9ed1d6d700a"]
31+
policy_bundles = ["https://github.com/GoogleCloudPlatform/acm-policy-controller-library/bundles/policy-essentials-v2022?ref=dd3f932eefa4c4c44c548144be1c2331d8594689"]
3232

3333
create_metrics_gcp_sa = true
3434
}

main.tf

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
provider = google
2426

2527
project = var.project_id
2628
region = local.region
2729
}
2830

2931
resource "random_shuffle" "available_zones" {
30-
input = data.google_compute_zones.available.names
32+
count = local.zone_count == 0 ? 1 : 0
33+
34+
input = data.google_compute_zones.available[0].names
3135
result_count = 3
3236
}
3337

@@ -39,7 +43,7 @@ locals {
3943
location = var.regional ? var.region : var.zones[0]
4044
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4145
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
42-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
46+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result), [])) : slice(var.zones, 1, length(var.zones))
4347
// Kubernetes version
4448
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4549
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -175,6 +179,6 @@ data "google_container_engine_versions" "zone" {
175179
//
176180
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
177181
//
178-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
182+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
179183
project = var.project_id
180184
}

modules/beta-autopilot-private-cluster/main.tf

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
provider = google-beta
2426

2527
project = var.project_id
2628
region = local.region
2729
}
2830

2931
resource "random_shuffle" "available_zones" {
30-
input = data.google_compute_zones.available.names
32+
count = local.zone_count == 0 ? 1 : 0
33+
34+
input = data.google_compute_zones.available[0].names
3135
result_count = 3
3236
}
3337

@@ -39,7 +43,7 @@ locals {
3943
location = var.regional ? var.region : var.zones[0]
4044
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4145
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
42-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
46+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result), [])) : slice(var.zones, 1, length(var.zones))
4347
// Kubernetes version
4448
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4549
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -143,6 +147,6 @@ data "google_container_engine_versions" "zone" {
143147
//
144148
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
145149
//
146-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
150+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
147151
project = var.project_id
148152
}

modules/beta-autopilot-public-cluster/main.tf

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
provider = google-beta
2426

2527
project = var.project_id
2628
region = local.region
2729
}
2830

2931
resource "random_shuffle" "available_zones" {
30-
input = data.google_compute_zones.available.names
32+
count = local.zone_count == 0 ? 1 : 0
33+
34+
input = data.google_compute_zones.available[0].names
3135
result_count = 3
3236
}
3337

@@ -39,7 +43,7 @@ locals {
3943
location = var.regional ? var.region : var.zones[0]
4044
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4145
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
42-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
46+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result), [])) : slice(var.zones, 1, length(var.zones))
4347
// Kubernetes version
4448
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4549
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -142,6 +146,6 @@ data "google_container_engine_versions" "zone" {
142146
//
143147
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
144148
//
145-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
149+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
146150
project = var.project_id
147151
}

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
provider = google-beta
2426

2527
project = var.project_id
2628
region = local.region
2729
}
2830

2931
resource "random_shuffle" "available_zones" {
30-
input = data.google_compute_zones.available.names
32+
count = local.zone_count == 0 ? 1 : 0
33+
34+
input = data.google_compute_zones.available[0].names
3135
result_count = 3
3236
}
3337

@@ -39,7 +43,7 @@ locals {
3943
location = var.regional ? var.region : var.zones[0]
4044
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4145
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
42-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
46+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result), [])) : slice(var.zones, 1, length(var.zones))
4347
// Kubernetes version
4448
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4549
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -203,6 +207,6 @@ data "google_container_engine_versions" "zone" {
203207
//
204208
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
205209
//
206-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
210+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
207211
project = var.project_id
208212
}

modules/beta-private-cluster/main.tf

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
provider = google-beta
2426

2527
project = var.project_id
2628
region = local.region
2729
}
2830

2931
resource "random_shuffle" "available_zones" {
30-
input = data.google_compute_zones.available.names
32+
count = local.zone_count == 0 ? 1 : 0
33+
34+
input = data.google_compute_zones.available[0].names
3135
result_count = 3
3236
}
3337

@@ -39,7 +43,7 @@ locals {
3943
location = var.regional ? var.region : var.zones[0]
4044
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4145
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
42-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
46+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result), [])) : slice(var.zones, 1, length(var.zones))
4347
// Kubernetes version
4448
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4549
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -203,6 +207,6 @@ data "google_container_engine_versions" "zone" {
203207
//
204208
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
205209
//
206-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
210+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
207211
project = var.project_id
208212
}

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
provider = google-beta
2426

2527
project = var.project_id
2628
region = local.region
2729
}
2830

2931
resource "random_shuffle" "available_zones" {
30-
input = data.google_compute_zones.available.names
32+
count = local.zone_count == 0 ? 1 : 0
33+
34+
input = data.google_compute_zones.available[0].names
3135
result_count = 3
3236
}
3337

@@ -39,7 +43,7 @@ locals {
3943
location = var.regional ? var.region : var.zones[0]
4044
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4145
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
42-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
46+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result), [])) : slice(var.zones, 1, length(var.zones))
4347
// Kubernetes version
4448
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4549
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -202,6 +206,6 @@ data "google_container_engine_versions" "zone" {
202206
//
203207
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
204208
//
205-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
209+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
206210
project = var.project_id
207211
}

modules/beta-public-cluster/main.tf

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
provider = google-beta
2426

2527
project = var.project_id
2628
region = local.region
2729
}
2830

2931
resource "random_shuffle" "available_zones" {
30-
input = data.google_compute_zones.available.names
32+
count = local.zone_count == 0 ? 1 : 0
33+
34+
input = data.google_compute_zones.available[0].names
3135
result_count = 3
3236
}
3337

@@ -39,7 +43,7 @@ locals {
3943
location = var.regional ? var.region : var.zones[0]
4044
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4145
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
42-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
46+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result), [])) : slice(var.zones, 1, length(var.zones))
4347
// Kubernetes version
4448
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4549
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -202,6 +206,6 @@ data "google_container_engine_versions" "zone" {
202206
//
203207
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
204208
//
205-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
209+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
206210
project = var.project_id
207211
}

modules/private-cluster-update-variant/main.tf

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
provider = google
2426

2527
project = var.project_id
2628
region = local.region
2729
}
2830

2931
resource "random_shuffle" "available_zones" {
30-
input = data.google_compute_zones.available.names
32+
count = local.zone_count == 0 ? 1 : 0
33+
34+
input = data.google_compute_zones.available[0].names
3135
result_count = 3
3236
}
3337

@@ -39,7 +43,7 @@ locals {
3943
location = var.regional ? var.region : var.zones[0]
4044
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4145
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
42-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
46+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result), [])) : slice(var.zones, 1, length(var.zones))
4347
// Kubernetes version
4448
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4549
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -176,6 +180,6 @@ data "google_container_engine_versions" "zone" {
176180
//
177181
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
178182
//
179-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
183+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
180184
project = var.project_id
181185
}

modules/private-cluster/main.tf

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
Get available zones in region
2121
*****************************************/
2222
data "google_compute_zones" "available" {
23+
count = local.zone_count == 0 ? 1 : 0
24+
2325
provider = google
2426

2527
project = var.project_id
2628
region = local.region
2729
}
2830

2931
resource "random_shuffle" "available_zones" {
30-
input = data.google_compute_zones.available.names
32+
count = local.zone_count == 0 ? 1 : 0
33+
34+
input = data.google_compute_zones.available[0].names
3135
result_count = 3
3236
}
3337

@@ -39,7 +43,7 @@ locals {
3943
location = var.regional ? var.region : var.zones[0]
4044
region = var.regional ? var.region : join("-", slice(split("-", var.zones[0]), 0, 2))
4145
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
42-
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
46+
node_locations = var.regional ? coalescelist(compact(var.zones), try(sort(random_shuffle.available_zones[0].result), [])) : slice(var.zones, 1, length(var.zones))
4347
// Kubernetes version
4448
master_version_regional = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version
4549
master_version_zonal = var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version
@@ -176,6 +180,6 @@ data "google_container_engine_versions" "zone" {
176180
//
177181
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
178182
//
179-
location = local.zone_count == 0 ? data.google_compute_zones.available.names[0] : var.zones[0]
183+
location = local.zone_count == 0 ? data.google_compute_zones.available[0].names[0] : var.zones[0]
180184
project = var.project_id
181185
}

test/integration/beta_cluster/testdata/TestBetaCluster.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@
106106
"enableComponents": [
107107
"SYSTEM_COMPONENTS"
108108
]
109+
},
110+
"managedPrometheusConfig": {
111+
"enabled": true
109112
}
110113
},
111114
"monitoringService": "monitoring.googleapis.com/kubernetes",

test/integration/sandbox_enabled/testdata/TestSandboxEnabled.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
"addonsConfig": {
33
"configConnectorConfig": {},
44
"dnsCacheConfig": {},
5-
"gcePersistentDiskCsiDriverConfig": {},
5+
"gcePersistentDiskCsiDriverConfig": {
6+
"enabled": true
7+
},
68
"gcpFilestoreCsiDriverConfig": {},
79
"gkeBackupAgentConfig": {},
810
"horizontalPodAutoscaling": {},

0 commit comments

Comments
 (0)