Skip to content

Commit 2af34c4

Browse files
committed
feat: support enabling default compute class in cluster autoscaler
1 parent 0ffe3f9 commit 2af34c4

File tree

32 files changed

+481
-443
lines changed

32 files changed

+481
-443
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ Then perform the following commands on the root folder:
147147
| additive\_vpc\_scope\_dns\_domain | This will enable Cloud DNS additive VPC scope. Must provide a domain name that is unique within the VPC. For this to work cluster\_dns = `CLOUD_DNS` and cluster\_dns\_scope = `CLUSTER_SCOPE` must both be set as well. | `string` | `""` | no |
148148
| authenticator\_security\_group | The name of the RBAC security group for use with Google security groups in Kubernetes RBAC. Group name must be in format [email protected] | `string` | `null` | no |
149149
| boot\_disk\_kms\_key | The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool, if not overridden in `node_pools`. This should be of the form projects/[KEY\_PROJECT\_ID]/locations/[LOCATION]/keyRings/[RING\_NAME]/cryptoKeys/[KEY\_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption | `string` | `null` | no |
150-
| cluster\_autoscaling | Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling) | <pre>object({<br> enabled = bool<br> autoscaling_profile = string<br> min_cpu_cores = optional(number)<br> max_cpu_cores = optional(number)<br> min_memory_gb = optional(number)<br> max_memory_gb = optional(number)<br> gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))<br> auto_repair = bool<br> auto_upgrade = bool<br> disk_size = optional(number)<br> disk_type = optional(string)<br> image_type = optional(string)<br> strategy = optional(string)<br> max_surge = optional(number)<br> max_unavailable = optional(number)<br> node_pool_soak_duration = optional(string)<br> batch_soak_duration = optional(string)<br> batch_percentage = optional(number)<br> batch_node_count = optional(number)<br> enable_secure_boot = optional(bool, false)<br> enable_integrity_monitoring = optional(bool, true)<br> })</pre> | <pre>{<br> "auto_repair": true,<br> "auto_upgrade": true,<br> "autoscaling_profile": "BALANCED",<br> "disk_size": 100,<br> "disk_type": "pd-standard",<br> "enable_integrity_monitoring": true,<br> "enable_secure_boot": false,<br> "enabled": false,<br> "gpu_resources": [],<br> "image_type": "COS_CONTAINERD",<br> "max_cpu_cores": 0,<br> "max_memory_gb": 0,<br> "min_cpu_cores": 0,<br> "min_memory_gb": 0<br>}</pre> | no |
150+
| cluster\_autoscaling | Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling) | <pre>object({<br> enabled = bool<br> autoscaling_profile = string<br> min_cpu_cores = optional(number)<br> max_cpu_cores = optional(number)<br> min_memory_gb = optional(number)<br> max_memory_gb = optional(number)<br> gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))<br> auto_repair = bool<br> auto_upgrade = bool<br> disk_size = optional(number)<br> disk_type = optional(string)<br> image_type = optional(string)<br> strategy = optional(string)<br> max_surge = optional(number)<br> max_unavailable = optional(number)<br> node_pool_soak_duration = optional(string)<br> batch_soak_duration = optional(string)<br> batch_percentage = optional(number)<br> batch_node_count = optional(number)<br> enable_secure_boot = optional(bool, false)<br> enable_integrity_monitoring = optional(bool, true)<br> enable_default_compute_class = optional(bool, false)<br> })</pre> | <pre>{<br> "auto_repair": true,<br> "auto_upgrade": true,<br> "autoscaling_profile": "BALANCED",<br> "disk_size": 100,<br> "disk_type": "pd-standard",<br> "enable_default_compute_class": false,<br> "enable_integrity_monitoring": true,<br> "enable_secure_boot": false,<br> "enabled": false,<br> "gpu_resources": [],<br> "image_type": "COS_CONTAINERD",<br> "max_cpu_cores": 0,<br> "max_memory_gb": 0,<br> "min_cpu_cores": 0,<br> "min_memory_gb": 0<br>}</pre> | no |
151151
| cluster\_dns\_domain | The suffix used for all cluster service records. | `string` | `""` | no |
152152
| cluster\_dns\_provider | Which in-cluster DNS provider should be used. PROVIDER\_UNSPECIFIED (default) or PLATFORM\_DEFAULT or CLOUD\_DNS. | `string` | `"PROVIDER_UNSPECIFIED"` | no |
153153
| cluster\_dns\_scope | The scope of access to cluster DNS records. DNS\_SCOPE\_UNSPECIFIED (default) or CLUSTER\_SCOPE or VPC\_SCOPE. | `string` | `"DNS_SCOPE_UNSPECIFIED"` | no |

