Skip to content

Commit 567c586

Browse files
authored
Merge pull request #108 from thefirstofthe300/ds/fix-version-skews
Fix issue with regional cluster roll outs causing version skews
2 parents c105646 + 1d73e9d commit 567c586

File tree

18 files changed

+101
-35
lines changed

18 files changed

+101
-35
lines changed

auth.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@ provider "kubernetes" {
3131
host = "https://${local.cluster_endpoint}"
3232
token = "${data.google_client_config.default.access_token}"
3333
cluster_ca_certificate = "${base64decode(local.cluster_ca_certificate)}"
34-
}
34+
}

autogen/cluster_regional.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ resource "google_container_cluster" "primary" {
3131

3232
network = "${replace(data.google_compute_network.gke_network.self_link, "https://www.googleapis.com/compute/v1/", "")}"
3333
subnetwork = "${replace(data.google_compute_subnetwork.gke_subnetwork.self_link, "https://www.googleapis.com/compute/v1/", "")}"
34-
min_master_version = "${local.kubernetes_version}"
34+
min_master_version = "${local.kubernetes_version_regional}"
3535

3636
logging_service = "${var.logging_service}"
3737
monitoring_service = "${var.monitoring_service}"
@@ -104,7 +104,7 @@ resource "google_container_node_pool" "pools" {
104104
project = "${var.project_id}"
105105
region = "${var.region}"
106106
cluster = "${var.name}"
107-
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version)}"
107+
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version_regional)}"
108108
initial_node_count = "${lookup(var.node_pools[count.index], "initial_node_count", lookup(var.node_pools[count.index], "min_count", 1))}"
109109

110110
autoscaling {

autogen/cluster_zonal.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ resource "google_container_cluster" "zonal_primary" {
3131

3232
network = "${replace(data.google_compute_network.gke_network.self_link, "https://www.googleapis.com/compute/v1/", "")}"
3333
subnetwork = "${replace(data.google_compute_subnetwork.gke_subnetwork.self_link, "https://www.googleapis.com/compute/v1/", "")}"
34-
min_master_version = "${local.kubernetes_version}"
34+
min_master_version = "${local.kubernetes_version_zonal}"
3535

3636
logging_service = "${var.logging_service}"
3737
monitoring_service = "${var.monitoring_service}"
@@ -104,7 +104,7 @@ resource "google_container_node_pool" "zonal_pools" {
104104
project = "${var.project_id}"
105105
zone = "${var.zones[0]}"
106106
cluster = "${var.name}"
107-
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version)}"
107+
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version_zonal)}"
108108
initial_node_count = "${lookup(var.node_pools[count.index], "initial_node_count", lookup(var.node_pools[count.index], "min_count", 1))}"
109109

