Skip to content

Commit 3a4cf85

Browse files
committed
feat: support enabling default compute class in cluster autoscaler
1 parent 72eccd1 commit 3a4cf85

File tree

30 files changed

+479
-441
lines changed

30 files changed

+479
-441
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ Then perform the following commands on the root folder:
149149
| anonymous\_authentication\_config\_mode | Allows users to restrict or enable anonymous access to the cluster. Valid values are `ENABLED` and `LIMITED`. | `string` | `null` | no |
150150
| 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 gke-security-groups@yourdomain.com | `string` | `null` | no |
151151
| 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 |
152-
| 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 |
152+
| 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 |
153153
| cluster\_dns\_domain | The suffix used for all cluster service records. | `string` | `""` | no |
154154
| cluster\_dns\_provider | Which in-cluster DNS provider should be used. PROVIDER\_UNSPECIFIED (default) or PLATFORM\_DEFAULT or CLOUD\_DNS. | `string` | `"PROVIDER_UNSPECIFIED"` | no |
155155
| 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
@@ -206,6 +206,7 @@ resource "google_container_cluster" "primary" {
206206
}
207207
}
208208
autoscaling_profile = var.cluster_autoscaling.autoscaling_profile != null ? var.cluster_autoscaling.autoscaling_profile : "BALANCED"
209+
default_compute_class_enabled = lookup(var.cluster_autoscaling, "enable_default_compute_class", false)
209210
dynamic "resource_limits" {
210211
for_each = local.autoscaling_resource_limits
211212
content {

autogen/main/variables.tf.tmpl

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

cluster.tf

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

metadata.yaml

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -347,34 +347,36 @@ spec:
347347
description: Cluster autoscaling configuration. See [more details](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#clusterautoscaling)
348348
varType: |-
349349
object({
350-
enabled = bool
351-
autoscaling_profile = string
352-
min_cpu_cores = optional(number)
353-
max_cpu_cores = optional(number)
354-
min_memory_gb = optional(number)
355-
max_memory_gb = optional(number)
356-
gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))
357-
auto_repair = bool
358-
auto_upgrade = bool
359-
disk_size = optional(number)
360-
disk_type = optional(string)
361-
image_type = optional(string)
362-
strategy = optional(string)
363-
max_surge = optional(number)
364-
max_unavailable = optional(number)
365-
node_pool_soak_duration = optional(string)
366-
batch_soak_duration = optional(string)
367-
batch_percentage = optional(number)
368-
batch_node_count = optional(number)
369-
enable_secure_boot = optional(bool, false)
370-
enable_integrity_monitoring = optional(bool, true)
350+
enabled = bool
351+
autoscaling_profile = string
352+
min_cpu_cores = optional(number)
353+
max_cpu_cores = optional(number)
354+
min_memory_gb = optional(number)
355+
max_memory_gb = optional(number)
356+
gpu_resources = list(object({ resource_type = string, minimum = number, maximum = number }))
357+
auto_repair = bool
358+
auto_upgrade = bool
359+
disk_size = optional(number)
360+
disk_type = optional(string)
361+
image_type = optional(string)
362+
strategy = optional(string)
363+
max_surge = optional(number)
364+
max_unavailable = optional(number)
365+
node_pool_soak_duration = optional(string)
366+
batch_soak_duration = optional(string)
367+
batch_percentage = optional(number)
368+
batch_node_count = optional(number)
369+
enable_secure_boot = optional(bool, false)
370+
enable_integrity_monitoring = optional(bool, true)
371+
enable_default_compute_class = optional(bool, false)
371372
})
372373
defaultValue:
373374
auto_repair: true
374375
auto_upgrade: true
375376
autoscaling_profile: BALANCED
376377
disk_size: 100
377378
disk_type: pd-standard
379+
enable_default_compute_class: false
378380
enable_integrity_monitoring: true
379381
enable_secure_boot: false
380382
enabled: false

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ Then perform the following commands on the root folder:
182182
| 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 |
183183
| cloudrun | (Beta) Enable CloudRun addon | `bool` | `false` | no |
184184
| 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 |
185-
| 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 |
185+
| 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 |
186186
| cluster\_dns\_domain | The suffix used for all cluster service records. | `string` | `""` | no |
187187
| cluster\_dns\_provider | Which in-cluster DNS provider should be used. PROVIDER\_UNSPECIFIED (default) or PLATFORM\_DEFAULT or CLOUD\_DNS. | `string` | `"PROVIDER_UNSPECIFIED"` | no |
188188
| 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
@@ -176,7 +176,8 @@ resource "google_container_cluster" "primary" {
176176
image_type = lookup(var.cluster_autoscaling, "image_type", "COS_CONTAINERD")
177177
}
178178
}
179-
autoscaling_profile = var.cluster_autoscaling.autoscaling_profile != null ? var.cluster_autoscaling.autoscaling_profile : "BALANCED"
179+
autoscaling_profile = var.cluster_autoscaling.autoscaling_profile != null ? var.cluster_autoscaling.autoscaling_profile : "BALANCED"
180+
default_compute_class_enabled = lookup(var.cluster_autoscaling, "enable_default_compute_class", false)
180181
dynamic "resource_limits" {
181182
for_each = local.autoscaling_resource_limits
182183
content {

0 commit comments

Comments
 (0)