autogen/main/cluster.tf.tmpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ resource "google_container_cluster" "primary" {
205205
}
206206
}
207207
autoscaling_profile = var.cluster_autoscaling.autoscaling_profile != null ? var.cluster_autoscaling.autoscaling_profile : "BALANCED"
208+
default_compute_class_enabled = lookup(var.cluster_autoscaling, "enable_default_compute_class", false)
208209
dynamic "resource_limits" {
209210
for_each = local.autoscaling_resource_limits
210211
content {

autogen/main/variables.tf.tmpl

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -318,43 +318,45 @@ variable "enable_resource_consumption_export" {
318318
{% if autopilot_cluster != true %}
319319
variable "cluster_autoscaling" {
320320
type = object({
321-
enabled = bool
322-
autoscaling_profile = string
323-
min_cpu_cores = optional(number)
324-
max_cpu_cores = optional(number)
325-
min_memory_gb = optional(number)
326-
max_memory_gb = optional(number)
327-
gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))
328-
auto_repair = bool
329-
auto_upgrade = bool
330-
disk_size = optional(number)
331-
disk_type = optional(string)
332-
image_type = optional(string)
333-
strategy = optional(string)
334-
max_surge = optional(number)
335-
max_unavailable = optional(number)
336-
node_pool_soak_duration = optional(string)
337-
batch_soak_duration = optional(string)
338-
batch_percentage = optional(number)
339-
batch_node_count = optional(number)
340-
enable_secure_boot = optional(bool, false)
341-
enable_integrity_monitoring = optional(bool, true)
321+
enabled = bool
322+
autoscaling_profile = string
323+
min_cpu_cores = optional(number)
324+
max_cpu_cores = optional(number)
325+
min_memory_gb = optional(number)
326+
max_memory_gb = optional(number)
327+
gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))
328+
auto_repair = bool
329+
auto_upgrade = bool
330+
disk_size = optional(number)
331+
disk_type = optional(string)
332+
image_type = optional(string)
333+
strategy = optional(string)
334+
max_surge = optional(number)
335+
max_unavailable = optional(number)
336+
node_pool_soak_duration = optional(string)
337+
batch_soak_duration = optional(string)
338+
batch_percentage = optional(number)
339+
batch_node_count = optional(number)
340+
enable_secure_boot = optional(bool, false)
341+
enable_integrity_monitoring = optional(bool, true)
342+
enable_default_compute_class = optional(bool,false)
342343
})
343344
default = {
344-
enabled = false
345-
autoscaling_profile = "BALANCED"
346-
max_cpu_cores = 0
347-
min_cpu_cores = 0
348-
max_memory_gb = 0
349-
min_memory_gb = 0
350-
gpu_resources = []
351-
auto_repair = true
352-
auto_upgrade = true
353-
disk_size = 100
354-
disk_type = "pd-standard"
355-
image_type = "COS_CONTAINERD"
356-
enable_secure_boot = false
357-
enable_integrity_monitoring = true
345+
enabled = false
346+
autoscaling_profile = "BALANCED"
347+
max_cpu_cores = 0
348+
min_cpu_cores = 0
349+
max_memory_gb = 0
350+
min_memory_gb = 0
351+
gpu_resources = []
352+
auto_repair = true
353+
auto_upgrade = true
354+
disk_size = 100
355+
disk_type = "pd-standard"
356+
image_type = "COS_CONTAINERD"
357+
enable_secure_boot = false
358+
enable_integrity_monitoring = true
359+
enable_default_compute_class = false
358360
}
359361
description = "Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling)"
360362
}