110110
autoscaling {

autogen/main.tf

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ resource "random_shuffle" "available_zones" {
3131
}
3232

3333
locals {
34-
kubernetes_version = "${var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_node_version}"
35-
node_version = "${var.node_version != "" ? var.node_version : local.kubernetes_version}"
36-
custom_kube_dns_config = "${length(keys(var.stub_domains)) > 0 ? true : false}"
37-
network_project_id = "${var.network_project_id != "" ? var.network_project_id : var.project_id}"
34+
kubernetes_version_regional = "${var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version}"
35+
kubernetes_version_zonal = "${var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version}"
36+
node_version_regional = "${var.node_version != "" && var.regional ? var.node_version : local.kubernetes_version_regional}"
37+
node_version_zonal = "${var.node_version != "" && !var.regional ? var.node_version : local.kubernetes_version_zonal}"
38+
custom_kube_dns_config = "${length(keys(var.stub_domains)) > 0 ? true : false}"
39+
network_project_id = "${var.network_project_id != "" ? var.network_project_id : var.project_id}"
3840

3941
cluster_type = "${var.regional ? "regional" : "zonal"}"
4042

@@ -149,7 +151,17 @@ locals {
149151
Get available container engine versions
150152
*****************************************/
151153
data "google_container_engine_versions" "region" {
152-
provider = "{% if private_cluster %}google-beta{%else %}google{% endif %}"
153-
zone = "${data.google_compute_zones.available.names[0]}"
154+
provider = "google-beta"
155+
region = "${var.region}"
156+
project = "${var.project_id}"
157+
}
158+
159+
data "google_container_engine_versions" "zone" {
160+
provider = "google-beta"
161+
// Work around to prevent a lack of zone declaration from causing regional cluster creation from erroring out due to error
162+
//
163+
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
164+
//
165+
zone = "${var.zones[0] == "" ? data.google_compute_zones.available.names[0] : var.zones[0]}"
154166
project = "${var.project_id}"
155167
}

cluster_regional.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ resource "google_container_cluster" "primary" {
3131

3232
network = "${replace(data.google_compute_network.gke_network.self_link, "https://www.googleapis.com/compute/v1/", "")}"
3333
subnetwork = "${replace(data.google_compute_subnetwork.gke_subnetwork.self_link, "https://www.googleapis.com/compute/v1/", "")}"
34-
min_master_version = "${local.kubernetes_version}"
34+
min_master_version = "${local.kubernetes_version_regional}"
3535

3636
logging_service = "${var.logging_service}"
3737
monitoring_service = "${var.monitoring_service}"
@@ -97,7 +97,7 @@ resource "google_container_node_pool" "pools" {
9797
project = "${var.project_id}"
9898
region = "${var.region}"
9999
cluster = "${var.name}"
100-
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version)}"
100+
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version_regional)}"
101101
initial_node_count = "${lookup(var.node_pools[count.index], "initial_node_count", lookup(var.node_pools[count.index], "min_count", 1))}"
102102

103103
autoscaling {

cluster_zonal.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ resource "google_container_cluster" "zonal_primary" {
3131

3232
network = "${replace(data.google_compute_network.gke_network.self_link, "https://www.googleapis.com/compute/v1/", "")}"
3333
subnetwork = "${replace(data.google_compute_subnetwork.gke_subnetwork.self_link, "https://www.googleapis.com/compute/v1/", "")}"
34-
min_master_version = "${local.kubernetes_version}"
34+
min_master_version = "${local.kubernetes_version_zonal}"
3535

3636
logging_service = "${var.logging_service}"
3737
monitoring_service = "${var.monitoring_service}"
@@ -97,7 +97,7 @@ resource "google_container_node_pool" "zonal_pools" {
9797
project = "${var.project_id}"
9898
zone = "${var.zones[0]}"
9999
cluster = "${var.name}"
100-
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version)}"
100+
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version_zonal)}"
101101
initial_node_count = "${lookup(var.node_pools[count.index], "initial_node_count", lookup(var.node_pools[count.index], "min_count", 1))}"
102102

