diff --git a/README.md b/README.md index fdadb47def..6b38bfbd11 100644 --- a/README.md +++ b/README.md @@ -159,6 +159,7 @@ Then perform the following commands on the root folder: | create\_service\_account | Defines if service account specified to run nodes should be created. | `bool` | `true` | no | | database\_encryption | Application-layer Secrets Encryption settings. The object format is {state = string, key\_name = string}. Valid values of state are: "ENCRYPTED"; "DECRYPTED". key\_name is the name of a CloudKMS key. | `list(object({ state = string, key_name = string }))` |
[
{
"key_name": "",
"state": "DECRYPTED"
}
]
| no | | datapath\_provider | The desired datapath provider for this cluster. By default, `DATAPATH_PROVIDER_UNSPECIFIED` enables the IPTables-based kube-proxy implementation. `ADVANCED_DATAPATH` enables Dataplane-V2 feature. | `string` | `"DATAPATH_PROVIDER_UNSPECIFIED"` | no | +| default\_compute\_class\_enabled | Enable Spot VMs as the default compute class for Node Auto-Provisioning | `bool` | `null` | no | | default\_max\_pods\_per\_node | The maximum number of pods to schedule per node | `number` | `110` | no | | deletion\_protection | Whether or not to allow Terraform to destroy the cluster. | `bool` | `true` | no | | description | The description of the cluster | `string` | `""` | no | diff --git a/autogen/main/cluster.tf.tmpl b/autogen/main/cluster.tf.tmpl index d27c0a7a2a..833585a64d 100644 --- a/autogen/main/cluster.tf.tmpl +++ b/autogen/main/cluster.tf.tmpl @@ -156,6 +156,7 @@ resource "google_container_cluster" "primary" { cluster_autoscaling { enabled = var.cluster_autoscaling.enabled + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = var.cluster_autoscaling.enabled ? [1] : [] @@ -217,6 +218,7 @@ resource "google_container_cluster" "primary" { {% endif %} {% if autopilot_cluster == true %} cluster_autoscaling { + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = (var.create_service_account || var.service_account != "" || var.boot_disk_kms_key != null) ? [1] : [] diff --git a/autogen/main/variables.tf.tmpl b/autogen/main/variables.tf.tmpl index eeb5c8b6e1..e64dd0c484 100644 --- a/autogen/main/variables.tf.tmpl +++ b/autogen/main/variables.tf.tmpl @@ -858,6 +858,13 @@ variable "enable_shielded_nodes" { } {% endif %} + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/autogen/main/versions.tf.tmpl b/autogen/main/versions.tf.tmpl index d3e2044312..277c25301c 100644 --- a/autogen/main/versions.tf.tmpl +++ b/autogen/main/versions.tf.tmpl @@ -24,33 +24,33 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } {% elif beta_cluster and autopilot_cluster %} required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } {% elif autopilot_cluster %} required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } {% else %} required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } {% endif %} kubernetes = { diff --git a/cluster.tf b/cluster.tf index f549971bdd..0752da5270 100644 --- a/cluster.tf +++ b/cluster.tf @@ -122,7 +122,8 @@ resource "google_container_cluster" "primary" { monitoring_service = local.logmon_config_is_set ? null : var.monitoring_service cluster_autoscaling { - enabled = var.cluster_autoscaling.enabled + enabled = var.cluster_autoscaling.enabled + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = var.cluster_autoscaling.enabled ? [1] : [] diff --git a/examples/simple_fleet_app_operator_permissions/versions.tf b/examples/simple_fleet_app_operator_permissions/versions.tf index 3d80f15374..5db43f369e 100644 --- a/examples/simple_fleet_app_operator_permissions/versions.tf +++ b/examples/simple_fleet_app_operator_permissions/versions.tf @@ -20,11 +20,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.39.0" + version = ">= 7.0.0" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.39.0" + version = ">= 7.0.0" } } } diff --git a/metadata.display.yaml b/metadata.display.yaml index 350ef83430..d80464bcc2 100644 --- a/metadata.display.yaml +++ b/metadata.display.yaml @@ -87,6 +87,9 @@ spec: datapath_provider: name: datapath_provider title: Datapath Provider + default_compute_class_enabled: + name: default_compute_class_enabled + title: Default Compute Class Enabled default_max_pods_per_node: name: default_max_pods_per_node title: Default Max Pods Per Node diff --git a/metadata.yaml b/metadata.yaml index 62c64a002e..af3b745650 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -650,6 +650,9 @@ spec: description: Enable Shielded Nodes features on all nodes in this cluster varType: bool defaultValue: true + - name: default_compute_class_enabled + description: Enable Spot VMs as the default compute class for Node Auto-Provisioning + varType: bool - name: enable_binary_authorization description: Enable BinAuthZ Admission controller varType: bool @@ -855,7 +858,7 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/kubernetes version: ~> 2.10 - source: hashicorp/random diff --git a/modules/beta-autopilot-private-cluster/README.md b/modules/beta-autopilot-private-cluster/README.md index ad3e8badae..5d6adeb0e1 100644 --- a/modules/beta-autopilot-private-cluster/README.md +++ b/modules/beta-autopilot-private-cluster/README.md @@ -85,6 +85,7 @@ Then perform the following commands on the root folder: | cluster\_resource\_labels | The GCE resource labels (a map of key/value pairs) to be applied to the cluster | `map(string)` | `{}` | no | | create\_service\_account | Defines if service account specified to run nodes should be created. | `bool` | `true` | no | | database\_encryption | Application-layer Secrets Encryption settings. The object format is {state = string, key\_name = string}. Valid values of state are: "ENCRYPTED"; "DECRYPTED". key\_name is the name of a CloudKMS key. | `list(object({ state = string, key_name = string }))` |
[
{
"key_name": "",
"state": "DECRYPTED"
}
]
| no | +| default\_compute\_class\_enabled | Enable Spot VMs as the default compute class for Node Auto-Provisioning | `bool` | `null` | no | | deletion\_protection | Whether or not to allow Terraform to destroy the cluster. | `bool` | `true` | no | | deploy\_using\_private\_endpoint | A toggle for Terraform and kubectl to connect to the master's internal IP address during deployment. | `bool` | `false` | no | | description | The description of the cluster | `string` | `""` | no | diff --git a/modules/beta-autopilot-private-cluster/cluster.tf b/modules/beta-autopilot-private-cluster/cluster.tf index d8610fc519..d6dc8e5f82 100644 --- a/modules/beta-autopilot-private-cluster/cluster.tf +++ b/modules/beta-autopilot-private-cluster/cluster.tf @@ -103,6 +103,7 @@ resource "google_container_cluster" "primary" { } cluster_autoscaling { + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = (var.create_service_account || var.service_account != "" || var.boot_disk_kms_key != null) ? [1] : [] diff --git a/modules/beta-autopilot-private-cluster/metadata.display.yaml b/modules/beta-autopilot-private-cluster/metadata.display.yaml index 1dfa239d94..afd22357d6 100644 --- a/modules/beta-autopilot-private-cluster/metadata.display.yaml +++ b/modules/beta-autopilot-private-cluster/metadata.display.yaml @@ -70,6 +70,9 @@ spec: database_encryption: name: database_encryption title: Database Encryption + default_compute_class_enabled: + name: default_compute_class_enabled + title: Default Compute Class Enabled deletion_protection: name: deletion_protection title: Deletion Protection diff --git a/modules/beta-autopilot-private-cluster/metadata.yaml b/modules/beta-autopilot-private-cluster/metadata.yaml index 39188bca1c..78f3f626eb 100644 --- a/modules/beta-autopilot-private-cluster/metadata.yaml +++ b/modules/beta-autopilot-private-cluster/metadata.yaml @@ -447,6 +447,9 @@ spec: defaultValue: - key_name: "" state: DECRYPTED + - name: default_compute_class_enabled + description: Enable Spot VMs as the default compute class for Node Auto-Provisioning + varType: bool - name: enable_binary_authorization description: Enable BinAuthZ Admission controller varType: bool @@ -598,9 +601,9 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/google-beta - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/kubernetes version: ~> 2.10 - source: hashicorp/random diff --git a/modules/beta-autopilot-private-cluster/variables.tf b/modules/beta-autopilot-private-cluster/variables.tf index afc035f7a3..016053e8b8 100644 --- a/modules/beta-autopilot-private-cluster/variables.tf +++ b/modules/beta-autopilot-private-cluster/variables.tf @@ -530,6 +530,13 @@ variable "database_encryption" { }] } + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/modules/beta-autopilot-private-cluster/versions.tf b/modules/beta-autopilot-private-cluster/versions.tf index ceb1def3e5..3a4a243f0c 100644 --- a/modules/beta-autopilot-private-cluster/versions.tf +++ b/modules/beta-autopilot-private-cluster/versions.tf @@ -21,11 +21,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/beta-autopilot-public-cluster/README.md b/modules/beta-autopilot-public-cluster/README.md index f7fd25064e..162c2b151c 100644 --- a/modules/beta-autopilot-public-cluster/README.md +++ b/modules/beta-autopilot-public-cluster/README.md @@ -79,6 +79,7 @@ Then perform the following commands on the root folder: | cluster\_resource\_labels | The GCE resource labels (a map of key/value pairs) to be applied to the cluster | `map(string)` | `{}` | no | | create\_service\_account | Defines if service account specified to run nodes should be created. | `bool` | `true` | no | | database\_encryption | Application-layer Secrets Encryption settings. The object format is {state = string, key\_name = string}. Valid values of state are: "ENCRYPTED"; "DECRYPTED". key\_name is the name of a CloudKMS key. | `list(object({ state = string, key_name = string }))` |
[
{
"key_name": "",
"state": "DECRYPTED"
}
]
| no | +| default\_compute\_class\_enabled | Enable Spot VMs as the default compute class for Node Auto-Provisioning | `bool` | `null` | no | | deletion\_protection | Whether or not to allow Terraform to destroy the cluster. | `bool` | `true` | no | | description | The description of the cluster | `string` | `""` | no | | disable\_default\_snat | Whether to disable the default SNAT to support the private use of public IP addresses | `bool` | `false` | no | diff --git a/modules/beta-autopilot-public-cluster/cluster.tf b/modules/beta-autopilot-public-cluster/cluster.tf index 3fca7ac4d0..b59b1ece89 100644 --- a/modules/beta-autopilot-public-cluster/cluster.tf +++ b/modules/beta-autopilot-public-cluster/cluster.tf @@ -103,6 +103,7 @@ resource "google_container_cluster" "primary" { } cluster_autoscaling { + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = (var.create_service_account || var.service_account != "" || var.boot_disk_kms_key != null) ? [1] : [] diff --git a/modules/beta-autopilot-public-cluster/metadata.display.yaml b/modules/beta-autopilot-public-cluster/metadata.display.yaml index 1cd82e2660..6ab10b94d9 100644 --- a/modules/beta-autopilot-public-cluster/metadata.display.yaml +++ b/modules/beta-autopilot-public-cluster/metadata.display.yaml @@ -70,6 +70,9 @@ spec: database_encryption: name: database_encryption title: Database Encryption + default_compute_class_enabled: + name: default_compute_class_enabled + title: Default Compute Class Enabled deletion_protection: name: deletion_protection title: Deletion Protection diff --git a/modules/beta-autopilot-public-cluster/metadata.yaml b/modules/beta-autopilot-public-cluster/metadata.yaml index 8d341bd936..d02b1dcf48 100644 --- a/modules/beta-autopilot-public-cluster/metadata.yaml +++ b/modules/beta-autopilot-public-cluster/metadata.yaml @@ -425,6 +425,9 @@ spec: defaultValue: - key_name: "" state: DECRYPTED + - name: default_compute_class_enabled + description: Enable Spot VMs as the default compute class for Node Auto-Provisioning + varType: bool - name: enable_binary_authorization description: Enable BinAuthZ Admission controller varType: bool @@ -572,9 +575,9 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/google-beta - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/kubernetes version: ~> 2.10 - source: hashicorp/random diff --git a/modules/beta-autopilot-public-cluster/variables.tf b/modules/beta-autopilot-public-cluster/variables.tf index b1bf6469df..d7ed477139 100644 --- a/modules/beta-autopilot-public-cluster/variables.tf +++ b/modules/beta-autopilot-public-cluster/variables.tf @@ -494,6 +494,13 @@ variable "database_encryption" { }] } + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/modules/beta-autopilot-public-cluster/versions.tf b/modules/beta-autopilot-public-cluster/versions.tf index 5633a45321..43037eb71d 100644 --- a/modules/beta-autopilot-public-cluster/versions.tf +++ b/modules/beta-autopilot-public-cluster/versions.tf @@ -21,11 +21,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/beta-private-cluster-update-variant/README.md b/modules/beta-private-cluster-update-variant/README.md index 76d30e639e..8be1d606f2 100644 --- a/modules/beta-private-cluster-update-variant/README.md +++ b/modules/beta-private-cluster-update-variant/README.md @@ -193,6 +193,7 @@ Then perform the following commands on the root folder: | create\_service\_account | Defines if service account specified to run nodes should be created. | `bool` | `true` | no | | database\_encryption | Application-layer Secrets Encryption settings. The object format is {state = string, key\_name = string}. Valid values of state are: "ENCRYPTED"; "DECRYPTED". key\_name is the name of a CloudKMS key. | `list(object({ state = string, key_name = string }))` |
[
{
"key_name": "",
"state": "DECRYPTED"
}
]
| no | | datapath\_provider | The desired datapath provider for this cluster. By default, `DATAPATH_PROVIDER_UNSPECIFIED` enables the IPTables-based kube-proxy implementation. `ADVANCED_DATAPATH` enables Dataplane-V2 feature. | `string` | `"DATAPATH_PROVIDER_UNSPECIFIED"` | no | +| default\_compute\_class\_enabled | Enable Spot VMs as the default compute class for Node Auto-Provisioning | `bool` | `null` | no | | default\_max\_pods\_per\_node | The maximum number of pods to schedule per node | `number` | `110` | no | | deletion\_protection | Whether or not to allow Terraform to destroy the cluster. | `bool` | `true` | no | | deploy\_using\_private\_endpoint | A toggle for Terraform and kubectl to connect to the master's internal IP address during deployment. | `bool` | `false` | no | diff --git a/modules/beta-private-cluster-update-variant/cluster.tf b/modules/beta-private-cluster-update-variant/cluster.tf index 3649b01359..4dce0246d1 100644 --- a/modules/beta-private-cluster-update-variant/cluster.tf +++ b/modules/beta-private-cluster-update-variant/cluster.tf @@ -128,7 +128,8 @@ resource "google_container_cluster" "primary" { monitoring_service = local.cluster_telemetry_type_is_set || local.logmon_config_is_set ? null : var.monitoring_service cluster_autoscaling { - enabled = var.cluster_autoscaling.enabled + enabled = var.cluster_autoscaling.enabled + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = var.cluster_autoscaling.enabled ? [1] : [] diff --git a/modules/beta-private-cluster-update-variant/metadata.display.yaml b/modules/beta-private-cluster-update-variant/metadata.display.yaml index 6836f934d8..b19440496a 100644 --- a/modules/beta-private-cluster-update-variant/metadata.display.yaml +++ b/modules/beta-private-cluster-update-variant/metadata.display.yaml @@ -97,6 +97,9 @@ spec: datapath_provider: name: datapath_provider title: Datapath Provider + default_compute_class_enabled: + name: default_compute_class_enabled + title: Default Compute Class Enabled default_max_pods_per_node: name: default_max_pods_per_node title: Default Max Pods Per Node diff --git a/modules/beta-private-cluster-update-variant/metadata.yaml b/modules/beta-private-cluster-update-variant/metadata.yaml index 25204b4288..f1e830f3b1 100644 --- a/modules/beta-private-cluster-update-variant/metadata.yaml +++ b/modules/beta-private-cluster-update-variant/metadata.yaml @@ -643,6 +643,9 @@ spec: description: Enable Shielded Nodes features on all nodes in this cluster varType: bool defaultValue: true + - name: default_compute_class_enabled + description: Enable Spot VMs as the default compute class for Node Auto-Provisioning + varType: bool - name: enable_binary_authorization description: Enable BinAuthZ Admission controller varType: bool @@ -890,9 +893,9 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/google-beta - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/kubernetes version: ~> 2.10 - source: hashicorp/random diff --git a/modules/beta-private-cluster-update-variant/variables.tf b/modules/beta-private-cluster-update-variant/variables.tf index dd14be9ae1..2dbe524c30 100644 --- a/modules/beta-private-cluster-update-variant/variables.tf +++ b/modules/beta-private-cluster-update-variant/variables.tf @@ -809,6 +809,13 @@ variable "enable_shielded_nodes" { default = true } + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/modules/beta-private-cluster-update-variant/versions.tf b/modules/beta-private-cluster-update-variant/versions.tf index 2d188baadd..eeacff3fc3 100644 --- a/modules/beta-private-cluster-update-variant/versions.tf +++ b/modules/beta-private-cluster-update-variant/versions.tf @@ -21,11 +21,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/beta-private-cluster/README.md b/modules/beta-private-cluster/README.md index 7c575d9c16..5d6c602a3a 100644 --- a/modules/beta-private-cluster/README.md +++ b/modules/beta-private-cluster/README.md @@ -171,6 +171,7 @@ Then perform the following commands on the root folder: | create\_service\_account | Defines if service account specified to run nodes should be created. | `bool` | `true` | no | | database\_encryption | Application-layer Secrets Encryption settings. The object format is {state = string, key\_name = string}. Valid values of state are: "ENCRYPTED"; "DECRYPTED". key\_name is the name of a CloudKMS key. | `list(object({ state = string, key_name = string }))` |
[
{
"key_name": "",
"state": "DECRYPTED"
}
]
| no | | datapath\_provider | The desired datapath provider for this cluster. By default, `DATAPATH_PROVIDER_UNSPECIFIED` enables the IPTables-based kube-proxy implementation. `ADVANCED_DATAPATH` enables Dataplane-V2 feature. | `string` | `"DATAPATH_PROVIDER_UNSPECIFIED"` | no | +| default\_compute\_class\_enabled | Enable Spot VMs as the default compute class for Node Auto-Provisioning | `bool` | `null` | no | | default\_max\_pods\_per\_node | The maximum number of pods to schedule per node | `number` | `110` | no | | deletion\_protection | Whether or not to allow Terraform to destroy the cluster. | `bool` | `true` | no | | deploy\_using\_private\_endpoint | A toggle for Terraform and kubectl to connect to the master's internal IP address during deployment. | `bool` | `false` | no | diff --git a/modules/beta-private-cluster/cluster.tf b/modules/beta-private-cluster/cluster.tf index 630e7fb1e6..d7f801be03 100644 --- a/modules/beta-private-cluster/cluster.tf +++ b/modules/beta-private-cluster/cluster.tf @@ -128,7 +128,8 @@ resource "google_container_cluster" "primary" { monitoring_service = local.cluster_telemetry_type_is_set || local.logmon_config_is_set ? null : var.monitoring_service cluster_autoscaling { - enabled = var.cluster_autoscaling.enabled + enabled = var.cluster_autoscaling.enabled + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = var.cluster_autoscaling.enabled ? [1] : [] diff --git a/modules/beta-private-cluster/metadata.display.yaml b/modules/beta-private-cluster/metadata.display.yaml index 0ce6f8bed2..8c94dd8ab7 100644 --- a/modules/beta-private-cluster/metadata.display.yaml +++ b/modules/beta-private-cluster/metadata.display.yaml @@ -97,6 +97,9 @@ spec: datapath_provider: name: datapath_provider title: Datapath Provider + default_compute_class_enabled: + name: default_compute_class_enabled + title: Default Compute Class Enabled default_max_pods_per_node: name: default_max_pods_per_node title: Default Max Pods Per Node diff --git a/modules/beta-private-cluster/metadata.yaml b/modules/beta-private-cluster/metadata.yaml index aa3bcdd46c..3908410083 100644 --- a/modules/beta-private-cluster/metadata.yaml +++ b/modules/beta-private-cluster/metadata.yaml @@ -643,6 +643,9 @@ spec: description: Enable Shielded Nodes features on all nodes in this cluster varType: bool defaultValue: true + - name: default_compute_class_enabled + description: Enable Spot VMs as the default compute class for Node Auto-Provisioning + varType: bool - name: enable_binary_authorization description: Enable BinAuthZ Admission controller varType: bool @@ -890,9 +893,9 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/google-beta - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/kubernetes version: ~> 2.10 - source: hashicorp/random diff --git a/modules/beta-private-cluster/variables.tf b/modules/beta-private-cluster/variables.tf index dd14be9ae1..2dbe524c30 100644 --- a/modules/beta-private-cluster/variables.tf +++ b/modules/beta-private-cluster/variables.tf @@ -809,6 +809,13 @@ variable "enable_shielded_nodes" { default = true } + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/modules/beta-private-cluster/versions.tf b/modules/beta-private-cluster/versions.tf index c263857df9..63924809f7 100644 --- a/modules/beta-private-cluster/versions.tf +++ b/modules/beta-private-cluster/versions.tf @@ -21,11 +21,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/beta-public-cluster-update-variant/README.md b/modules/beta-public-cluster-update-variant/README.md index 286a4dc80f..bb163eeab6 100644 --- a/modules/beta-public-cluster-update-variant/README.md +++ b/modules/beta-public-cluster-update-variant/README.md @@ -187,6 +187,7 @@ Then perform the following commands on the root folder: | create\_service\_account | Defines if service account specified to run nodes should be created. | `bool` | `true` | no | | database\_encryption | Application-layer Secrets Encryption settings. The object format is {state = string, key\_name = string}. Valid values of state are: "ENCRYPTED"; "DECRYPTED". key\_name is the name of a CloudKMS key. | `list(object({ state = string, key_name = string }))` |
[
{
"key_name": "",
"state": "DECRYPTED"
}
]
| no | | datapath\_provider | The desired datapath provider for this cluster. By default, `DATAPATH_PROVIDER_UNSPECIFIED` enables the IPTables-based kube-proxy implementation. `ADVANCED_DATAPATH` enables Dataplane-V2 feature. | `string` | `"DATAPATH_PROVIDER_UNSPECIFIED"` | no | +| default\_compute\_class\_enabled | Enable Spot VMs as the default compute class for Node Auto-Provisioning | `bool` | `null` | no | | default\_max\_pods\_per\_node | The maximum number of pods to schedule per node | `number` | `110` | no | | deletion\_protection | Whether or not to allow Terraform to destroy the cluster. | `bool` | `true` | no | | description | The description of the cluster | `string` | `""` | no | diff --git a/modules/beta-public-cluster-update-variant/cluster.tf b/modules/beta-public-cluster-update-variant/cluster.tf index dc56b65035..8b876bfa5b 100644 --- a/modules/beta-public-cluster-update-variant/cluster.tf +++ b/modules/beta-public-cluster-update-variant/cluster.tf @@ -128,7 +128,8 @@ resource "google_container_cluster" "primary" { monitoring_service = local.cluster_telemetry_type_is_set || local.logmon_config_is_set ? null : var.monitoring_service cluster_autoscaling { - enabled = var.cluster_autoscaling.enabled + enabled = var.cluster_autoscaling.enabled + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = var.cluster_autoscaling.enabled ? [1] : [] diff --git a/modules/beta-public-cluster-update-variant/metadata.display.yaml b/modules/beta-public-cluster-update-variant/metadata.display.yaml index 39ad9972ac..c354835668 100644 --- a/modules/beta-public-cluster-update-variant/metadata.display.yaml +++ b/modules/beta-public-cluster-update-variant/metadata.display.yaml @@ -97,6 +97,9 @@ spec: datapath_provider: name: datapath_provider title: Datapath Provider + default_compute_class_enabled: + name: default_compute_class_enabled + title: Default Compute Class Enabled default_max_pods_per_node: name: default_max_pods_per_node title: Default Max Pods Per Node diff --git a/modules/beta-public-cluster-update-variant/metadata.yaml b/modules/beta-public-cluster-update-variant/metadata.yaml index 8f1c30d45f..ea286fd0b8 100644 --- a/modules/beta-public-cluster-update-variant/metadata.yaml +++ b/modules/beta-public-cluster-update-variant/metadata.yaml @@ -621,6 +621,9 @@ spec: description: Enable Shielded Nodes features on all nodes in this cluster varType: bool defaultValue: true + - name: default_compute_class_enabled + description: Enable Spot VMs as the default compute class for Node Auto-Provisioning + varType: bool - name: enable_binary_authorization description: Enable BinAuthZ Admission controller varType: bool @@ -864,9 +867,9 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/google-beta - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/kubernetes version: ~> 2.10 - source: hashicorp/random diff --git a/modules/beta-public-cluster-update-variant/variables.tf b/modules/beta-public-cluster-update-variant/variables.tf index 299b269568..a8a9c2de27 100644 --- a/modules/beta-public-cluster-update-variant/variables.tf +++ b/modules/beta-public-cluster-update-variant/variables.tf @@ -773,6 +773,13 @@ variable "enable_shielded_nodes" { default = true } + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/modules/beta-public-cluster-update-variant/versions.tf b/modules/beta-public-cluster-update-variant/versions.tf index fcf70867dd..3aeb251752 100644 --- a/modules/beta-public-cluster-update-variant/versions.tf +++ b/modules/beta-public-cluster-update-variant/versions.tf @@ -21,11 +21,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/beta-public-cluster/README.md b/modules/beta-public-cluster/README.md index 81f2686793..a7c402db15 100644 --- a/modules/beta-public-cluster/README.md +++ b/modules/beta-public-cluster/README.md @@ -165,6 +165,7 @@ Then perform the following commands on the root folder: | create\_service\_account | Defines if service account specified to run nodes should be created. | `bool` | `true` | no | | database\_encryption | Application-layer Secrets Encryption settings. The object format is {state = string, key\_name = string}. Valid values of state are: "ENCRYPTED"; "DECRYPTED". key\_name is the name of a CloudKMS key. | `list(object({ state = string, key_name = string }))` |
[
{
"key_name": "",
"state": "DECRYPTED"
}
]
| no | | datapath\_provider | The desired datapath provider for this cluster. By default, `DATAPATH_PROVIDER_UNSPECIFIED` enables the IPTables-based kube-proxy implementation. `ADVANCED_DATAPATH` enables Dataplane-V2 feature. | `string` | `"DATAPATH_PROVIDER_UNSPECIFIED"` | no | +| default\_compute\_class\_enabled | Enable Spot VMs as the default compute class for Node Auto-Provisioning | `bool` | `null` | no | | default\_max\_pods\_per\_node | The maximum number of pods to schedule per node | `number` | `110` | no | | deletion\_protection | Whether or not to allow Terraform to destroy the cluster. | `bool` | `true` | no | | description | The description of the cluster | `string` | `""` | no | diff --git a/modules/beta-public-cluster/cluster.tf b/modules/beta-public-cluster/cluster.tf index f5f5011763..53328965c1 100644 --- a/modules/beta-public-cluster/cluster.tf +++ b/modules/beta-public-cluster/cluster.tf @@ -128,7 +128,8 @@ resource "google_container_cluster" "primary" { monitoring_service = local.cluster_telemetry_type_is_set || local.logmon_config_is_set ? null : var.monitoring_service cluster_autoscaling { - enabled = var.cluster_autoscaling.enabled + enabled = var.cluster_autoscaling.enabled + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = var.cluster_autoscaling.enabled ? [1] : [] diff --git a/modules/beta-public-cluster/metadata.display.yaml b/modules/beta-public-cluster/metadata.display.yaml index 117dfb553b..b4a6d8a832 100644 --- a/modules/beta-public-cluster/metadata.display.yaml +++ b/modules/beta-public-cluster/metadata.display.yaml @@ -97,6 +97,9 @@ spec: datapath_provider: name: datapath_provider title: Datapath Provider + default_compute_class_enabled: + name: default_compute_class_enabled + title: Default Compute Class Enabled default_max_pods_per_node: name: default_max_pods_per_node title: Default Max Pods Per Node diff --git a/modules/beta-public-cluster/metadata.yaml b/modules/beta-public-cluster/metadata.yaml index db9c168acd..44af81b1ba 100644 --- a/modules/beta-public-cluster/metadata.yaml +++ b/modules/beta-public-cluster/metadata.yaml @@ -621,6 +621,9 @@ spec: description: Enable Shielded Nodes features on all nodes in this cluster varType: bool defaultValue: true + - name: default_compute_class_enabled + description: Enable Spot VMs as the default compute class for Node Auto-Provisioning + varType: bool - name: enable_binary_authorization description: Enable BinAuthZ Admission controller varType: bool @@ -864,9 +867,9 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/google-beta - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/kubernetes version: ~> 2.10 - source: hashicorp/random diff --git a/modules/beta-public-cluster/variables.tf b/modules/beta-public-cluster/variables.tf index 299b269568..a8a9c2de27 100644 --- a/modules/beta-public-cluster/variables.tf +++ b/modules/beta-public-cluster/variables.tf @@ -773,6 +773,13 @@ variable "enable_shielded_nodes" { default = true } + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/modules/beta-public-cluster/versions.tf b/modules/beta-public-cluster/versions.tf index b9b3523da4..d35a3ff94b 100644 --- a/modules/beta-public-cluster/versions.tf +++ b/modules/beta-public-cluster/versions.tf @@ -21,11 +21,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/fleet-app-operator-permissions/metadata.yaml b/modules/fleet-app-operator-permissions/metadata.yaml index fd2be18d9f..39a5bf57dd 100644 --- a/modules/fleet-app-operator-permissions/metadata.yaml +++ b/modules/fleet-app-operator-permissions/metadata.yaml @@ -160,8 +160,8 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.39.0" + version: ">= 7.0.0" - source: hashicorp/google-beta - version: ">= 6.39.0" + version: ">= 7.0.0" - source: hashicorp/random version: ">= 2.0.0" diff --git a/modules/fleet-app-operator-permissions/versions.tf b/modules/fleet-app-operator-permissions/versions.tf index 7398f3957a..69b8514180 100644 --- a/modules/fleet-app-operator-permissions/versions.tf +++ b/modules/fleet-app-operator-permissions/versions.tf @@ -20,11 +20,11 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.39.0" + version = ">= 7.0.0" } google-beta = { source = "hashicorp/google-beta" - version = ">= 6.39.0" + version = ">= 7.0.0" } random = { source = "hashicorp/random" diff --git a/modules/private-cluster-update-variant/README.md b/modules/private-cluster-update-variant/README.md index 4c33b602ea..0d54ac3f00 100644 --- a/modules/private-cluster-update-variant/README.md +++ b/modules/private-cluster-update-variant/README.md @@ -187,6 +187,7 @@ Then perform the following commands on the root folder: | create\_service\_account | Defines if service account specified to run nodes should be created. | `bool` | `true` | no | | database\_encryption | Application-layer Secrets Encryption settings. The object format is {state = string, key\_name = string}. Valid values of state are: "ENCRYPTED"; "DECRYPTED". key\_name is the name of a CloudKMS key. | `list(object({ state = string, key_name = string }))` |
[
{
"key_name": "",
"state": "DECRYPTED"
}
]
| no | | datapath\_provider | The desired datapath provider for this cluster. By default, `DATAPATH_PROVIDER_UNSPECIFIED` enables the IPTables-based kube-proxy implementation. `ADVANCED_DATAPATH` enables Dataplane-V2 feature. | `string` | `"DATAPATH_PROVIDER_UNSPECIFIED"` | no | +| default\_compute\_class\_enabled | Enable Spot VMs as the default compute class for Node Auto-Provisioning | `bool` | `null` | no | | default\_max\_pods\_per\_node | The maximum number of pods to schedule per node | `number` | `110` | no | | deletion\_protection | Whether or not to allow Terraform to destroy the cluster. | `bool` | `true` | no | | deploy\_using\_private\_endpoint | A toggle for Terraform and kubectl to connect to the master's internal IP address during deployment. | `bool` | `false` | no | diff --git a/modules/private-cluster-update-variant/cluster.tf b/modules/private-cluster-update-variant/cluster.tf index aaf42cdcae..76e962289a 100644 --- a/modules/private-cluster-update-variant/cluster.tf +++ b/modules/private-cluster-update-variant/cluster.tf @@ -122,7 +122,8 @@ resource "google_container_cluster" "primary" { monitoring_service = local.logmon_config_is_set ? null : var.monitoring_service cluster_autoscaling { - enabled = var.cluster_autoscaling.enabled + enabled = var.cluster_autoscaling.enabled + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = var.cluster_autoscaling.enabled ? [1] : [] diff --git a/modules/private-cluster-update-variant/metadata.display.yaml b/modules/private-cluster-update-variant/metadata.display.yaml index 0b9d444270..d1ae59b6e0 100644 --- a/modules/private-cluster-update-variant/metadata.display.yaml +++ b/modules/private-cluster-update-variant/metadata.display.yaml @@ -88,6 +88,9 @@ spec: datapath_provider: name: datapath_provider title: Datapath Provider + default_compute_class_enabled: + name: default_compute_class_enabled + title: Default Compute Class Enabled default_max_pods_per_node: name: default_max_pods_per_node title: Default Max Pods Per Node diff --git a/modules/private-cluster-update-variant/metadata.yaml b/modules/private-cluster-update-variant/metadata.yaml index ca27acd298..fa1cb32233 100644 --- a/modules/private-cluster-update-variant/metadata.yaml +++ b/modules/private-cluster-update-variant/metadata.yaml @@ -632,6 +632,9 @@ spec: description: Enable Shielded Nodes features on all nodes in this cluster varType: bool defaultValue: true + - name: default_compute_class_enabled + description: Enable Spot VMs as the default compute class for Node Auto-Provisioning + varType: bool - name: enable_binary_authorization description: Enable BinAuthZ Admission controller varType: bool @@ -841,7 +844,7 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/kubernetes version: ~> 2.10 - source: hashicorp/random diff --git a/modules/private-cluster-update-variant/variables.tf b/modules/private-cluster-update-variant/variables.tf index ee0ccbafff..64c98704da 100644 --- a/modules/private-cluster-update-variant/variables.tf +++ b/modules/private-cluster-update-variant/variables.tf @@ -791,6 +791,13 @@ variable "enable_shielded_nodes" { default = true } + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/modules/private-cluster-update-variant/versions.tf b/modules/private-cluster-update-variant/versions.tf index 3b3a1deaad..8e784b5cd3 100644 --- a/modules/private-cluster-update-variant/versions.tf +++ b/modules/private-cluster-update-variant/versions.tf @@ -21,7 +21,7 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/private-cluster/README.md b/modules/private-cluster/README.md index 5ba1519c08..d8a9987524 100644 --- a/modules/private-cluster/README.md +++ b/modules/private-cluster/README.md @@ -165,6 +165,7 @@ Then perform the following commands on the root folder: | create\_service\_account | Defines if service account specified to run nodes should be created. | `bool` | `true` | no | | database\_encryption | Application-layer Secrets Encryption settings. The object format is {state = string, key\_name = string}. Valid values of state are: "ENCRYPTED"; "DECRYPTED". key\_name is the name of a CloudKMS key. | `list(object({ state = string, key_name = string }))` |
[
{
"key_name": "",
"state": "DECRYPTED"
}
]
| no | | datapath\_provider | The desired datapath provider for this cluster. By default, `DATAPATH_PROVIDER_UNSPECIFIED` enables the IPTables-based kube-proxy implementation. `ADVANCED_DATAPATH` enables Dataplane-V2 feature. | `string` | `"DATAPATH_PROVIDER_UNSPECIFIED"` | no | +| default\_compute\_class\_enabled | Enable Spot VMs as the default compute class for Node Auto-Provisioning | `bool` | `null` | no | | default\_max\_pods\_per\_node | The maximum number of pods to schedule per node | `number` | `110` | no | | deletion\_protection | Whether or not to allow Terraform to destroy the cluster. | `bool` | `true` | no | | deploy\_using\_private\_endpoint | A toggle for Terraform and kubectl to connect to the master's internal IP address during deployment. | `bool` | `false` | no | diff --git a/modules/private-cluster/cluster.tf b/modules/private-cluster/cluster.tf index 12cfa96e87..c100011a2b 100644 --- a/modules/private-cluster/cluster.tf +++ b/modules/private-cluster/cluster.tf @@ -122,7 +122,8 @@ resource "google_container_cluster" "primary" { monitoring_service = local.logmon_config_is_set ? null : var.monitoring_service cluster_autoscaling { - enabled = var.cluster_autoscaling.enabled + enabled = var.cluster_autoscaling.enabled + default_compute_class_enabled = var.default_compute_class_enabled dynamic "auto_provisioning_defaults" { for_each = var.cluster_autoscaling.enabled ? [1] : [] diff --git a/modules/private-cluster/metadata.display.yaml b/modules/private-cluster/metadata.display.yaml index 1abd280ecf..303db5396e 100644 --- a/modules/private-cluster/metadata.display.yaml +++ b/modules/private-cluster/metadata.display.yaml @@ -88,6 +88,9 @@ spec: datapath_provider: name: datapath_provider title: Datapath Provider + default_compute_class_enabled: + name: default_compute_class_enabled + title: Default Compute Class Enabled default_max_pods_per_node: name: default_max_pods_per_node title: Default Max Pods Per Node diff --git a/modules/private-cluster/metadata.yaml b/modules/private-cluster/metadata.yaml index 9135a0da66..3b95c77359 100644 --- a/modules/private-cluster/metadata.yaml +++ b/modules/private-cluster/metadata.yaml @@ -632,6 +632,9 @@ spec: description: Enable Shielded Nodes features on all nodes in this cluster varType: bool defaultValue: true + - name: default_compute_class_enabled + description: Enable Spot VMs as the default compute class for Node Auto-Provisioning + varType: bool - name: enable_binary_authorization description: Enable BinAuthZ Admission controller varType: bool @@ -841,7 +844,7 @@ spec: - roles/editor providerVersions: - source: hashicorp/google - version: ">= 6.47.0, < 8" + version: ">= 7.0.0, < 8" - source: hashicorp/kubernetes version: ~> 2.10 - source: hashicorp/random diff --git a/modules/private-cluster/variables.tf b/modules/private-cluster/variables.tf index ee0ccbafff..64c98704da 100644 --- a/modules/private-cluster/variables.tf +++ b/modules/private-cluster/variables.tf @@ -791,6 +791,13 @@ variable "enable_shielded_nodes" { default = true } + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/modules/private-cluster/versions.tf b/modules/private-cluster/versions.tf index f82ed5e27f..354b9da571 100644 --- a/modules/private-cluster/versions.tf +++ b/modules/private-cluster/versions.tf @@ -21,7 +21,7 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/variables.tf b/variables.tf index e06c1b5d18..7e15d4afd5 100644 --- a/variables.tf +++ b/variables.tf @@ -755,6 +755,13 @@ variable "enable_shielded_nodes" { default = true } + +variable "default_compute_class_enabled" { + type = bool + description = "Enable Spot VMs as the default compute class for Node Auto-Provisioning" + default = null +} + variable "enable_binary_authorization" { type = bool description = "Enable BinAuthZ Admission controller" diff --git a/versions.tf b/versions.tf index 9a9c74bcf1..5742b3d686 100644 --- a/versions.tf +++ b/versions.tf @@ -21,7 +21,7 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 6.47.0, < 8" + version = ">= 7.0.0, < 8" } kubernetes = { source = "hashicorp/kubernetes"