diff --git a/README.md b/README.md index c737e8c7fd..89cd5a73cd 100644 --- a/README.md +++ b/README.md @@ -251,6 +251,8 @@ Then perform the following commands on the root folder: | node\_pools\_resource\_manager\_tags | Map of maps containing resource manager tags by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_tags | Map of lists containing node network tags by node-pool name | `map(list(string))` |
{
"all": [],
"default-node-pool": []
}
| no | | node\_pools\_taints | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` |
{
"all": [],
"default-node-pool": []
}
| no | +| node\_pools\_transparent\_hugepage\_defrag | Map of strings containing transparent hugepage defrag node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_transparent\_hugepage\_enabled | Map of strings containing transparent hugepage enabled node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | `list(string)` |
[
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
]
| no | | notification\_config\_topic | The desired Pub/Sub topic to which notifications will be sent by GKE. Format is projects/{project}/topics/{topic}. | `string` | `""` | no | | notification\_filter\_event\_type | Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Can be used to filter what notifications are sent. Accepted values are UPGRADE\_AVAILABLE\_EVENT, UPGRADE\_EVENT, and SECURITY\_BULLETIN\_EVENT. | `list(string)` | `[]` | no | diff --git a/autogen/main/cluster.tf.tmpl b/autogen/main/cluster.tf.tmpl index 31a7d8c5f4..4cfc009dc4 100644 --- a/autogen/main/cluster.tf.tmpl +++ b/autogen/main/cluster.tf.tmpl @@ -1321,6 +1321,10 @@ resource "google_container_node_pool" "windows_pools" { 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_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] }, + local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] }, + local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] }, + local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[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"] }, @@ -1332,7 +1336,9 @@ 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"]] ) - cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null) + transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null) dynamic "hugepages_config" { for_each = length(merge( local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, diff --git a/autogen/main/variables.tf.tmpl b/autogen/main/variables.tf.tmpl index b52f0cfe28..71c1d701e3 100644 --- a/autogen/main/variables.tf.tmpl +++ b/autogen/main/variables.tf.tmpl @@ -274,6 +274,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_transparent_hugepage_enabled" { + type = map(string) + description = "Map of strings containing transparent hugepage enabled node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_transparent_hugepage_defrag" { + type = map(string) + description = "Map of strings containing transparent hugepage defrag node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + 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" diff --git a/autogen/main/variables_defaults.tf.tmpl b/autogen/main/variables_defaults.tf.tmpl index 95138d7d1f..55ce39935c 100644 --- a/autogen/main/variables_defaults.tf.tmpl +++ b/autogen/main/variables_defaults.tf.tmpl @@ -139,6 +139,26 @@ locals { var.node_pools_cgroup_mode ) + node_pools_transparent_hugepage_enabled = 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_transparent_hugepage_enabled + ) + + node_pools_transparent_hugepage_defrag = 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_transparent_hugepage_defrag + ) + node_pools_hugepage_size_2m = merge( { all = "" }, { default-node-pool = "" }, diff --git a/cluster.tf b/cluster.tf index f4d743361c..d0846115f9 100644 --- a/cluster.tf +++ b/cluster.tf @@ -1003,6 +1003,10 @@ resource "google_container_node_pool" "pools" { 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_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] }, + local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] }, + local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] }, + local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[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"] }, @@ -1014,7 +1018,9 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) - cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null) + transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null) dynamic "hugepages_config" { for_each = length(merge( local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, diff --git a/examples/node_pool/main.tf b/examples/node_pool/main.tf index 6781727fd8..5603d10472 100644 --- a/examples/node_pool/main.tf +++ b/examples/node_pool/main.tf @@ -193,6 +193,15 @@ module "gke" { node_pools_hugepage_size_1g = { pool-05 = "2" } + + node_pools_transparent_hugepage_enabled = { + all = "TRANSPARENT_HUGEPAGE_ENABLED_NEVER" + pool-01 = "TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS" + } + + node_pools_transparent_hugepage_defrag = { + pool-05 = "TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS" + } } resource "google_compute_node_template" "soletenant-tmpl" { diff --git a/metadata.display.yaml b/metadata.display.yaml index 52c2d68f03..9c6accecb8 100644 --- a/metadata.display.yaml +++ b/metadata.display.yaml @@ -360,6 +360,12 @@ spec: node_pools_taints: name: node_pools_taints title: Node Pools Taints + node_pools_transparent_hugepage_defrag: + name: node_pools_transparent_hugepage_defrag + title: Node Pools Transparent Hugepage Defrag + node_pools_transparent_hugepage_enabled: + name: node_pools_transparent_hugepage_enabled + title: Node Pools Transparent Hugepage Enabled non_masquerade_cidrs: name: non_masquerade_cidrs title: Non Masquerade Cidrs diff --git a/metadata.yaml b/metadata.yaml index edd929d072..f6cee8a9ba 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -317,6 +317,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_transparent_hugepage_enabled + description: Map of strings containing transparent hugepage enabled node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_transparent_hugepage_defrag + description: Map of strings containing transparent hugepage defrag node config by node-pool name + varType: map(string) + 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) diff --git a/modules/beta-private-cluster-update-variant/README.md b/modules/beta-private-cluster-update-variant/README.md index 476d7a7b15..706e89c315 100644 --- a/modules/beta-private-cluster-update-variant/README.md +++ b/modules/beta-private-cluster-update-variant/README.md @@ -295,6 +295,8 @@ Then perform the following commands on the root folder: | node\_pools\_resource\_manager\_tags | Map of maps containing resource manager tags by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_tags | Map of lists containing node network tags by node-pool name | `map(list(string))` |
{
"all": [],
"default-node-pool": []
}
| no | | node\_pools\_taints | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` |
{
"all": [],
"default-node-pool": []
}
| no | +| node\_pools\_transparent\_hugepage\_defrag | Map of strings containing transparent hugepage defrag node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_transparent\_hugepage\_enabled | Map of strings containing transparent hugepage enabled node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | `list(string)` |
[
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
]
| no | | notification\_config\_topic | The desired Pub/Sub topic to which notifications will be sent by GKE. Format is projects/{project}/topics/{topic}. | `string` | `""` | no | | notification\_filter\_event\_type | Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Can be used to filter what notifications are sent. Accepted values are UPGRADE\_AVAILABLE\_EVENT, UPGRADE\_EVENT, and SECURITY\_BULLETIN\_EVENT. | `list(string)` | `[]` | no | diff --git a/modules/beta-private-cluster-update-variant/cluster.tf b/modules/beta-private-cluster-update-variant/cluster.tf index 181c82b2d2..9f480d9a8d 100644 --- a/modules/beta-private-cluster-update-variant/cluster.tf +++ b/modules/beta-private-cluster-update-variant/cluster.tf @@ -1169,6 +1169,10 @@ resource "google_container_node_pool" "pools" { 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_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] }, + local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] }, + local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] }, + local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[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"] }, @@ -1180,7 +1184,9 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) - cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null) + transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null) dynamic "hugepages_config" { for_each = length(merge( local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, diff --git a/modules/beta-private-cluster-update-variant/metadata.display.yaml b/modules/beta-private-cluster-update-variant/metadata.display.yaml index cc12f38bae..30cad10e2c 100644 --- a/modules/beta-private-cluster-update-variant/metadata.display.yaml +++ b/modules/beta-private-cluster-update-variant/metadata.display.yaml @@ -400,6 +400,12 @@ spec: node_pools_taints: name: node_pools_taints title: Node Pools Taints + node_pools_transparent_hugepage_defrag: + name: node_pools_transparent_hugepage_defrag + title: Node Pools Transparent Hugepage Defrag + node_pools_transparent_hugepage_enabled: + name: node_pools_transparent_hugepage_enabled + title: Node Pools Transparent Hugepage Enabled non_masquerade_cidrs: name: non_masquerade_cidrs title: Non Masquerade Cidrs diff --git a/modules/beta-private-cluster-update-variant/metadata.yaml b/modules/beta-private-cluster-update-variant/metadata.yaml index be48039bc6..4d192a329d 100644 --- a/modules/beta-private-cluster-update-variant/metadata.yaml +++ b/modules/beta-private-cluster-update-variant/metadata.yaml @@ -277,6 +277,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_transparent_hugepage_enabled + description: Map of strings containing transparent hugepage enabled node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_transparent_hugepage_defrag + description: Map of strings containing transparent hugepage defrag node config by node-pool name + varType: map(string) + 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) diff --git a/modules/beta-private-cluster-update-variant/variables.tf b/modules/beta-private-cluster-update-variant/variables.tf index d0486f2d60..2eb80d54ce 100644 --- a/modules/beta-private-cluster-update-variant/variables.tf +++ b/modules/beta-private-cluster-update-variant/variables.tf @@ -254,6 +254,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_transparent_hugepage_enabled" { + type = map(string) + description = "Map of strings containing transparent hugepage enabled node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_transparent_hugepage_defrag" { + type = map(string) + description = "Map of strings containing transparent hugepage defrag node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + 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" diff --git a/modules/beta-private-cluster-update-variant/variables_defaults.tf b/modules/beta-private-cluster-update-variant/variables_defaults.tf index efa9ecedd7..2627ff7739 100644 --- a/modules/beta-private-cluster-update-variant/variables_defaults.tf +++ b/modules/beta-private-cluster-update-variant/variables_defaults.tf @@ -138,6 +138,26 @@ locals { var.node_pools_cgroup_mode ) + node_pools_transparent_hugepage_enabled = 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_transparent_hugepage_enabled + ) + + node_pools_transparent_hugepage_defrag = 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_transparent_hugepage_defrag + ) + node_pools_hugepage_size_2m = merge( { all = "" }, { default-node-pool = "" }, diff --git a/modules/beta-private-cluster/README.md b/modules/beta-private-cluster/README.md index 0eaeb808ab..6b52c3bf95 100644 --- a/modules/beta-private-cluster/README.md +++ b/modules/beta-private-cluster/README.md @@ -273,6 +273,8 @@ Then perform the following commands on the root folder: | node\_pools\_resource\_manager\_tags | Map of maps containing resource manager tags by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_tags | Map of lists containing node network tags by node-pool name | `map(list(string))` |
{
"all": [],
"default-node-pool": []
}
| no | | node\_pools\_taints | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` |
{
"all": [],
"default-node-pool": []
}
| no | +| node\_pools\_transparent\_hugepage\_defrag | Map of strings containing transparent hugepage defrag node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_transparent\_hugepage\_enabled | Map of strings containing transparent hugepage enabled node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | `list(string)` |
[
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
]
| no | | notification\_config\_topic | The desired Pub/Sub topic to which notifications will be sent by GKE. Format is projects/{project}/topics/{topic}. | `string` | `""` | no | | notification\_filter\_event\_type | Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Can be used to filter what notifications are sent. Accepted values are UPGRADE\_AVAILABLE\_EVENT, UPGRADE\_EVENT, and SECURITY\_BULLETIN\_EVENT. | `list(string)` | `[]` | no | diff --git a/modules/beta-private-cluster/cluster.tf b/modules/beta-private-cluster/cluster.tf index 21ba772b57..c86df6c0ae 100644 --- a/modules/beta-private-cluster/cluster.tf +++ b/modules/beta-private-cluster/cluster.tf @@ -1083,6 +1083,10 @@ resource "google_container_node_pool" "pools" { 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_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] }, + local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] }, + local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] }, + local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[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"] }, @@ -1094,7 +1098,9 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) - cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null) + transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null) dynamic "hugepages_config" { for_each = length(merge( local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, diff --git a/modules/beta-private-cluster/metadata.display.yaml b/modules/beta-private-cluster/metadata.display.yaml index da59c10609..e301bb7457 100644 --- a/modules/beta-private-cluster/metadata.display.yaml +++ b/modules/beta-private-cluster/metadata.display.yaml @@ -400,6 +400,12 @@ spec: node_pools_taints: name: node_pools_taints title: Node Pools Taints + node_pools_transparent_hugepage_defrag: + name: node_pools_transparent_hugepage_defrag + title: Node Pools Transparent Hugepage Defrag + node_pools_transparent_hugepage_enabled: + name: node_pools_transparent_hugepage_enabled + title: Node Pools Transparent Hugepage Enabled non_masquerade_cidrs: name: non_masquerade_cidrs title: Non Masquerade Cidrs diff --git a/modules/beta-private-cluster/metadata.yaml b/modules/beta-private-cluster/metadata.yaml index ad5babd51f..306294a71d 100644 --- a/modules/beta-private-cluster/metadata.yaml +++ b/modules/beta-private-cluster/metadata.yaml @@ -277,6 +277,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_transparent_hugepage_enabled + description: Map of strings containing transparent hugepage enabled node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_transparent_hugepage_defrag + description: Map of strings containing transparent hugepage defrag node config by node-pool name + varType: map(string) + 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) diff --git a/modules/beta-private-cluster/variables.tf b/modules/beta-private-cluster/variables.tf index d0486f2d60..2eb80d54ce 100644 --- a/modules/beta-private-cluster/variables.tf +++ b/modules/beta-private-cluster/variables.tf @@ -254,6 +254,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_transparent_hugepage_enabled" { + type = map(string) + description = "Map of strings containing transparent hugepage enabled node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_transparent_hugepage_defrag" { + type = map(string) + description = "Map of strings containing transparent hugepage defrag node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + 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" diff --git a/modules/beta-private-cluster/variables_defaults.tf b/modules/beta-private-cluster/variables_defaults.tf index efa9ecedd7..2627ff7739 100644 --- a/modules/beta-private-cluster/variables_defaults.tf +++ b/modules/beta-private-cluster/variables_defaults.tf @@ -138,6 +138,26 @@ locals { var.node_pools_cgroup_mode ) + node_pools_transparent_hugepage_enabled = 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_transparent_hugepage_enabled + ) + + node_pools_transparent_hugepage_defrag = 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_transparent_hugepage_defrag + ) + node_pools_hugepage_size_2m = merge( { all = "" }, { default-node-pool = "" }, diff --git a/modules/beta-public-cluster-update-variant/README.md b/modules/beta-public-cluster-update-variant/README.md index fa8c66b7fd..91c625c061 100644 --- a/modules/beta-public-cluster-update-variant/README.md +++ b/modules/beta-public-cluster-update-variant/README.md @@ -284,6 +284,8 @@ Then perform the following commands on the root folder: | node\_pools\_resource\_manager\_tags | Map of maps containing resource manager tags by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_tags | Map of lists containing node network tags by node-pool name | `map(list(string))` |
{
"all": [],
"default-node-pool": []
}
| no | | node\_pools\_taints | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` |
{
"all": [],
"default-node-pool": []
}
| no | +| node\_pools\_transparent\_hugepage\_defrag | Map of strings containing transparent hugepage defrag node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_transparent\_hugepage\_enabled | Map of strings containing transparent hugepage enabled node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | `list(string)` |
[
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
]
| no | | notification\_config\_topic | The desired Pub/Sub topic to which notifications will be sent by GKE. Format is projects/{project}/topics/{topic}. | `string` | `""` | no | | notification\_filter\_event\_type | Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Can be used to filter what notifications are sent. Accepted values are UPGRADE\_AVAILABLE\_EVENT, UPGRADE\_EVENT, and SECURITY\_BULLETIN\_EVENT. | `list(string)` | `[]` | no | diff --git a/modules/beta-public-cluster-update-variant/cluster.tf b/modules/beta-public-cluster-update-variant/cluster.tf index 2374da3449..8db30a3a02 100644 --- a/modules/beta-public-cluster-update-variant/cluster.tf +++ b/modules/beta-public-cluster-update-variant/cluster.tf @@ -1147,6 +1147,10 @@ resource "google_container_node_pool" "pools" { 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_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] }, + local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] }, + local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] }, + local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[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"] }, @@ -1158,7 +1162,9 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) - cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null) + transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null) dynamic "hugepages_config" { for_each = length(merge( local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, diff --git a/modules/beta-public-cluster-update-variant/metadata.display.yaml b/modules/beta-public-cluster-update-variant/metadata.display.yaml index 695bdcaec1..750662d7e9 100644 --- a/modules/beta-public-cluster-update-variant/metadata.display.yaml +++ b/modules/beta-public-cluster-update-variant/metadata.display.yaml @@ -385,6 +385,12 @@ spec: node_pools_taints: name: node_pools_taints title: Node Pools Taints + node_pools_transparent_hugepage_defrag: + name: node_pools_transparent_hugepage_defrag + title: Node Pools Transparent Hugepage Defrag + node_pools_transparent_hugepage_enabled: + name: node_pools_transparent_hugepage_enabled + title: Node Pools Transparent Hugepage Enabled non_masquerade_cidrs: name: non_masquerade_cidrs title: Non Masquerade Cidrs diff --git a/modules/beta-public-cluster-update-variant/metadata.yaml b/modules/beta-public-cluster-update-variant/metadata.yaml index f091f86e81..ed4407ca7b 100644 --- a/modules/beta-public-cluster-update-variant/metadata.yaml +++ b/modules/beta-public-cluster-update-variant/metadata.yaml @@ -277,6 +277,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_transparent_hugepage_enabled + description: Map of strings containing transparent hugepage enabled node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_transparent_hugepage_defrag + description: Map of strings containing transparent hugepage defrag node config by node-pool name + varType: map(string) + 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) diff --git a/modules/beta-public-cluster-update-variant/variables.tf b/modules/beta-public-cluster-update-variant/variables.tf index a6bf470c89..b61891d069 100644 --- a/modules/beta-public-cluster-update-variant/variables.tf +++ b/modules/beta-public-cluster-update-variant/variables.tf @@ -254,6 +254,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_transparent_hugepage_enabled" { + type = map(string) + description = "Map of strings containing transparent hugepage enabled node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_transparent_hugepage_defrag" { + type = map(string) + description = "Map of strings containing transparent hugepage defrag node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + 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" diff --git a/modules/beta-public-cluster-update-variant/variables_defaults.tf b/modules/beta-public-cluster-update-variant/variables_defaults.tf index efa9ecedd7..2627ff7739 100644 --- a/modules/beta-public-cluster-update-variant/variables_defaults.tf +++ b/modules/beta-public-cluster-update-variant/variables_defaults.tf @@ -138,6 +138,26 @@ locals { var.node_pools_cgroup_mode ) + node_pools_transparent_hugepage_enabled = 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_transparent_hugepage_enabled + ) + + node_pools_transparent_hugepage_defrag = 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_transparent_hugepage_defrag + ) + node_pools_hugepage_size_2m = merge( { all = "" }, { default-node-pool = "" }, diff --git a/modules/beta-public-cluster/README.md b/modules/beta-public-cluster/README.md index dea625e031..393a63b80f 100644 --- a/modules/beta-public-cluster/README.md +++ b/modules/beta-public-cluster/README.md @@ -262,6 +262,8 @@ Then perform the following commands on the root folder: | node\_pools\_resource\_manager\_tags | Map of maps containing resource manager tags by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_tags | Map of lists containing node network tags by node-pool name | `map(list(string))` |
{
"all": [],
"default-node-pool": []
}
| no | | node\_pools\_taints | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` |
{
"all": [],
"default-node-pool": []
}
| no | +| node\_pools\_transparent\_hugepage\_defrag | Map of strings containing transparent hugepage defrag node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_transparent\_hugepage\_enabled | Map of strings containing transparent hugepage enabled node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | `list(string)` |
[
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
]
| no | | notification\_config\_topic | The desired Pub/Sub topic to which notifications will be sent by GKE. Format is projects/{project}/topics/{topic}. | `string` | `""` | no | | notification\_filter\_event\_type | Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Can be used to filter what notifications are sent. Accepted values are UPGRADE\_AVAILABLE\_EVENT, UPGRADE\_EVENT, and SECURITY\_BULLETIN\_EVENT. | `list(string)` | `[]` | no | diff --git a/modules/beta-public-cluster/cluster.tf b/modules/beta-public-cluster/cluster.tf index 62c877b62e..55cde45efc 100644 --- a/modules/beta-public-cluster/cluster.tf +++ b/modules/beta-public-cluster/cluster.tf @@ -1061,6 +1061,10 @@ resource "google_container_node_pool" "pools" { 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_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] }, + local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] }, + local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] }, + local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[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"] }, @@ -1072,7 +1076,9 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) - cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null) + transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null) dynamic "hugepages_config" { for_each = length(merge( local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, diff --git a/modules/beta-public-cluster/metadata.display.yaml b/modules/beta-public-cluster/metadata.display.yaml index c195e7b846..52d77d1eb8 100644 --- a/modules/beta-public-cluster/metadata.display.yaml +++ b/modules/beta-public-cluster/metadata.display.yaml @@ -385,6 +385,12 @@ spec: node_pools_taints: name: node_pools_taints title: Node Pools Taints + node_pools_transparent_hugepage_defrag: + name: node_pools_transparent_hugepage_defrag + title: Node Pools Transparent Hugepage Defrag + node_pools_transparent_hugepage_enabled: + name: node_pools_transparent_hugepage_enabled + title: Node Pools Transparent Hugepage Enabled non_masquerade_cidrs: name: non_masquerade_cidrs title: Non Masquerade Cidrs diff --git a/modules/beta-public-cluster/metadata.yaml b/modules/beta-public-cluster/metadata.yaml index 6dca265397..2d923c27b8 100644 --- a/modules/beta-public-cluster/metadata.yaml +++ b/modules/beta-public-cluster/metadata.yaml @@ -277,6 +277,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_transparent_hugepage_enabled + description: Map of strings containing transparent hugepage enabled node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_transparent_hugepage_defrag + description: Map of strings containing transparent hugepage defrag node config by node-pool name + varType: map(string) + 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) diff --git a/modules/beta-public-cluster/variables.tf b/modules/beta-public-cluster/variables.tf index a6bf470c89..b61891d069 100644 --- a/modules/beta-public-cluster/variables.tf +++ b/modules/beta-public-cluster/variables.tf @@ -254,6 +254,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_transparent_hugepage_enabled" { + type = map(string) + description = "Map of strings containing transparent hugepage enabled node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_transparent_hugepage_defrag" { + type = map(string) + description = "Map of strings containing transparent hugepage defrag node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + 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" diff --git a/modules/beta-public-cluster/variables_defaults.tf b/modules/beta-public-cluster/variables_defaults.tf index efa9ecedd7..2627ff7739 100644 --- a/modules/beta-public-cluster/variables_defaults.tf +++ b/modules/beta-public-cluster/variables_defaults.tf @@ -138,6 +138,26 @@ locals { var.node_pools_cgroup_mode ) + node_pools_transparent_hugepage_enabled = 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_transparent_hugepage_enabled + ) + + node_pools_transparent_hugepage_defrag = 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_transparent_hugepage_defrag + ) + node_pools_hugepage_size_2m = merge( { all = "" }, { default-node-pool = "" }, diff --git a/modules/gke-node-pool/metadata.display.yaml b/modules/gke-node-pool/metadata.display.yaml index 59c891c4e5..ea5c642218 100644 --- a/modules/gke-node-pool/metadata.display.yaml +++ b/modules/gke-node-pool/metadata.display.yaml @@ -62,9 +62,9 @@ spec: name: name: name title: Name - level: 1 regexValidation: ^[a-z]([a-z0-9-]{0,38}[a-z0-9])?$ validation: Node pool name must start with a lowercase letter followed by up to 39 lowercase letters, numbers, or hyphens and cannot end with a hyphen. + level: 1 name_prefix: name: name_prefix title: Name Prefix diff --git a/modules/private-cluster-update-variant/README.md b/modules/private-cluster-update-variant/README.md index 81dbbaa55d..d3759fc246 100644 --- a/modules/private-cluster-update-variant/README.md +++ b/modules/private-cluster-update-variant/README.md @@ -284,6 +284,8 @@ Then perform the following commands on the root folder: | node\_pools\_resource\_manager\_tags | Map of maps containing resource manager tags by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_tags | Map of lists containing node network tags by node-pool name | `map(list(string))` |
{
"all": [],
"default-node-pool": []
}
| no | | node\_pools\_taints | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` |
{
"all": [],
"default-node-pool": []
}
| no | +| node\_pools\_transparent\_hugepage\_defrag | Map of strings containing transparent hugepage defrag node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_transparent\_hugepage\_enabled | Map of strings containing transparent hugepage enabled node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | `list(string)` |
[
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
]
| no | | notification\_config\_topic | The desired Pub/Sub topic to which notifications will be sent by GKE. Format is projects/{project}/topics/{topic}. | `string` | `""` | no | | notification\_filter\_event\_type | Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Can be used to filter what notifications are sent. Accepted values are UPGRADE\_AVAILABLE\_EVENT, UPGRADE\_EVENT, and SECURITY\_BULLETIN\_EVENT. | `list(string)` | `[]` | no | diff --git a/modules/private-cluster-update-variant/cluster.tf b/modules/private-cluster-update-variant/cluster.tf index 8396d0f52b..10f27833c9 100644 --- a/modules/private-cluster-update-variant/cluster.tf +++ b/modules/private-cluster-update-variant/cluster.tf @@ -1110,6 +1110,10 @@ resource "google_container_node_pool" "pools" { 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_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] }, + local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] }, + local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] }, + local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[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"] }, @@ -1121,7 +1125,9 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) - cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null) + transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null) dynamic "hugepages_config" { for_each = length(merge( local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, diff --git a/modules/private-cluster-update-variant/metadata.display.yaml b/modules/private-cluster-update-variant/metadata.display.yaml index aed100d6e0..91fe12d026 100644 --- a/modules/private-cluster-update-variant/metadata.display.yaml +++ b/modules/private-cluster-update-variant/metadata.display.yaml @@ -376,6 +376,12 @@ spec: node_pools_taints: name: node_pools_taints title: Node Pools Taints + node_pools_transparent_hugepage_defrag: + name: node_pools_transparent_hugepage_defrag + title: Node Pools Transparent Hugepage Defrag + node_pools_transparent_hugepage_enabled: + name: node_pools_transparent_hugepage_enabled + title: Node Pools Transparent Hugepage Enabled non_masquerade_cidrs: name: non_masquerade_cidrs title: Non Masquerade Cidrs diff --git a/modules/private-cluster-update-variant/metadata.yaml b/modules/private-cluster-update-variant/metadata.yaml index b4df61b4be..1b47acd409 100644 --- a/modules/private-cluster-update-variant/metadata.yaml +++ b/modules/private-cluster-update-variant/metadata.yaml @@ -277,6 +277,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_transparent_hugepage_enabled + description: Map of strings containing transparent hugepage enabled node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_transparent_hugepage_defrag + description: Map of strings containing transparent hugepage defrag node config by node-pool name + varType: map(string) + 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) diff --git a/modules/private-cluster-update-variant/variables.tf b/modules/private-cluster-update-variant/variables.tf index aad193c175..ba6864787e 100644 --- a/modules/private-cluster-update-variant/variables.tf +++ b/modules/private-cluster-update-variant/variables.tf @@ -254,6 +254,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_transparent_hugepage_enabled" { + type = map(string) + description = "Map of strings containing transparent hugepage enabled node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_transparent_hugepage_defrag" { + type = map(string) + description = "Map of strings containing transparent hugepage defrag node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + 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" diff --git a/modules/private-cluster-update-variant/variables_defaults.tf b/modules/private-cluster-update-variant/variables_defaults.tf index efa9ecedd7..2627ff7739 100644 --- a/modules/private-cluster-update-variant/variables_defaults.tf +++ b/modules/private-cluster-update-variant/variables_defaults.tf @@ -138,6 +138,26 @@ locals { var.node_pools_cgroup_mode ) + node_pools_transparent_hugepage_enabled = 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_transparent_hugepage_enabled + ) + + node_pools_transparent_hugepage_defrag = 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_transparent_hugepage_defrag + ) + node_pools_hugepage_size_2m = merge( { all = "" }, { default-node-pool = "" }, diff --git a/modules/private-cluster/README.md b/modules/private-cluster/README.md index d2082e617a..dccd4b354d 100644 --- a/modules/private-cluster/README.md +++ b/modules/private-cluster/README.md @@ -262,6 +262,8 @@ Then perform the following commands on the root folder: | node\_pools\_resource\_manager\_tags | Map of maps containing resource manager tags by node-pool name | `map(map(string))` |
{
"all": {},
"default-node-pool": {}
}
| no | | node\_pools\_tags | Map of lists containing node network tags by node-pool name | `map(list(string))` |
{
"all": [],
"default-node-pool": []
}
| no | | node\_pools\_taints | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` |
{
"all": [],
"default-node-pool": []
}
| no | +| node\_pools\_transparent\_hugepage\_defrag | Map of strings containing transparent hugepage defrag node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | +| node\_pools\_transparent\_hugepage\_enabled | Map of strings containing transparent hugepage enabled node config by node-pool name | `map(string)` |
{
"all": "",
"default-node-pool": ""
}
| no | | non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | `list(string)` |
[
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16"
]
| no | | notification\_config\_topic | The desired Pub/Sub topic to which notifications will be sent by GKE. Format is projects/{project}/topics/{topic}. | `string` | `""` | no | | notification\_filter\_event\_type | Choose what type of notifications you want to receive. If no filters are applied, you'll receive all notification types. Can be used to filter what notifications are sent. Accepted values are UPGRADE\_AVAILABLE\_EVENT, UPGRADE\_EVENT, and SECURITY\_BULLETIN\_EVENT. | `list(string)` | `[]` | no | diff --git a/modules/private-cluster/cluster.tf b/modules/private-cluster/cluster.tf index d310ff5104..19d82caabd 100644 --- a/modules/private-cluster/cluster.tf +++ b/modules/private-cluster/cluster.tf @@ -1025,6 +1025,10 @@ resource "google_container_node_pool" "pools" { 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_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] }, + local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] }, + local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] }, + local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[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"] }, @@ -1036,7 +1040,9 @@ resource "google_container_node_pool" "pools" { local.node_pools_linux_node_configs_sysctls["all"], local.node_pools_linux_node_configs_sysctls[each.value["name"]] ) - cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null) + transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null) + transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null) dynamic "hugepages_config" { for_each = length(merge( local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] }, diff --git a/modules/private-cluster/metadata.display.yaml b/modules/private-cluster/metadata.display.yaml index cb477ee70a..91aa9c970b 100644 --- a/modules/private-cluster/metadata.display.yaml +++ b/modules/private-cluster/metadata.display.yaml @@ -376,6 +376,12 @@ spec: node_pools_taints: name: node_pools_taints title: Node Pools Taints + node_pools_transparent_hugepage_defrag: + name: node_pools_transparent_hugepage_defrag + title: Node Pools Transparent Hugepage Defrag + node_pools_transparent_hugepage_enabled: + name: node_pools_transparent_hugepage_enabled + title: Node Pools Transparent Hugepage Enabled non_masquerade_cidrs: name: non_masquerade_cidrs title: Non Masquerade Cidrs diff --git a/modules/private-cluster/metadata.yaml b/modules/private-cluster/metadata.yaml index a61a09e58b..7710d3f5b9 100644 --- a/modules/private-cluster/metadata.yaml +++ b/modules/private-cluster/metadata.yaml @@ -277,6 +277,18 @@ spec: defaultValue: all: "" default-node-pool: "" + - name: node_pools_transparent_hugepage_enabled + description: Map of strings containing transparent hugepage enabled node config by node-pool name + varType: map(string) + defaultValue: + all: "" + default-node-pool: "" + - name: node_pools_transparent_hugepage_defrag + description: Map of strings containing transparent hugepage defrag node config by node-pool name + varType: map(string) + 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) diff --git a/modules/private-cluster/variables.tf b/modules/private-cluster/variables.tf index aad193c175..ba6864787e 100644 --- a/modules/private-cluster/variables.tf +++ b/modules/private-cluster/variables.tf @@ -254,6 +254,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_transparent_hugepage_enabled" { + type = map(string) + description = "Map of strings containing transparent hugepage enabled node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_transparent_hugepage_defrag" { + type = map(string) + description = "Map of strings containing transparent hugepage defrag node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + 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" diff --git a/modules/private-cluster/variables_defaults.tf b/modules/private-cluster/variables_defaults.tf index efa9ecedd7..2627ff7739 100644 --- a/modules/private-cluster/variables_defaults.tf +++ b/modules/private-cluster/variables_defaults.tf @@ -138,6 +138,26 @@ locals { var.node_pools_cgroup_mode ) + node_pools_transparent_hugepage_enabled = 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_transparent_hugepage_enabled + ) + + node_pools_transparent_hugepage_defrag = 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_transparent_hugepage_defrag + ) + node_pools_hugepage_size_2m = merge( { all = "" }, { default-node-pool = "" }, diff --git a/test/integration/node_pool/testdata/TestNodePool.json b/test/integration/node_pool/testdata/TestNodePool.json index 7c0ea673c2..3a3141defb 100644 --- a/test/integration/node_pool/testdata/TestNodePool.json +++ b/test/integration/node_pool/testdata/TestNodePool.json @@ -335,7 +335,8 @@ }, "hugepages": { "hugepageSize2m": "2" - } + }, + "transparentHugepageEnabled": "TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS" }, "loggingConfig": { "variantConfig": { @@ -435,7 +436,8 @@ }, "hugepages": { "hugepageSize2m": "1" - } + }, + "transparentHugepageEnabled": "TRANSPARENT_HUGEPAGE_ENABLED_NEVER" }, "loggingConfig": { "variantConfig": { @@ -524,7 +526,8 @@ }, "hugepages": { "hugepageSize2m": "1" - } + }, + "transparentHugepageEnabled": "TRANSPARENT_HUGEPAGE_ENABLED_NEVER" }, "loggingConfig": { "variantConfig": { @@ -620,7 +623,8 @@ }, "hugepages": { "hugepageSize2m": "1" - } + }, + "transparentHugepageEnabled": "TRANSPARENT_HUGEPAGE_ENABLED_NEVER" }, "loggingConfig": { "variantConfig": { @@ -717,7 +721,9 @@ "hugepages": { "hugepageSize2m": "1", "hugepageSize1g": "2" - } + }, + "transparentHugepageEnabled": "TRANSPARENT_HUGEPAGE_ENABLED_NEVER", + "transparentHugepageDefrag": "TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS" }, "loggingConfig": { "variantConfig": { diff --git a/variables.tf b/variables.tf index 1321cc28f4..9fd4bc2edd 100644 --- a/variables.tf +++ b/variables.tf @@ -254,6 +254,28 @@ variable "node_pools_cgroup_mode" { } } +variable "node_pools_transparent_hugepage_enabled" { + type = map(string) + description = "Map of strings containing transparent hugepage enabled node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + default-node-pool = "" + } +} + +variable "node_pools_transparent_hugepage_defrag" { + type = map(string) + description = "Map of strings containing transparent hugepage defrag node config by node-pool name" + + # Default is being set in variables_defaults.tf + default = { + all = "" + 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" diff --git a/variables_defaults.tf b/variables_defaults.tf index efa9ecedd7..2627ff7739 100644 --- a/variables_defaults.tf +++ b/variables_defaults.tf @@ -138,6 +138,26 @@ locals { var.node_pools_cgroup_mode ) + node_pools_transparent_hugepage_enabled = 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_transparent_hugepage_enabled + ) + + node_pools_transparent_hugepage_defrag = 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_transparent_hugepage_defrag + ) + node_pools_hugepage_size_2m = merge( { all = "" }, { default-node-pool = "" },