cluster.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,8 @@ resource "google_container_cluster" "primary" {
168168
image_type = lookup(var.cluster_autoscaling, "image_type", "COS_CONTAINERD")
169169
}
170170
}
171-
autoscaling_profile = var.cluster_autoscaling.autoscaling_profile != null ? var.cluster_autoscaling.autoscaling_profile : "BALANCED"
171+
autoscaling_profile = var.cluster_autoscaling.autoscaling_profile != null ? var.cluster_autoscaling.autoscaling_profile : "BALANCED"
172+
default_compute_class_enabled = lookup(var.cluster_autoscaling, "enable_default_compute_class", false)
172173
dynamic "resource_limits" {
173174
for_each = local.autoscaling_resource_limits
174175
content {

examples/node_pool/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ module "gke" {
163163
}
164164

165165
node_pools_cgroup_mode = {
166-
all = "CGROUP_MODE_V2"
166+
all = "CGROUP_MODE_V2"
167167
pool-01 = "CGROUP_MODE_V1"
168168
}
169169

metadata.yaml

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -343,34 +343,36 @@ spec:
343343
description: Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling)
344344
varType: |-
345345
object({
346-
enabled = bool
347-
autoscaling_profile = string
348-
min_cpu_cores = optional(number)
349-
max_cpu_cores = optional(number)
350-
min_memory_gb = optional(number)
351-
max_memory_gb = optional(number)
352-
gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))
353-
auto_repair = bool
354-
auto_upgrade = bool
355-
disk_size = optional(number)
356-
disk_type = optional(string)
357-
image_type = optional(string)
358-
strategy = optional(string)
359-
max_surge = optional(number)
360-
max_unavailable = optional(number)
361-
node_pool_soak_duration = optional(string)
362-
batch_soak_duration = optional(string)
363-
batch_percentage = optional(number)
364-
batch_node_count = optional(number)
365-
enable_secure_boot = optional(bool, false)
366-
enable_integrity_monitoring = optional(bool, true)
346+
enabled = bool
347+
autoscaling_profile = string
348+
min_cpu_cores = optional(number)
349+
max_cpu_cores = optional(number)
350+
min_memory_gb = optional(number)
351+
max_memory_gb = optional(number)
352+
gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))
353+
auto_repair = bool
354+
auto_upgrade = bool
355+
disk_size = optional(number)
356+
disk_type = optional(string)
357+
image_type = optional(string)
358+
strategy = optional(string)
359+
max_surge = optional(number)
360+
max_unavailable = optional(number)
361+
node_pool_soak_duration = optional(string)
362+
batch_soak_duration = optional(string)
363+
batch_percentage = optional(number)
364+
batch_node_count = optional(number)
365+
enable_secure_boot = optional(bool, false)
366+
enable_integrity_monitoring = optional(bool, true)
367+
enable_default_compute_class = optional(bool, false)
367368
})
368369
defaultValue:
369370
auto_repair: true
370371
auto_upgrade: true
371372
autoscaling_profile: BALANCED
372373
disk_size: 100
373374
disk_type: pd-standard
375+
enable_default_compute_class: false
374376
enable_integrity_monitoring: true
375377
enable_secure_boot: false
376378
enabled: false

