Skip to content

Commit 04fcb50

Browse files
committed
Added cluster autoscaling - optimized input variable
* Fix #93
1 parent 1e21211 commit 04fcb50

File tree

17 files changed

+95
-86
lines changed

17 files changed

+95
-86
lines changed

autogen/cluster.tf.tmpl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ resource "google_container_cluster" "primary" {
4545
}
4646
}
4747

48-
4948
{% if beta_cluster %}
5049
dynamic "release_channel" {
5150
for_each = local.release_channel

autogen/main.tf.tmpl

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,17 @@ locals {
5050
node_version = var.regional ? local.node_version_regional : local.node_version_zonal
5151
{% if beta_cluster %}
5252
release_channel = var.release_channel != null ? [{ channel : var.release_channel }] : []
53-
limits = var.cluster_autoscaling.resource_limits
5453

55-
autoscalling_resource_limits = concat(
56-
var.cluster_autoscaling.enabled && lookup(local.limits, "max_cpu_cores", 0) > lookup(local.limits, "min_cpu_cores", 0) ? [{
54+
autoscalling_resource_limits = var.cluster_autoscaling.enabled ? [{
5755
resource_type = "cpu"
58-
minimum = local.limits["min_cpu_cores"]
59-
maximum = local.limits["max_cpu_cores"]
60-
}] : [],
61-
var.cluster_autoscaling.enabled && lookup(local.limits, "max_memory_gb", 0) > lookup(local.limits, "min_memory_gb", 0) ? [{
56+
minimum = var.cluster_autoscaling.min_cpu_cores
57+
maximum = var.cluster_autoscaling.max_cpu_cores
58+
}, {
6259
resource_type = "memory"
63-
minimum = local.limits["min_memory_gb"]
64-
maximum = local.limits["max_memory_gb"]
60+
minimum = var.cluster_autoscaling.min_memory_gb
61+
maximum = var.cluster_autoscaling.max_memory_gb
6562
}] : []
66-
)
63+
6764
{% endif %}
6865

6966

autogen/variables.tf.tmpl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,18 @@ variable "node_pools_metadata" {
182182

183183
variable "cluster_autoscaling" {
184184
type = object({
185-
enabled = bool
186-
resource_limits = map(number)
185+
enabled = bool
186+
min_cpu_cores = number
187+
max_cpu_cores = number
188+
min_memory_gb = number
189+
max_memory_gb = number
187190
})
188191
default = {
189-
enabled = false
190-
resource_limits = {}
192+
enabled = false
193+
max_cpu_cores = 0
194+
min_cpu_cores = 0
195+
max_memory_gb = 0
196+
min_memory_gb = 0
191197
}
192198
description = "Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling)"
193199
}

cluster.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ resource "google_container_cluster" "primary" {
4242
}
4343

4444

45-
4645
subnetwork = data.google_compute_subnetwork.gke_subnetwork.self_link
4746
min_master_version = local.master_version
4847

examples/node_pool/variables.tf

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,18 @@ variable "compute_engine_service_account" {
5454

5555
variable "cluster_autoscaling" {
5656
type = object({
57-
enabled = bool
58-
resource_limits = map(number)
57+
enabled = bool
58+
min_cpu_cores = number
59+
max_cpu_cores = number
60+
min_memory_gb = number
61+
max_memory_gb = number
5962
})
6063
default = {
61-
enabled = false
62-
resource_limits = {}
64+
enabled = false
65+
max_cpu_cores = 0
66+
min_cpu_cores = 0
67+
max_memory_gb = 0
68+
min_memory_gb = 0
6369
}
6470
description = "Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling)"
6571
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ resource "google_container_cluster" "primary" {
4141
}
4242
}
4343

44-
4544
dynamic "release_channel" {
4645
for_each = local.release_channel
4746

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

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,17 @@ locals {
4545
master_version = var.regional ? local.master_version_regional : local.master_version_zonal
4646
node_version = var.regional ? local.node_version_regional : local.node_version_zonal
4747
release_channel = var.release_channel != null ? [{ channel : var.release_channel }] : []
48-
limits = var.cluster_autoscaling.resource_limits
49-
50-
autoscalling_resource_limits = concat(
51-
var.cluster_autoscaling.enabled && lookup(local.limits, "max_cpu_cores", 0) > lookup(local.limits, "min_cpu_cores", 0) ? [{
52-
resource_type = "cpu"
53-
minimum = local.limits["min_cpu_cores"]
54-
maximum = local.limits["max_cpu_cores"]
55-
}] : [],
56-
var.cluster_autoscaling.enabled && lookup(local.limits, "max_memory_gb", 0) > lookup(local.limits, "min_memory_gb", 0) ? [{
57-
resource_type = "memory"
58-
minimum = local.limits["min_memory_gb"]
59-
maximum = local.limits["max_memory_gb"]
60-
}] : []
61-
)
48+
49+
autoscalling_resource_limits = var.cluster_autoscaling.enabled ? [{
50+
resource_type = "cpu"
51+
minimum = var.cluster_autoscaling.min_cpu_cores
52+
maximum = var.cluster_autoscaling.max_cpu_cores
53+
}, {
54+
resource_type = "memory"
55+
minimum = var.cluster_autoscaling.min_memory_gb
56+
maximum = var.cluster_autoscaling.max_memory_gb
57+
}] : []
58+
6259

6360

6461
custom_kube_dns_config = length(keys(var.stub_domains)) > 0

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,18 @@ variable "node_pools_metadata" {
181181

182182
variable "cluster_autoscaling" {
183183
type = object({
184-
enabled = bool
185-
resource_limits = map(number)
184+
enabled = bool
185+
min_cpu_cores = number
186+
max_cpu_cores = number
187+
min_memory_gb = number
188+
max_memory_gb = number
186189
})
187190
default = {
188-
enabled = false
189-
resource_limits = {}
191+
enabled = false
192+
max_cpu_cores = 0
193+
min_cpu_cores = 0
194+
max_memory_gb = 0
195+
min_memory_gb = 0
190196
}
191197
description = "Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling)"
192198
}

modules/beta-private-cluster/cluster.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ resource "google_container_cluster" "primary" {
4141
}
4242
}
4343

44-
4544
dynamic "release_channel" {
4645
for_each = local.release_channel
4746

modules/beta-private-cluster/main.tf

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,17 @@ locals {
4545
master_version = var.regional ? local.master_version_regional : local.master_version_zonal
4646
node_version = var.regional ? local.node_version_regional : local.node_version_zonal
4747
release_channel = var.release_channel != null ? [{ channel : var.release_channel }] : []
48-
limits = var.cluster_autoscaling.resource_limits
49-
50-
autoscalling_resource_limits = concat(
51-
var.cluster_autoscaling.enabled && lookup(local.limits, "max_cpu_cores", 0) > lookup(local.limits, "min_cpu_cores", 0) ? [{
52-
resource_type = "cpu"
53-
minimum = local.limits["min_cpu_cores"]
54-
maximum = local.limits["max_cpu_cores"]
55-
}] : [],
56-
var.cluster_autoscaling.enabled && lookup(local.limits, "max_memory_gb", 0) > lookup(local.limits, "min_memory_gb", 0) ? [{
57-
resource_type = "memory"
58-
minimum = local.limits["min_memory_gb"]
59-
maximum = local.limits["max_memory_gb"]
60-
}] : []
61-
)
48+
49+
autoscalling_resource_limits = var.cluster_autoscaling.enabled ? [{
50+
resource_type = "cpu"
51+
minimum = var.cluster_autoscaling.min_cpu_cores
52+
maximum = var.cluster_autoscaling.max_cpu_cores
53+
}, {
54+
resource_type = "memory"
55+
minimum = var.cluster_autoscaling.min_memory_gb
56+
maximum = var.cluster_autoscaling.max_memory_gb
57+
}] : []
58+
6259

6360

6461
custom_kube_dns_config = length(keys(var.stub_domains)) > 0

modules/beta-private-cluster/variables.tf

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,18 @@ variable "node_pools_metadata" {
181181

182182
variable "cluster_autoscaling" {
183183
type = object({
184-
enabled = bool
185-
resource_limits = map(number)
184+
enabled = bool
185+
min_cpu_cores = number
186+
max_cpu_cores = number
187+
min_memory_gb = number
188+
max_memory_gb = number
186189
})
187190
default = {
188-
enabled = false
189-
resource_limits = {}
191+
enabled = false
192+
max_cpu_cores = 0
193+
min_cpu_cores = 0
194+
max_memory_gb = 0
195+
min_memory_gb = 0
190196
}
191197
description = "Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling)"
192198
}

modules/beta-public-cluster/cluster.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ resource "google_container_cluster" "primary" {
4141
}
4242
}
4343

44-
4544
dynamic "release_channel" {
4645
for_each = local.release_channel
4746

modules/beta-public-cluster/main.tf

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,17 @@ locals {
4545
master_version = var.regional ? local.master_version_regional : local.master_version_zonal
4646
node_version = var.regional ? local.node_version_regional : local.node_version_zonal
4747
release_channel = var.release_channel != null ? [{ channel : var.release_channel }] : []
48-
limits = var.cluster_autoscaling.resource_limits
49-
50-
autoscalling_resource_limits = concat(
51-
var.cluster_autoscaling.enabled && lookup(local.limits, "max_cpu_cores", 0) > lookup(local.limits, "min_cpu_cores", 0) ? [{
52-
resource_type = "cpu"
53-
minimum = local.limits["min_cpu_cores"]
54-
maximum = local.limits["max_cpu_cores"]
55-
}] : [],
56-
var.cluster_autoscaling.enabled && lookup(local.limits, "max_memory_gb", 0) > lookup(local.limits, "min_memory_gb", 0) ? [{
57-
resource_type = "memory"
58-
minimum = local.limits["min_memory_gb"]
59-
maximum = local.limits["max_memory_gb"]
60-
}] : []
61-
)
48+
49+
autoscalling_resource_limits = var.cluster_autoscaling.enabled ? [{
50+
resource_type = "cpu"
51+
minimum = var.cluster_autoscaling.min_cpu_cores
52+
maximum = var.cluster_autoscaling.max_cpu_cores
53+
}, {
54+
resource_type = "memory"
55+
minimum = var.cluster_autoscaling.min_memory_gb
56+
maximum = var.cluster_autoscaling.max_memory_gb
57+
}] : []
58+
6259

6360

6461
custom_kube_dns_config = length(keys(var.stub_domains)) > 0

modules/beta-public-cluster/variables.tf

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,18 @@ variable "node_pools_metadata" {
181181

182182
variable "cluster_autoscaling" {
183183
type = object({
184-
enabled = bool
185-
resource_limits = map(number)
184+
enabled = bool
185+
min_cpu_cores = number
186+
max_cpu_cores = number
187+
min_memory_gb = number
188+
max_memory_gb = number
186189
})
187190
default = {
188-
enabled = false
189-
resource_limits = {}
191+
enabled = false
192+
max_cpu_cores = 0
193+
min_cpu_cores = 0
194+
max_memory_gb = 0
195+
min_memory_gb = 0
190196
}
191197
description = "Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling)"
192198
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ resource "google_container_cluster" "primary" {
4242
}
4343

4444

45-
4645
subnetwork = data.google_compute_subnetwork.gke_subnetwork.self_link
4746
min_master_version = local.master_version
4847

modules/private-cluster/cluster.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ resource "google_container_cluster" "primary" {
4242
}
4343

4444

45-
4645
subnetwork = data.google_compute_subnetwork.gke_subnetwork.self_link
4746
min_master_version = local.master_version
4847

test/fixtures/node_pool/example.tf

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,11 @@ module "example" {
2828
compute_engine_service_account = var.compute_engine_service_account
2929

3030
cluster_autoscaling = {
31-
enabled = true
32-
resource_limits = {
33-
max_cpu_cores = 20
34-
min_cpu_cores = 5
35-
max_memory_gb = 30
36-
min_memory_gb = 10
37-
}
31+
enabled = true
32+
max_cpu_cores = 20
33+
min_cpu_cores = 5
34+
max_memory_gb = 30
35+
min_memory_gb = 10
3836
}
3937
}
4038

0 commit comments

Comments
 (0)