Skip to content

Commit 8297521

Browse files
authored
feat: add support for transparent huge pages configs (#2464)
Signed-off-by: drfaust92 <ilia.lazebnik@gmail.com>
1 parent ceb2efd commit 8297521

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+553
-14
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,8 @@ Then perform the following commands on the root folder:
251251
| node\_pools\_resource\_manager\_tags | Map of maps containing resource manager tags by node-pool name | `map(map(string))` | <pre>{<br> "all": {},<br> "default-node-pool": {}<br>}</pre> | no |
252252
| node\_pools\_tags | Map of lists containing node network tags by node-pool name | `map(list(string))` | <pre>{<br> "all": [],<br> "default-node-pool": []<br>}</pre> | no |
253253
| node\_pools\_taints | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` | <pre>{<br> "all": [],<br> "default-node-pool": []<br>}</pre> | no |
254+
| node\_pools\_transparent\_hugepage\_defrag | Map of strings containing transparent hugepage defrag node config by node-pool name | `map(string)` | <pre>{<br> "all": "",<br> "default-node-pool": ""<br>}</pre> | no |
255+
| node\_pools\_transparent\_hugepage\_enabled | Map of strings containing transparent hugepage enabled node config by node-pool name | `map(string)` | <pre>{<br> "all": "",<br> "default-node-pool": ""<br>}</pre> | no |
254256
| non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | `list(string)` | <pre>[<br> "10.0.0.0/8",<br> "172.16.0.0/12",<br> "192.168.0.0/16"<br>]</pre> | no |
255257
| notification\_config\_topic | The desired Pub/Sub topic to which notifications will be sent by GKE. Format is projects/{project}/topics/{topic}. | `string` | `""` | no |
256258
| 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 |

autogen/main/cluster.tf.tmpl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1321,6 +1321,10 @@ resource "google_container_node_pool" "windows_pools" {
13211321
local.node_pools_linux_node_configs_sysctls[each.value["name"]],
13221322
local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] },
13231323
local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : {cgroup = local.node_pools_cgroup_mode[each.value["name"]]},
1324+
local.node_pools_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] },
1325+
local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] },
1326+
local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] },
1327+
local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[each.value["name"]] },
13241328
local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] },
13251329
local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] },
13261330
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" {
13321336
local.node_pools_linux_node_configs_sysctls["all"],
13331337
local.node_pools_linux_node_configs_sysctls[each.value["name"]]
13341338
)
1335-
cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null)
1339+
cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null)
1340+
transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null)
1341+
transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null)
13361342
dynamic "hugepages_config" {
13371343
for_each = length(merge(
13381344
local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] },

autogen/main/variables.tf.tmpl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,28 @@ variable "node_pools_cgroup_mode" {
274274
}
275275
}
276276

277+
variable "node_pools_transparent_hugepage_enabled" {
278+
type = map(string)
279+
description = "Map of strings containing transparent hugepage enabled node config by node-pool name"
280+
281+
# Default is being set in variables_defaults.tf
282+
default = {
283+
all = ""
284+
default-node-pool = ""
285+
}
286+
}
287+
288+
variable "node_pools_transparent_hugepage_defrag" {
289+
type = map(string)
290+
description = "Map of strings containing transparent hugepage defrag node config by node-pool name"
291+
292+
# Default is being set in variables_defaults.tf
293+
default = {
294+
all = ""
295+
default-node-pool = ""
296+
}
297+
}
298+
277299
variable "node_pools_hugepage_size_2m" {
278300
type = map(string)
279301
description = "Map of strings containing hugepage size 2m node config by node-pool name"

autogen/main/variables_defaults.tf.tmpl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,26 @@ locals {
139139
var.node_pools_cgroup_mode
140140
)
141141

142+
node_pools_transparent_hugepage_enabled = merge(
143+
{ all = "" },
144+
{ default-node-pool = "" },
145+
zipmap(
146+
[for node_pool in var.node_pools : node_pool["name"]],
147+
[for node_pool in var.node_pools : ""]
148+
),
149+
var.node_pools_transparent_hugepage_enabled
150+
)
151+
152+
node_pools_transparent_hugepage_defrag = merge(
153+
{ all = "" },
154+
{ default-node-pool = "" },
155+
zipmap(
156+
[for node_pool in var.node_pools : node_pool["name"]],
157+
[for node_pool in var.node_pools : ""]
158+
),
159+
var.node_pools_transparent_hugepage_defrag
160+
)
161+
142162
node_pools_hugepage_size_2m = merge(
143163
{ all = "" },
144164
{ default-node-pool = "" },

cluster.tf

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,10 @@ resource "google_container_node_pool" "pools" {
10031003
local.node_pools_linux_node_configs_sysctls[each.value["name"]],
10041004
local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] },
10051005
local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] },
1006+
local.node_pools_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] },
1007+
local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] },
1008+
local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] },
1009+
local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[each.value["name"]] },
10061010
local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] },
10071011
local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] },
10081012
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" {
10141018
local.node_pools_linux_node_configs_sysctls["all"],
10151019
local.node_pools_linux_node_configs_sysctls[each.value["name"]]
10161020
)
1017-
cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null)
1021+
cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null)
1022+
transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null)
1023+
transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null)
10181024
dynamic "hugepages_config" {
10191025
for_each = length(merge(
10201026
local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] },

examples/node_pool/main.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,15 @@ module "gke" {
193193
node_pools_hugepage_size_1g = {
194194
pool-05 = "2"
195195
}
196+
197+
node_pools_transparent_hugepage_enabled = {
198+
all = "TRANSPARENT_HUGEPAGE_ENABLED_NEVER"
199+
pool-01 = "TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS"
200+
}
201+
202+
node_pools_transparent_hugepage_defrag = {
203+
pool-05 = "TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS"
204+
}
196205
}
197206

198207
resource "google_compute_node_template" "soletenant-tmpl" {

metadata.display.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,12 @@ spec:
360360
node_pools_taints:
361361
name: node_pools_taints
362362
title: Node Pools Taints
363+
node_pools_transparent_hugepage_defrag:
364+
name: node_pools_transparent_hugepage_defrag
365+
title: Node Pools Transparent Hugepage Defrag
366+
node_pools_transparent_hugepage_enabled:
367+
name: node_pools_transparent_hugepage_enabled
368+
title: Node Pools Transparent Hugepage Enabled
363369
non_masquerade_cidrs:
364370
name: non_masquerade_cidrs
365371
title: Non Masquerade Cidrs

metadata.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,18 @@ spec:
317317
defaultValue:
318318
all: ""
319319
default-node-pool: ""
320+
- name: node_pools_transparent_hugepage_enabled
321+
description: Map of strings containing transparent hugepage enabled node config by node-pool name
322+
varType: map(string)
323+
defaultValue:
324+
all: ""
325+
default-node-pool: ""
326+
- name: node_pools_transparent_hugepage_defrag
327+
description: Map of strings containing transparent hugepage defrag node config by node-pool name
328+
varType: map(string)
329+
defaultValue:
330+
all: ""
331+
default-node-pool: ""
320332
- name: node_pools_hugepage_size_2m
321333
description: Map of strings containing hugepage size 2m node config by node-pool name
322334
varType: map(string)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,8 @@ Then perform the following commands on the root folder:
295295
| node\_pools\_resource\_manager\_tags | Map of maps containing resource manager tags by node-pool name | `map(map(string))` | <pre>{<br> "all": {},<br> "default-node-pool": {}<br>}</pre> | no |
296296
| node\_pools\_tags | Map of lists containing node network tags by node-pool name | `map(list(string))` | <pre>{<br> "all": [],<br> "default-node-pool": []<br>}</pre> | no |
297297
| node\_pools\_taints | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` | <pre>{<br> "all": [],<br> "default-node-pool": []<br>}</pre> | no |
298+
| node\_pools\_transparent\_hugepage\_defrag | Map of strings containing transparent hugepage defrag node config by node-pool name | `map(string)` | <pre>{<br> "all": "",<br> "default-node-pool": ""<br>}</pre> | no |
299+
| node\_pools\_transparent\_hugepage\_enabled | Map of strings containing transparent hugepage enabled node config by node-pool name | `map(string)` | <pre>{<br> "all": "",<br> "default-node-pool": ""<br>}</pre> | no |
298300
| non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | `list(string)` | <pre>[<br> "10.0.0.0/8",<br> "172.16.0.0/12",<br> "192.168.0.0/16"<br>]</pre> | no |
299301
| notification\_config\_topic | The desired Pub/Sub topic to which notifications will be sent by GKE. Format is projects/{project}/topics/{topic}. | `string` | `""` | no |
300302
| 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 |

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1169,6 +1169,10 @@ resource "google_container_node_pool" "pools" {
11691169
local.node_pools_linux_node_configs_sysctls[each.value["name"]],
11701170
local.node_pools_cgroup_mode["all"] == "" ? {} : { cgroup = local.node_pools_cgroup_mode["all"] },
11711171
local.node_pools_cgroup_mode[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_cgroup_mode[each.value["name"]] },
1172+
local.node_pools_transparent_hugepage_enabled["all"] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled["all"] },
1173+
local.node_pools_transparent_hugepage_enabled[each.value["name"]] == "" ? {} : { transparent_hugepage_enabled = local.node_pools_transparent_hugepage_enabled[each.value["name"]] },
1174+
local.node_pools_transparent_hugepage_defrag["all"] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag["all"] },
1175+
local.node_pools_transparent_hugepage_defrag[each.value["name"]] == "" ? {} : { transparent_hugepage_defrag = local.node_pools_transparent_hugepage_defrag[each.value["name"]] },
11721176
local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] },
11731177
local.node_pools_hugepage_size_2m[each.value["name"]] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m[each.value["name"]] },
11741178
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" {
11801184
local.node_pools_linux_node_configs_sysctls["all"],
11811185
local.node_pools_linux_node_configs_sysctls[each.value["name"]]
11821186
)
1183-
cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null)
1187+
cgroup_mode = try(coalesce(local.node_pools_cgroup_mode[each.value["name"]], local.node_pools_cgroup_mode["all"]), null)
1188+
transparent_hugepage_enabled = try(coalesce(local.node_pools_transparent_hugepage_enabled[each.value["name"]], local.node_pools_transparent_hugepage_enabled["all"]), null)
1189+
transparent_hugepage_defrag = try(coalesce(local.node_pools_transparent_hugepage_defrag[each.value["name"]], local.node_pools_transparent_hugepage_defrag["all"]), null)
11841190
dynamic "hugepages_config" {
11851191
for_each = length(merge(
11861192
local.node_pools_hugepage_size_2m["all"] == "" ? {} : { cgroup = local.node_pools_hugepage_size_2m["all"] },

0 commit comments

Comments
 (0)