diff --git a/README.md b/README.md index 269ad3cfb..2f2e76c24 100644 --- a/README.md +++ b/README.md @@ -229,6 +229,8 @@ Then perform the following commands on the root folder: | node\_metadata | Specifies how node metadata is exposed to the workload running on the node | `string` | `"GKE_METADATA"` | no | | node\_pools | List of maps containing node pools | `list(map(any))` |
[
{
"name": "default-node-pool"
}
]
| no | | node\_pools\_cgroup\_mode | Map of strings containing cgroup node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_1g | Map of strings containing hugepage size 1g config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_2m | Map of strings containing hugepage size 2m node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | node\_pools\_labels | Map of maps containing node labels by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_linux\_node\_configs\_sysctls | Map of maps containing linux node config sysctls by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_metadata | Map of maps containing node metadata by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | diff --git a/autogen/main/cluster.tf.tmpl b/autogen/main/cluster.tf.tmpl index 651813ad5..d189a8b7c 100644 --- a/autogen/main/cluster.tf.tmpl +++ b/autogen/main/cluster.tf.tmpl @@ -1205,7 +1205,11 @@ resource "google_container_node_pool" "windows_pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]], local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] }, - local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : {cgroup = local.node_pools_cgroup_mode[each.value["name"]]} + local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : {cgroup = local.node_pools_cgroup_mode[each.value["name"]]}, + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, )) != 0 ? [1] : [] content { @@ -1214,6 +1218,19 @@ resource "google_container_node_pool" "windows_pools" { local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) cgroup_mode = coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"], null) + dynamic "hugepages_config" { + for_each = length(merge( + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, + )) != 0 ? [1] : [] + + content { + hugepage_size_2m = try(coalesce(local.node_pools_hugepage_size_2m[each.value["name"]], local.node_pools_hugepage_size_2m["all"]), null) + hugepage_size_1g = try(coalesce(local.node_pools_hugepage_size_1g[each.value["name"]], local.node_pools_hugepage_size_1g["all"]), null) + } + } } } {% endif %} diff --git a/autogen/main/variables.tf.tmpl b/autogen/main/variables.tf.tmpl index 97022e39b..38bd8d4f7 100644 --- a/autogen/main/variables.tf.tmpl +++ b/autogen/main/variables.tf.tmpl @@ -265,6 +265,28 @@ variable "node_pools_cgroup_mode" { default-node-pool = "" } } + +variable "node_pools_hugepage_size_2m" { + type = map(string) + description = "Map of strings containing hugepage size 2m node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_hugepage_size_1g" { + type = map(string) + description = "Map of strings containing hugepage size 1g config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} {% endif %} variable "enable_cost_allocation" { diff --git a/autogen/main/variables_defaults.tf.tmpl b/autogen/main/variables_defaults.tf.tmpl index 0348cc8c1..95138d7d1 100644 --- a/autogen/main/variables_defaults.tf.tmpl +++ b/autogen/main/variables_defaults.tf.tmpl @@ -138,5 +138,25 @@ locals { ), var.node_pools_cgroup_mode ) + + node_pools_hugepage_size_2m = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_2m + ) + + node_pools_hugepage_size_1g = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_1g + ) } {% endif %} diff --git a/cluster.tf b/cluster.tf index 10c8ef65d..3b0ae924c 100644 --- a/cluster.tf +++ b/cluster.tf @@ -890,7 +890,11 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]], local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] }, - local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] } + local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] }, + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, )) != 0 ? [1] : [] content { @@ -899,6 +903,19 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) cgroup_mode = coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"], null) + dynamic "hugepages_config" { + for_each = length(merge( + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, + )) != 0 ? [1] : [] + + content { + hugepage_size_2m = try(coalesce(local.node_pools_hugepage_size_2m[each.value["name"]], local.node_pools_hugepage_size_2m["all"]), null) + hugepage_size_1g = try(coalesce(local.node_pools_hugepage_size_1g[each.value["name"]], local.node_pools_hugepage_size_1g["all"]), null) + } + } } } diff --git a/examples/node_pool/main.tf b/examples/node_pool/main.tf index 062db7e17..3ee159d73 100644 --- a/examples/node_pool/main.tf +++ b/examples/node_pool/main.tf @@ -96,7 +96,8 @@ module "gke" { }, { name = "pool-05" - machine_type = "n1-standard-2" + disk_type = "pd-balanced" + machine_type = "c3-standard-4" node_count = 1 enable_nested_virtualization = true }, @@ -165,6 +166,15 @@ module "gke" { all = "CGROUP_MODE_V1" pool-01 = "CGROUP_MODE_V2" } + + node_pools_hugepage_size_2m = { + all = "1" + pool-01 = "2" + } + + node_pools_hugepage_size_1g = { + pool-05 = "2" + } } resource "google_compute_node_template" "soletenant-tmpl" { diff --git a/metadata.display.yaml b/metadata.display.yaml index 7301ab12c..254e6bc43 100644 --- a/metadata.display.yaml +++ b/metadata.display.yaml @@ -294,6 +294,12 @@ spec: node_pools_cgroup_mode: name: node_pools_cgroup_mode title: Node Pools Cgroup Mode + node_pools_hugepage_size_1g: + name: node_pools_hugepage_size_1g + title: Node Pools Hugepage Size 1G + node_pools_hugepage_size_2m: + name: node_pools_hugepage_size_2m + title: Node Pools Hugepage Size 2M node_pools_labels: name: node_pools_labels title: Node Pools Labels diff --git a/metadata.yaml b/metadata.yaml index 0ba67ab46..4dcdf5100 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -300,6 +300,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_hugepage_size_2m + description: Map of strings containing hugepage size 2m node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_hugepage_size_1g + description: Map of strings containing hugepage size 1g config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" - name: enable_cost_allocation description: Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery varType: bool diff --git a/modules/beta-private-cluster-update-variant/README.md b/modules/beta-private-cluster-update-variant/README.md index 765847f07..4c23e33dc 100644 --- a/modules/beta-private-cluster-update-variant/README.md +++ b/modules/beta-private-cluster-update-variant/README.md @@ -274,6 +274,8 @@ Then perform the following commands on the root folder: | node\_metadata | Specifies how node metadata is exposed to the workload running on the node | `string` | `"GKE_METADATA"` | no | | node\_pools | List of maps containing node pools | `list(map(any))` |
[
{
"name": "default-node-pool"
}
]
| no | | node\_pools\_cgroup\_mode | Map of strings containing cgroup node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_1g | Map of strings containing hugepage size 1g config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_2m | Map of strings containing hugepage size 2m node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | node\_pools\_labels | Map of maps containing node labels by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_linux\_node\_configs\_sysctls | Map of maps containing linux node config sysctls by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_metadata | Map of maps containing node metadata by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | diff --git a/modules/beta-private-cluster-update-variant/cluster.tf b/modules/beta-private-cluster-update-variant/cluster.tf index 07b553ff1..31f8c4ab4 100644 --- a/modules/beta-private-cluster-update-variant/cluster.tf +++ b/modules/beta-private-cluster-update-variant/cluster.tf @@ -1059,7 +1059,11 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]], local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] }, - local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] } + local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] }, + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, )) != 0 ? [1] : [] content { @@ -1068,6 +1072,19 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) cgroup_mode = coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"], null) + dynamic "hugepages_config" { + for_each = length(merge( + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, + )) != 0 ? [1] : [] + + content { + hugepage_size_2m = try(coalesce(local.node_pools_hugepage_size_2m[each.value["name"]], local.node_pools_hugepage_size_2m["all"]), null) + hugepage_size_1g = try(coalesce(local.node_pools_hugepage_size_1g[each.value["name"]], local.node_pools_hugepage_size_1g["all"]), null) + } + } } } diff --git a/modules/beta-private-cluster-update-variant/metadata.display.yaml b/modules/beta-private-cluster-update-variant/metadata.display.yaml index 97a67444c..293a6bc5b 100644 --- a/modules/beta-private-cluster-update-variant/metadata.display.yaml +++ b/modules/beta-private-cluster-update-variant/metadata.display.yaml @@ -337,6 +337,12 @@ spec: node_pools_cgroup_mode: name: node_pools_cgroup_mode title: Node Pools Cgroup Mode + node_pools_hugepage_size_1g: + name: node_pools_hugepage_size_1g + title: Node Pools Hugepage Size 1G + node_pools_hugepage_size_2m: + name: node_pools_hugepage_size_2m + title: Node Pools Hugepage Size 2M node_pools_labels: name: node_pools_labels title: Node Pools Labels diff --git a/modules/beta-private-cluster-update-variant/metadata.yaml b/modules/beta-private-cluster-update-variant/metadata.yaml index c2369a159..87e4f2a62 100644 --- a/modules/beta-private-cluster-update-variant/metadata.yaml +++ b/modules/beta-private-cluster-update-variant/metadata.yaml @@ -266,6 +266,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_hugepage_size_2m + description: Map of strings containing hugepage size 2m node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_hugepage_size_1g + description: Map of strings containing hugepage size 1g config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" - name: enable_cost_allocation description: Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery varType: bool diff --git a/modules/beta-private-cluster-update-variant/variables.tf b/modules/beta-private-cluster-update-variant/variables.tf index 51ce4c319..464a7b10d 100644 --- a/modules/beta-private-cluster-update-variant/variables.tf +++ b/modules/beta-private-cluster-update-variant/variables.tf @@ -246,6 +246,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_hugepage_size_2m" { + type = map(string) + description = "Map of strings containing hugepage size 2m node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_hugepage_size_1g" { + type = map(string) + description = "Map of strings containing hugepage size 1g config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + variable "enable_cost_allocation" { type = bool description = "Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery" diff --git a/modules/beta-private-cluster-update-variant/variables_defaults.tf b/modules/beta-private-cluster-update-variant/variables_defaults.tf index 5c7f51b42..efa9ecedd 100644 --- a/modules/beta-private-cluster-update-variant/variables_defaults.tf +++ b/modules/beta-private-cluster-update-variant/variables_defaults.tf @@ -137,4 +137,24 @@ locals { ), var.node_pools_cgroup_mode ) + + node_pools_hugepage_size_2m = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_2m + ) + + node_pools_hugepage_size_1g = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_1g + ) } diff --git a/modules/beta-private-cluster/README.md b/modules/beta-private-cluster/README.md index ad6fb2902..0ad9c7d97 100644 --- a/modules/beta-private-cluster/README.md +++ b/modules/beta-private-cluster/README.md @@ -252,6 +252,8 @@ Then perform the following commands on the root folder: | node\_metadata | Specifies how node metadata is exposed to the workload running on the node | `string` | `"GKE_METADATA"` | no | | node\_pools | List of maps containing node pools | `list(map(any))` |
[
{
"name": "default-node-pool"
}
]
| no | | node\_pools\_cgroup\_mode | Map of strings containing cgroup node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_1g | Map of strings containing hugepage size 1g config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_2m | Map of strings containing hugepage size 2m node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | node\_pools\_labels | Map of maps containing node labels by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_linux\_node\_configs\_sysctls | Map of maps containing linux node config sysctls by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_metadata | Map of maps containing node metadata by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | diff --git a/modules/beta-private-cluster/cluster.tf b/modules/beta-private-cluster/cluster.tf index 36328b646..7342bf1f2 100644 --- a/modules/beta-private-cluster/cluster.tf +++ b/modules/beta-private-cluster/cluster.tf @@ -977,7 +977,11 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]], local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] }, - local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] } + local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] }, + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, )) != 0 ? [1] : [] content { @@ -986,6 +990,19 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) cgroup_mode = coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"], null) + dynamic "hugepages_config" { + for_each = length(merge( + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, + )) != 0 ? [1] : [] + + content { + hugepage_size_2m = try(coalesce(local.node_pools_hugepage_size_2m[each.value["name"]], local.node_pools_hugepage_size_2m["all"]), null) + hugepage_size_1g = try(coalesce(local.node_pools_hugepage_size_1g[each.value["name"]], local.node_pools_hugepage_size_1g["all"]), null) + } + } } } diff --git a/modules/beta-private-cluster/metadata.display.yaml b/modules/beta-private-cluster/metadata.display.yaml index cf4c81a0f..a23bbaf03 100644 --- a/modules/beta-private-cluster/metadata.display.yaml +++ b/modules/beta-private-cluster/metadata.display.yaml @@ -337,6 +337,12 @@ spec: node_pools_cgroup_mode: name: node_pools_cgroup_mode title: Node Pools Cgroup Mode + node_pools_hugepage_size_1g: + name: node_pools_hugepage_size_1g + title: Node Pools Hugepage Size 1G + node_pools_hugepage_size_2m: + name: node_pools_hugepage_size_2m + title: Node Pools Hugepage Size 2M node_pools_labels: name: node_pools_labels title: Node Pools Labels diff --git a/modules/beta-private-cluster/metadata.yaml b/modules/beta-private-cluster/metadata.yaml index 99482991d..1e71b06ae 100644 --- a/modules/beta-private-cluster/metadata.yaml +++ b/modules/beta-private-cluster/metadata.yaml @@ -266,6 +266,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_hugepage_size_2m + description: Map of strings containing hugepage size 2m node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_hugepage_size_1g + description: Map of strings containing hugepage size 1g config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" - name: enable_cost_allocation description: Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery varType: bool diff --git a/modules/beta-private-cluster/variables.tf b/modules/beta-private-cluster/variables.tf index 51ce4c319..464a7b10d 100644 --- a/modules/beta-private-cluster/variables.tf +++ b/modules/beta-private-cluster/variables.tf @@ -246,6 +246,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_hugepage_size_2m" { + type = map(string) + description = "Map of strings containing hugepage size 2m node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_hugepage_size_1g" { + type = map(string) + description = "Map of strings containing hugepage size 1g config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + variable "enable_cost_allocation" { type = bool description = "Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery" diff --git a/modules/beta-private-cluster/variables_defaults.tf b/modules/beta-private-cluster/variables_defaults.tf index 5c7f51b42..efa9ecedd 100644 --- a/modules/beta-private-cluster/variables_defaults.tf +++ b/modules/beta-private-cluster/variables_defaults.tf @@ -137,4 +137,24 @@ locals { ), var.node_pools_cgroup_mode ) + + node_pools_hugepage_size_2m = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_2m + ) + + node_pools_hugepage_size_1g = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_1g + ) } diff --git a/modules/beta-public-cluster-update-variant/README.md b/modules/beta-public-cluster-update-variant/README.md index 888b556ad..30552a635 100644 --- a/modules/beta-public-cluster-update-variant/README.md +++ b/modules/beta-public-cluster-update-variant/README.md @@ -263,6 +263,8 @@ Then perform the following commands on the root folder: | node\_metadata | Specifies how node metadata is exposed to the workload running on the node | `string` | `"GKE_METADATA"` | no | | node\_pools | List of maps containing node pools | `list(map(any))` |
[
{
"name": "default-node-pool"
}
]
| no | | node\_pools\_cgroup\_mode | Map of strings containing cgroup node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_1g | Map of strings containing hugepage size 1g config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_2m | Map of strings containing hugepage size 2m node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | node\_pools\_labels | Map of maps containing node labels by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_linux\_node\_configs\_sysctls | Map of maps containing linux node config sysctls by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_metadata | Map of maps containing node metadata by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | diff --git a/modules/beta-public-cluster-update-variant/cluster.tf b/modules/beta-public-cluster-update-variant/cluster.tf index eb37dfb06..e65f2c3a0 100644 --- a/modules/beta-public-cluster-update-variant/cluster.tf +++ b/modules/beta-public-cluster-update-variant/cluster.tf @@ -1037,7 +1037,11 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]], local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] }, - local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] } + local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] }, + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, )) != 0 ? [1] : [] content { @@ -1046,6 +1050,19 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) cgroup_mode = coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"], null) + dynamic "hugepages_config" { + for_each = length(merge( + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, + )) != 0 ? [1] : [] + + content { + hugepage_size_2m = try(coalesce(local.node_pools_hugepage_size_2m[each.value["name"]], local.node_pools_hugepage_size_2m["all"]), null) + hugepage_size_1g = try(coalesce(local.node_pools_hugepage_size_1g[each.value["name"]], local.node_pools_hugepage_size_1g["all"]), null) + } + } } } diff --git a/modules/beta-public-cluster-update-variant/metadata.display.yaml b/modules/beta-public-cluster-update-variant/metadata.display.yaml index 704cd41d0..b4a44ed66 100644 --- a/modules/beta-public-cluster-update-variant/metadata.display.yaml +++ b/modules/beta-public-cluster-update-variant/metadata.display.yaml @@ -322,6 +322,12 @@ spec: node_pools_cgroup_mode: name: node_pools_cgroup_mode title: Node Pools Cgroup Mode + node_pools_hugepage_size_1g: + name: node_pools_hugepage_size_1g + title: Node Pools Hugepage Size 1G + node_pools_hugepage_size_2m: + name: node_pools_hugepage_size_2m + title: Node Pools Hugepage Size 2M node_pools_labels: name: node_pools_labels title: Node Pools Labels diff --git a/modules/beta-public-cluster-update-variant/metadata.yaml b/modules/beta-public-cluster-update-variant/metadata.yaml index cc0f4f2d4..09e9b7a53 100644 --- a/modules/beta-public-cluster-update-variant/metadata.yaml +++ b/modules/beta-public-cluster-update-variant/metadata.yaml @@ -266,6 +266,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_hugepage_size_2m + description: Map of strings containing hugepage size 2m node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_hugepage_size_1g + description: Map of strings containing hugepage size 1g config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" - name: enable_cost_allocation description: Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery varType: bool diff --git a/modules/beta-public-cluster-update-variant/variables.tf b/modules/beta-public-cluster-update-variant/variables.tf index b893d3617..6f5bbfc04 100644 --- a/modules/beta-public-cluster-update-variant/variables.tf +++ b/modules/beta-public-cluster-update-variant/variables.tf @@ -246,6 +246,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_hugepage_size_2m" { + type = map(string) + description = "Map of strings containing hugepage size 2m node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_hugepage_size_1g" { + type = map(string) + description = "Map of strings containing hugepage size 1g config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + variable "enable_cost_allocation" { type = bool description = "Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery" diff --git a/modules/beta-public-cluster-update-variant/variables_defaults.tf b/modules/beta-public-cluster-update-variant/variables_defaults.tf index 5c7f51b42..efa9ecedd 100644 --- a/modules/beta-public-cluster-update-variant/variables_defaults.tf +++ b/modules/beta-public-cluster-update-variant/variables_defaults.tf @@ -137,4 +137,24 @@ locals { ), var.node_pools_cgroup_mode ) + + node_pools_hugepage_size_2m = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_2m + ) + + node_pools_hugepage_size_1g = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_1g + ) } diff --git a/modules/beta-public-cluster/README.md b/modules/beta-public-cluster/README.md index 07acd627a..1b8d5e351 100644 --- a/modules/beta-public-cluster/README.md +++ b/modules/beta-public-cluster/README.md @@ -241,6 +241,8 @@ Then perform the following commands on the root folder: | node\_metadata | Specifies how node metadata is exposed to the workload running on the node | `string` | `"GKE_METADATA"` | no | | node\_pools | List of maps containing node pools | `list(map(any))` |
[
{
"name": "default-node-pool"
}
]
| no | | node\_pools\_cgroup\_mode | Map of strings containing cgroup node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_1g | Map of strings containing hugepage size 1g config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_2m | Map of strings containing hugepage size 2m node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | node\_pools\_labels | Map of maps containing node labels by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_linux\_node\_configs\_sysctls | Map of maps containing linux node config sysctls by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_metadata | Map of maps containing node metadata by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | diff --git a/modules/beta-public-cluster/cluster.tf b/modules/beta-public-cluster/cluster.tf index 50b44cc8a..14de67eca 100644 --- a/modules/beta-public-cluster/cluster.tf +++ b/modules/beta-public-cluster/cluster.tf @@ -955,7 +955,11 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]], local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] }, - local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] } + local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] }, + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, )) != 0 ? [1] : [] content { @@ -964,6 +968,19 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) cgroup_mode = coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"], null) + dynamic "hugepages_config" { + for_each = length(merge( + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, + )) != 0 ? [1] : [] + + content { + hugepage_size_2m = try(coalesce(local.node_pools_hugepage_size_2m[each.value["name"]], local.node_pools_hugepage_size_2m["all"]), null) + hugepage_size_1g = try(coalesce(local.node_pools_hugepage_size_1g[each.value["name"]], local.node_pools_hugepage_size_1g["all"]), null) + } + } } } diff --git a/modules/beta-public-cluster/metadata.display.yaml b/modules/beta-public-cluster/metadata.display.yaml index 2796db25a..2ea5ce642 100644 --- a/modules/beta-public-cluster/metadata.display.yaml +++ b/modules/beta-public-cluster/metadata.display.yaml @@ -322,6 +322,12 @@ spec: node_pools_cgroup_mode: name: node_pools_cgroup_mode title: Node Pools Cgroup Mode + node_pools_hugepage_size_1g: + name: node_pools_hugepage_size_1g + title: Node Pools Hugepage Size 1G + node_pools_hugepage_size_2m: + name: node_pools_hugepage_size_2m + title: Node Pools Hugepage Size 2M node_pools_labels: name: node_pools_labels title: Node Pools Labels diff --git a/modules/beta-public-cluster/metadata.yaml b/modules/beta-public-cluster/metadata.yaml index 8d778be58..ea7fd4c2f 100644 --- a/modules/beta-public-cluster/metadata.yaml +++ b/modules/beta-public-cluster/metadata.yaml @@ -266,6 +266,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_hugepage_size_2m + description: Map of strings containing hugepage size 2m node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_hugepage_size_1g + description: Map of strings containing hugepage size 1g config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" - name: enable_cost_allocation description: Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery varType: bool diff --git a/modules/beta-public-cluster/variables.tf b/modules/beta-public-cluster/variables.tf index b893d3617..6f5bbfc04 100644 --- a/modules/beta-public-cluster/variables.tf +++ b/modules/beta-public-cluster/variables.tf @@ -246,6 +246,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_hugepage_size_2m" { + type = map(string) + description = "Map of strings containing hugepage size 2m node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_hugepage_size_1g" { + type = map(string) + description = "Map of strings containing hugepage size 1g config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + variable "enable_cost_allocation" { type = bool description = "Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery" diff --git a/modules/beta-public-cluster/variables_defaults.tf b/modules/beta-public-cluster/variables_defaults.tf index 5c7f51b42..efa9ecedd 100644 --- a/modules/beta-public-cluster/variables_defaults.tf +++ b/modules/beta-public-cluster/variables_defaults.tf @@ -137,4 +137,24 @@ locals { ), var.node_pools_cgroup_mode ) + + node_pools_hugepage_size_2m = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_2m + ) + + node_pools_hugepage_size_1g = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_1g + ) } diff --git a/modules/private-cluster-update-variant/README.md b/modules/private-cluster-update-variant/README.md index b15cf8e8c..b0ee842a5 100644 --- a/modules/private-cluster-update-variant/README.md +++ b/modules/private-cluster-update-variant/README.md @@ -262,6 +262,8 @@ Then perform the following commands on the root folder: | node\_metadata | Specifies how node metadata is exposed to the workload running on the node | `string` | `"GKE_METADATA"` | no | | node\_pools | List of maps containing node pools | `list(map(any))` |
[
{
"name": "default-node-pool"
}
]
| no | | node\_pools\_cgroup\_mode | Map of strings containing cgroup node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_1g | Map of strings containing hugepage size 1g config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_2m | Map of strings containing hugepage size 2m node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | node\_pools\_labels | Map of maps containing node labels by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_linux\_node\_configs\_sysctls | Map of maps containing linux node config sysctls by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_metadata | Map of maps containing node metadata by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | diff --git a/modules/private-cluster-update-variant/cluster.tf b/modules/private-cluster-update-variant/cluster.tf index ee268ad95..dafae3bb1 100644 --- a/modules/private-cluster-update-variant/cluster.tf +++ b/modules/private-cluster-update-variant/cluster.tf @@ -993,7 +993,11 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]], local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] }, - local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] } + local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] }, + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, )) != 0 ? [1] : [] content { @@ -1002,6 +1006,19 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) cgroup_mode = coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"], null) + dynamic "hugepages_config" { + for_each = length(merge( + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, + )) != 0 ? [1] : [] + + content { + hugepage_size_2m = try(coalesce(local.node_pools_hugepage_size_2m[each.value["name"]], local.node_pools_hugepage_size_2m["all"]), null) + hugepage_size_1g = try(coalesce(local.node_pools_hugepage_size_1g[each.value["name"]], local.node_pools_hugepage_size_1g["all"]), null) + } + } } } diff --git a/modules/private-cluster-update-variant/metadata.display.yaml b/modules/private-cluster-update-variant/metadata.display.yaml index 2b240b4dd..0db8c69f3 100644 --- a/modules/private-cluster-update-variant/metadata.display.yaml +++ b/modules/private-cluster-update-variant/metadata.display.yaml @@ -310,6 +310,12 @@ spec: node_pools_cgroup_mode: name: node_pools_cgroup_mode title: Node Pools Cgroup Mode + node_pools_hugepage_size_1g: + name: node_pools_hugepage_size_1g + title: Node Pools Hugepage Size 1G + node_pools_hugepage_size_2m: + name: node_pools_hugepage_size_2m + title: Node Pools Hugepage Size 2M node_pools_labels: name: node_pools_labels title: Node Pools Labels diff --git a/modules/private-cluster-update-variant/metadata.yaml b/modules/private-cluster-update-variant/metadata.yaml index a99fc5021..b5537c1de 100644 --- a/modules/private-cluster-update-variant/metadata.yaml +++ b/modules/private-cluster-update-variant/metadata.yaml @@ -266,6 +266,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_hugepage_size_2m + description: Map of strings containing hugepage size 2m node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_hugepage_size_1g + description: Map of strings containing hugepage size 1g config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" - name: enable_cost_allocation description: Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery varType: bool diff --git a/modules/private-cluster-update-variant/variables.tf b/modules/private-cluster-update-variant/variables.tf index c29a1aca3..b436e38ce 100644 --- a/modules/private-cluster-update-variant/variables.tf +++ b/modules/private-cluster-update-variant/variables.tf @@ -246,6 +246,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_hugepage_size_2m" { + type = map(string) + description = "Map of strings containing hugepage size 2m node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_hugepage_size_1g" { + type = map(string) + description = "Map of strings containing hugepage size 1g config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + variable "enable_cost_allocation" { type = bool description = "Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery" diff --git a/modules/private-cluster-update-variant/variables_defaults.tf b/modules/private-cluster-update-variant/variables_defaults.tf index 5c7f51b42..efa9ecedd 100644 --- a/modules/private-cluster-update-variant/variables_defaults.tf +++ b/modules/private-cluster-update-variant/variables_defaults.tf @@ -137,4 +137,24 @@ locals { ), var.node_pools_cgroup_mode ) + + node_pools_hugepage_size_2m = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_2m + ) + + node_pools_hugepage_size_1g = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_1g + ) } diff --git a/modules/private-cluster/README.md b/modules/private-cluster/README.md index 50ab5046d..c076924f4 100644 --- a/modules/private-cluster/README.md +++ b/modules/private-cluster/README.md @@ -240,6 +240,8 @@ Then perform the following commands on the root folder: | node\_metadata | Specifies how node metadata is exposed to the workload running on the node | `string` | `"GKE_METADATA"` | no | | node\_pools | List of maps containing node pools | `list(map(any))` |
[
{
"name": "default-node-pool"
}
]
| no | | node\_pools\_cgroup\_mode | Map of strings containing cgroup node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_1g | Map of strings containing hugepage size 1g config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_hugepage\_size\_2m | Map of strings containing hugepage size 2m node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | node\_pools\_labels | Map of maps containing node labels by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_linux\_node\_configs\_sysctls | Map of maps containing linux node config sysctls by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_metadata | Map of maps containing node metadata by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | diff --git a/modules/private-cluster/cluster.tf b/modules/private-cluster/cluster.tf index aecc3d156..8c2be53ef 100644 --- a/modules/private-cluster/cluster.tf +++ b/modules/private-cluster/cluster.tf @@ -912,7 +912,11 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]], local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] }, - local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] } + local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] }, + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, )) != 0 ? [1] : [] content { @@ -921,6 +925,19 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) cgroup_mode = coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"], null) + dynamic "hugepages_config" { + for_each = length(merge( + local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, + local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] }, + local.node_pools_hugepage_size_1g["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g["all"] }, + local.node_pools_hugepage_size_1g[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_1g[each.value["name"]] }, + )) != 0 ? [1] : [] + + content { + hugepage_size_2m = try(coalesce(local.node_pools_hugepage_size_2m[each.value["name"]], local.node_pools_hugepage_size_2m["all"]), null) + hugepage_size_1g = try(coalesce(local.node_pools_hugepage_size_1g[each.value["name"]], local.node_pools_hugepage_size_1g["all"]), null) + } + } } } diff --git a/modules/private-cluster/metadata.display.yaml b/modules/private-cluster/metadata.display.yaml index 79b867ab5..a65ec8efc 100644 --- a/modules/private-cluster/metadata.display.yaml +++ b/modules/private-cluster/metadata.display.yaml @@ -310,6 +310,12 @@ spec: node_pools_cgroup_mode: name: node_pools_cgroup_mode title: Node Pools Cgroup Mode + node_pools_hugepage_size_1g: + name: node_pools_hugepage_size_1g + title: Node Pools Hugepage Size 1G + node_pools_hugepage_size_2m: + name: node_pools_hugepage_size_2m + title: Node Pools Hugepage Size 2M node_pools_labels: name: node_pools_labels title: Node Pools Labels diff --git a/modules/private-cluster/metadata.yaml b/modules/private-cluster/metadata.yaml index 267580b38..4b09ac897 100644 --- a/modules/private-cluster/metadata.yaml +++ b/modules/private-cluster/metadata.yaml @@ -266,6 +266,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_hugepage_size_2m + description: Map of strings containing hugepage size 2m node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_hugepage_size_1g + description: Map of strings containing hugepage size 1g config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" - name: enable_cost_allocation description: Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery varType: bool diff --git a/modules/private-cluster/variables.tf b/modules/private-cluster/variables.tf index c29a1aca3..b436e38ce 100644 --- a/modules/private-cluster/variables.tf +++ b/modules/private-cluster/variables.tf @@ -246,6 +246,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_hugepage_size_2m" { + type = map(string) + description = "Map of strings containing hugepage size 2m node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_hugepage_size_1g" { + type = map(string) + description = "Map of strings containing hugepage size 1g config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + variable "enable_cost_allocation" { type = bool description = "Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery" diff --git a/modules/private-cluster/variables_defaults.tf b/modules/private-cluster/variables_defaults.tf index 5c7f51b42..efa9ecedd 100644 --- a/modules/private-cluster/variables_defaults.tf +++ b/modules/private-cluster/variables_defaults.tf @@ -137,4 +137,24 @@ locals { ), var.node_pools_cgroup_mode ) + + node_pools_hugepage_size_2m = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_2m + ) + + node_pools_hugepage_size_1g = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_1g + ) } diff --git a/test/integration/node_pool/testdata/TestNodePool.json b/test/integration/node_pool/testdata/TestNodePool.json index adfcbb7e8..268989bd3 100644 --- a/test/integration/node_pool/testdata/TestNodePool.json +++ b/test/integration/node_pool/testdata/TestNodePool.json @@ -333,6 +333,9 @@ "sysctls": { "net.core.netdev_max_backlog": "10000", "net.core.rmem_max": "10000" + }, + "hugepages": { + "hugepageSize2m": "2" } }, "loggingConfig": { @@ -430,6 +433,9 @@ "linuxNodeConfig": { "sysctls": { "net.core.netdev_max_backlog": "10000" + }, + "hugepages": { + "hugepageSize2m": "1" } }, "loggingConfig": { @@ -516,6 +522,9 @@ "linuxNodeConfig": { "sysctls": { "net.core.netdev_max_backlog": "20000" + }, + "hugepages": { + "hugepageSize2m": "1" } }, "loggingConfig": { @@ -609,6 +618,9 @@ "linuxNodeConfig": { "sysctls": { "net.core.netdev_max_backlog": "10000" + }, + "hugepages": { + "hugepageSize2m": "1" } }, "loggingConfig": { @@ -691,7 +703,7 @@ "enableNestedVirtualization": true }, "diskSizeGb": 100, - "diskType": "pd-standard", + "diskType": "pd-balanced", "effectiveCgroupMode": "EFFECTIVE_CGROUP_MODE_V1", "imageType": "COS_CONTAINERD", "labels": { @@ -702,6 +714,10 @@ "linuxNodeConfig": { "sysctls": { "net.core.netdev_max_backlog": "10000" + }, + "hugepages": { + "hugepageSize2m": "1", + "hugepageSize1g": "2" } }, "loggingConfig": { @@ -709,7 +725,7 @@ "variant": "DEFAULT" } }, - "machineType": "n1-standard-2", + "machineType": "c3-standard-4", "metadata": { "cluster_name": "node-pool-cluster-RANDOM_STRING", "disable-legacy-endpoints": "false", diff --git a/variables.tf b/variables.tf index 3755dafa4..11d00f833 100644 --- a/variables.tf +++ b/variables.tf @@ -246,6 +246,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_hugepage_size_2m" { + type = map(string) + description = "Map of strings containing hugepage size 2m node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_hugepage_size_1g" { + type = map(string) + description = "Map of strings containing hugepage size 1g config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + variable "enable_cost_allocation" { type = bool description = "Enables Cost Allocation Feature and the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery" diff --git a/variables_defaults.tf b/variables_defaults.tf index 5c7f51b42..efa9ecedd 100644 --- a/variables_defaults.tf +++ b/variables_defaults.tf @@ -137,4 +137,24 @@ locals { ), var.node_pools_cgroup_mode ) + + node_pools_hugepage_size_2m = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_2m + ) + + node_pools_hugepage_size_1g = merge( + { all = "" }, + { default-node-pool = "" }, + zipmap( + [for node_pool in var.node_pools : node_pool["name"]], + [for node_pool in var.node_pools : ""] + ), + var.node_pools_hugepage_size_1g + ) }