103103
autoscaling {
@@ -107,7 +107,7 @@ resource "google_container_node_pool" "zonal_pools" {
107107

108108
management {
109109
auto_repair = "${lookup(var.node_pools[count.index], "auto_repair", true)}"
110-
auto_upgrade = "${lookup(var.node_pools[count.index], "auto_upgrade", true)}"
110+
auto_upgrade = "${lookup(var.node_pools[count.index], "auto_upgrade", false)}"
111111
}
112112

113113
node_config {

examples/deploy_service/main.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ provider "google" {
2424
version = "~> 1.20"
2525
}
2626

27+
provider "google-beta" {
28+
credentials = "${file(var.credentials_path)}"
29+
region = "${var.region}"
30+
}
31+
2732
provider "kubernetes" {
2833
load_config_file = false
2934
host = "https://${module.gke.endpoint}"

examples/node_pool/main.tf

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ provider "google" {
2424
region = "${var.region}"
2525
}
2626

27+
provider "google-beta" {
28+
credentials = "${file(var.credentials_path)}"
29+
region = "${var.region}"
30+
}
31+
2732
module "gke" {
2833
source = "../../"
2934
project_id = "${var.project_id}"
@@ -43,6 +48,7 @@ module "gke" {
4348
min_count = 1
4449
max_count = 2
4550
service_account = "${var.compute_engine_service_account}"
51+
auto_upgrade = true
4652
},
4753
{
4854
name = "pool-02"
@@ -53,7 +59,6 @@ module "gke" {
5359
disk_type = "pd-standard"
5460
image_type = "COS"
5561
auto_repair = false
56-
auto_upgrade = false
5762
service_account = "${var.compute_engine_service_account}"
5863
},
5964
]

examples/shared_vpc/main.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ provider "google" {
2424
region = "${var.region}"
2525
}
2626

27+
provider "google-beta" {
28+
credentials = "${file(var.credentials_path)}"
29+
region = "${var.region}"
30+
}
31+
2732
module "gke" {
2833
source = "../../"
2934
project_id = "${var.project_id}"

examples/simple_regional/main.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ provider "google" {
2323
region = "${var.region}"
2424
}
2525

26+
provider "google-beta" {
27+
credentials = "${file(var.credentials_path)}"
28+
region = "${var.region}"
29+
}
30+
2631
module "gke" {
2732
source = "../../"
2833
project_id = "${var.project_id}"

examples/simple_zonal/main.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ provider "google" {
2424
region = "${var.region}"
2525
}
2626

27+
provider "google-beta" {
28+
credentials = "${file(var.credentials_path)}"
29+
region = "${var.region}"
30+
}
31+
2732
module "gke" {
2833
source = "../../"
2934
project_id = "${var.project_id}"

examples/stub_domains/main.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ provider "google" {
2424
region = "${var.region}"
2525
}
2626

27+
provider "google-beta" {
28+
credentials = "${file(var.credentials_path)}"
29+
region = "${var.region}"
30+
}
31+
2732
module "gke" {
2833
source = "../../"
2934
project_id = "${var.project_id}"

main.tf

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ resource "random_shuffle" "available_zones" {
3131
}
3232

3333
locals {
34-
kubernetes_version = "${var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_node_version}"
35-
node_version = "${var.node_version != "" ? var.node_version : local.kubernetes_version}"
36-
custom_kube_dns_config = "${length(keys(var.stub_domains)) > 0 ? true : false}"
37-
network_project_id = "${var.network_project_id != "" ? var.network_project_id : var.project_id}"
34+
kubernetes_version_regional = "${var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version}"
35+
kubernetes_version_zonal = "${var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version}"
36+
node_version_regional = "${var.node_version != "" && var.regional ? var.node_version : local.kubernetes_version_regional}"
37+
node_version_zonal = "${var.node_version != "" && !var.regional ? var.node_version : local.kubernetes_version_zonal}"
38+
custom_kube_dns_config = "${length(keys(var.stub_domains)) > 0 ? true : false}"
39+
network_project_id = "${var.network_project_id != "" ? var.network_project_id : var.project_id}"
3840

3941
cluster_type = "${var.regional ? "regional" : "zonal"}"
4042

@@ -149,7 +151,17 @@ locals {
149151
Get available container engine versions
150152
*****************************************/
151153
data "google_container_engine_versions" "region" {
152-
provider = "google"
153-
zone = "${data.google_compute_zones.available.names[0]}"
154+
provider = "google-beta"
155+
region = "${var.region}"
154156
project = "${var.project_id}"
155-
}
157+
}
158+
159+
data "google_container_engine_versions" "zone" {
160+
// Work around to prevent a lack of zone declaration from causing regional cluster creation from erroring out due to error
161+
//
162+
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
163+
//
164+
zone = "${var.zones[0] == "" ? data.google_compute_zones.available.names[0] : var.zones[0]}"
165+
166+
project = "${var.project_id}"
167+
}

modules/private-cluster/cluster_regional.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ resource "google_container_cluster" "primary" {
3131

3232
network = "${replace(data.google_compute_network.gke_network.self_link, "https://www.googleapis.com/compute/v1/", "")}"
3333
subnetwork = "${replace(data.google_compute_subnetwork.gke_subnetwork.self_link, "https://www.googleapis.com/compute/v1/", "")}"
34-
min_master_version = "${local.kubernetes_version}"
34+
min_master_version = "${local.kubernetes_version_regional}"
3535

3636
logging_service = "${var.logging_service}"
3737
monitoring_service = "${var.monitoring_service}"
@@ -102,7 +102,7 @@ resource "google_container_node_pool" "pools" {
102102
project = "${var.project_id}"
103103
region = "${var.region}"
104104
cluster = "${var.name}"
105-
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version)}"
105+
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version_regional)}"
106106
initial_node_count = "${lookup(var.node_pools[count.index], "initial_node_count", lookup(var.node_pools[count.index], "min_count", 1))}"
107107

108108
autoscaling {

modules/private-cluster/cluster_zonal.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ resource "google_container_cluster" "zonal_primary" {
3131

3232
network = "${replace(data.google_compute_network.gke_network.self_link, "https://www.googleapis.com/compute/v1/", "")}"
3333
subnetwork = "${replace(data.google_compute_subnetwork.gke_subnetwork.self_link, "https://www.googleapis.com/compute/v1/", "")}"
34-
min_master_version = "${local.kubernetes_version}"
34+
min_master_version = "${local.kubernetes_version_zonal}"
3535

3636
logging_service = "${var.logging_service}"
3737
monitoring_service = "${var.monitoring_service}"
@@ -102,7 +102,7 @@ resource "google_container_node_pool" "zonal_pools" {
102102
project = "${var.project_id}"
103103
zone = "${var.zones[0]}"
104104
cluster = "${var.name}"
105-
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version)}"
105+
version = "${lookup(var.node_pools[count.index], "auto_upgrade", false) ? "" : lookup(var.node_pools[count.index], "version", local.node_version_zonal)}"
106106
initial_node_count = "${lookup(var.node_pools[count.index], "initial_node_count", lookup(var.node_pools[count.index], "min_count", 1))}"
107107

108108
autoscaling {

modules/private-cluster/main.tf

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ resource "random_shuffle" "available_zones" {
3131
}
3232

3333
locals {
34-
kubernetes_version = "${var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_node_version}"
35-
node_version = "${var.node_version != "" ? var.node_version : local.kubernetes_version}"
36-
custom_kube_dns_config = "${length(keys(var.stub_domains)) > 0 ? true : false}"
37-
network_project_id = "${var.network_project_id != "" ? var.network_project_id : var.project_id}"
34+
kubernetes_version_regional = "${var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.region.latest_master_version}"
35+
kubernetes_version_zonal = "${var.kubernetes_version != "latest" ? var.kubernetes_version : data.google_container_engine_versions.zone.latest_master_version}"
36+
node_version_regional = "${var.node_version != "" && var.regional ? var.node_version : local.kubernetes_version_regional}"
37+
node_version_zonal = "${var.node_version != "" && !var.regional ? var.node_version : local.kubernetes_version_zonal}"
38+
custom_kube_dns_config = "${length(keys(var.stub_domains)) > 0 ? true : false}"
39+
network_project_id = "${var.network_project_id != "" ? var.network_project_id : var.project_id}"
3840

3941
cluster_type = "${var.regional ? "regional" : "zonal"}"
4042

@@ -150,6 +152,16 @@ locals {
150152
*****************************************/
151153
data "google_container_engine_versions" "region" {
152154
provider = "google-beta"
153-
zone = "${data.google_compute_zones.available.names[0]}"
155+
region = "${var.region}"
154156
project = "${var.project_id}"
155157
}
158+
159+
data "google_container_engine_versions" "zone" {
160+
// Work around to prevent a lack of zone declaration from causing regional cluster creation from erroring out due to error
161+
//
162+
// data.google_container_engine_versions.zone: Cannot determine zone: set in this resource, or set provider-level zone.
163+
//
164+
zone = "${var.zones[0] == "" ? data.google_compute_zones.available.names[0] : var.zones[0]}"
165+
166+
project = "${var.project_id}"
167+
}

modules/private-cluster/variables.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ variable "ip_range_pods" {
116116
}
117117

118118
variable "ip_range_services" {
119-
description = "The _name_ of the secondary subnet ip range to use for services"
119+
description = "The _name_ of the secondary subnet range to use for services"
120120
}
121121

122122
variable "remove_default_node_pool" {

variables.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ variable "ip_range_pods" {
116116
}
117117

118118
variable "ip_range_services" {
119-
description = "The _name_ of the secondary subnet ip range to use for services"
119+
description = "The _name_ of the secondary subnet range to use for services"
120120
}
121121

122122
variable "remove_default_node_pool" {

0 commit comments

Comments
 (0)