modules/beta-private-cluster-update-variant/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ Then perform the following commands on the root folder:
180180
| boot\_disk\_kms\_key | The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool, if not overridden in `node_pools`. This should be of the form projects/[KEY\_PROJECT\_ID]/locations/[LOCATION]/keyRings/[RING\_NAME]/cryptoKeys/[KEY\_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption | `string` | `null` | no |
181181
| cloudrun | (Beta) Enable CloudRun addon | `bool` | `false` | no |
182182
| cloudrun\_load\_balancer\_type | (Beta) Configure the Cloud Run load balancer type. External by default. Set to `LOAD_BALANCER_TYPE_INTERNAL` to configure as an internal load balancer. | `string` | `""` | no |
183-
| cluster\_autoscaling | Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling) | <pre>object({<br> enabled = bool<br> autoscaling_profile = string<br> min_cpu_cores = optional(number)<br> max_cpu_cores = optional(number)<br> min_memory_gb = optional(number)<br> max_memory_gb = optional(number)<br> gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))<br> auto_repair = bool<br> auto_upgrade = bool<br> disk_size = optional(number)<br> disk_type = optional(string)<br> image_type = optional(string)<br> strategy = optional(string)<br> max_surge = optional(number)<br> max_unavailable = optional(number)<br> node_pool_soak_duration = optional(string)<br> batch_soak_duration = optional(string)<br> batch_percentage = optional(number)<br> batch_node_count = optional(number)<br> enable_secure_boot = optional(bool, false)<br> enable_integrity_monitoring = optional(bool, true)<br> })</pre> | <pre>{<br> "auto_repair": true,<br> "auto_upgrade": true,<br> "autoscaling_profile": "BALANCED",<br> "disk_size": 100,<br> "disk_type": "pd-standard",<br> "enable_integrity_monitoring": true,<br> "enable_secure_boot": false,<br> "enabled": false,<br> "gpu_resources": [],<br> "image_type": "COS_CONTAINERD",<br> "max_cpu_cores": 0,<br> "max_memory_gb": 0,<br> "min_cpu_cores": 0,<br> "min_memory_gb": 0<br>}</pre> | no |
183+
| cluster\_autoscaling | Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling) | <pre>object({<br> enabled = bool<br> autoscaling_profile = string<br> min_cpu_cores = optional(number)<br> max_cpu_cores = optional(number)<br> min_memory_gb = optional(number)<br> max_memory_gb = optional(number)<br> gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))<br> auto_repair = bool<br> auto_upgrade = bool<br> disk_size = optional(number)<br> disk_type = optional(string)<br> image_type = optional(string)<br> strategy = optional(string)<br> max_surge = optional(number)<br> max_unavailable = optional(number)<br> node_pool_soak_duration = optional(string)<br> batch_soak_duration = optional(string)<br> batch_percentage = optional(number)<br> batch_node_count = optional(number)<br> enable_secure_boot = optional(bool, false)<br> enable_integrity_monitoring = optional(bool, true)<br> enable_default_compute_class = optional(bool, false)<br> })</pre> | <pre>{<br> "auto_repair": true,<br> "auto_upgrade": true,<br> "autoscaling_profile": "BALANCED",<br> "disk_size": 100,<br> "disk_type": "pd-standard",<br> "enable_default_compute_class": false,<br> "enable_integrity_monitoring": true,<br> "enable_secure_boot": false,<br> "enabled": false,<br> "gpu_resources": [],<br> "image_type": "COS_CONTAINERD",<br> "max_cpu_cores": 0,<br> "max_memory_gb": 0,<br> "min_cpu_cores": 0,<br> "min_memory_gb": 0<br>}</pre> | no |
184184
| cluster\_dns\_domain | The suffix used for all cluster service records. | `string` | `""` | no |
185185
| cluster\_dns\_provider | Which in-cluster DNS provider should be used. PROVIDER\_UNSPECIFIED (default) or PLATFORM\_DEFAULT or CLOUD\_DNS. | `string` | `"PROVIDER_UNSPECIFIED"` | no |
186186
| cluster\_dns\_scope | The scope of access to cluster DNS records. DNS\_SCOPE\_UNSPECIFIED (default) or CLUSTER\_SCOPE or VPC\_SCOPE. | `string` | `"DNS_SCOPE_UNSPECIFIED"` | no |

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ resource "google_container_cluster" "primary" {
175175
image_type = lookup(var.cluster_autoscaling, "image_type", "COS_CONTAINERD")
176176
}
177177
}
178-
autoscaling_profile = var.cluster_autoscaling.autoscaling_profile != null ? var.cluster_autoscaling.autoscaling_profile : "BALANCED"
178+
autoscaling_profile = var.cluster_autoscaling.autoscaling_profile != null ? var.cluster_autoscaling.autoscaling_profile : "BALANCED"
179+
default_compute_class_enabled = lookup(var.cluster_autoscaling, "enable_default_compute_class", false)
179180
dynamic "resource_limits" {
180181
for_each = local.autoscaling_resource_limits
181182
content {

0 commit comments

Comments
 (0)