Skip to content

Commit 73f39df

Browse files
feat: Add support for gVisor per node pool (#1001)
* feat: Add support for gVisor per node pool * fix image type, add test Co-authored-by: Bharath KKB <[email protected]>
1 parent 2c4a2b1 commit 73f39df

File tree

7 files changed

+55
-16
lines changed

7 files changed

+55
-16
lines changed

autogen/main/cluster.tf.tmpl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,9 @@ resource "google_container_node_pool" "pools" {
449449
{% endif %}
450450

451451
node_config {
452+
{% if beta_cluster %}
453+
image_type = lookup(each.value, "image_type", lookup(each.value, "sandbox_enabled", var.sandbox_enabled) ? "COS_CONTAINERD" : "COS")
454+
{% else %}
452455
image_type = lookup(each.value, "image_type", "COS")
453456
machine_type = lookup(each.value, "machine_type", "e2-medium")
454457
labels = merge(
@@ -519,8 +522,7 @@ resource "google_container_node_pool" "pools" {
519522
}
520523
{% if beta_cluster %}
521524
dynamic "sandbox_config" {
522-
for_each = local.cluster_sandbox_enabled
523-
525+
for_each = tobool((lookup(each.value, "sandbox_enabled", var.sandbox_enabled))) ? ["gvisor"] : []
524526
content {
525527
sandbox_type = sandbox_config.value
526528
}

examples/node_pool/main.tf

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,15 @@ module "gke" {
6262
},
6363
{
6464
name = "pool-03"
65+
machine_type = "n1-standard-2"
6566
node_locations = "${var.region}-b,${var.region}-c"
6667
autoscaling = false
6768
node_count = 2
6869
disk_type = "pd-standard"
69-
image_type = "COS"
7070
auto_upgrade = true
7171
service_account = var.compute_engine_service_account
72+
pod_range = "test"
73+
sandbox_enabled = true
7274
},
7375
]
7476

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ resource "google_container_node_pool" "pools" {
406406
}
407407

408408
node_config {
409-
image_type = lookup(each.value, "image_type", "COS")
409+
image_type = lookup(each.value, "image_type", lookup(each.value, "sandbox_enabled", var.sandbox_enabled) ? "COS_CONTAINERD" : "COS")
410410
machine_type = lookup(each.value, "machine_type", "e2-medium")
411411
labels = merge(
412412
lookup(lookup(local.node_pools_labels, "default_values", {}), "cluster_name", true) ? { "cluster_name" = var.name } : {},
@@ -475,8 +475,7 @@ resource "google_container_node_pool" "pools" {
475475
}
476476
}
477477
dynamic "sandbox_config" {
478-
for_each = local.cluster_sandbox_enabled
479-
478+
for_each = tobool((lookup(each.value, "sandbox_enabled", var.sandbox_enabled))) ? ["gvisor"] : []
480479
content {
481480
sandbox_type = sandbox_config.value
482481
}

modules/beta-private-cluster/cluster.tf

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ resource "google_container_node_pool" "pools" {
334334
}
335335

336336
node_config {
337-
image_type = lookup(each.value, "image_type", "COS")
337+
image_type = lookup(each.value, "image_type", lookup(each.value, "sandbox_enabled", var.sandbox_enabled) ? "COS_CONTAINERD" : "COS")
338338
machine_type = lookup(each.value, "machine_type", "e2-medium")
339339
labels = merge(
340340
lookup(lookup(local.node_pools_labels, "default_values", {}), "cluster_name", true) ? { "cluster_name" = var.name } : {},
@@ -403,8 +403,7 @@ resource "google_container_node_pool" "pools" {
403403
}
404404
}
405405
dynamic "sandbox_config" {
406-
for_each = local.cluster_sandbox_enabled
407-
406+
for_each = tobool((lookup(each.value, "sandbox_enabled", var.sandbox_enabled))) ? ["gvisor"] : []
408407
content {
409408
sandbox_type = sandbox_config.value
410409
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ resource "google_container_node_pool" "pools" {
387387
}
388388

389389
node_config {
390-
image_type = lookup(each.value, "image_type", "COS")
390+
image_type = lookup(each.value, "image_type", lookup(each.value, "sandbox_enabled", var.sandbox_enabled) ? "COS_CONTAINERD" : "COS")
391391
machine_type = lookup(each.value, "machine_type", "e2-medium")
392392
labels = merge(
393393
lookup(lookup(local.node_pools_labels, "default_values", {}), "cluster_name", true) ? { "cluster_name" = var.name } : {},
@@ -456,8 +456,7 @@ resource "google_container_node_pool" "pools" {
456456
}
457457
}
458458
dynamic "sandbox_config" {
459-
for_each = local.cluster_sandbox_enabled
460-
459+
for_each = tobool((lookup(each.value, "sandbox_enabled", var.sandbox_enabled))) ? ["gvisor"] : []
461460
content {
462461
sandbox_type = sandbox_config.value
463462
}

modules/beta-public-cluster/cluster.tf

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ resource "google_container_node_pool" "pools" {
315315
}
316316

317317
node_config {
318-
image_type = lookup(each.value, "image_type", "COS")
318+
image_type = lookup(each.value, "image_type", lookup(each.value, "sandbox_enabled", var.sandbox_enabled) ? "COS_CONTAINERD" : "COS")
319319
machine_type = lookup(each.value, "machine_type", "e2-medium")
320320
labels = merge(
321321
lookup(lookup(local.node_pools_labels, "default_values", {}), "cluster_name", true) ? { "cluster_name" = var.name } : {},
@@ -384,8 +384,7 @@ resource "google_container_node_pool" "pools" {
384384
}
385385
}
386386
dynamic "sandbox_config" {
387-
for_each = local.cluster_sandbox_enabled
388-
387+
for_each = tobool((lookup(each.value, "sandbox_enabled", var.sandbox_enabled))) ? ["gvisor"] : []
389388
content {
390389
sandbox_type = sandbox_config.value
391390
}

test/integration/node_pool/controls/gcloud.rb

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@
319319
including(
320320
"name" => "pool-03",
321321
"config" => including(
322-
"machineType" => "e2-medium",
322+
"machineType" => "n1-standard-2",
323323
),
324324
)
325325
)
@@ -376,6 +376,7 @@
376376
"all-pools-example" => "true",
377377
"cluster_name" => cluster_name,
378378
"node_pool" => "pool-03",
379+
"sandbox.gke.io/runtime"=>"gvisor"
379380
},
380381
),
381382
)
@@ -396,6 +397,44 @@
396397
)
397398
)
398399
end
400+
401+
it "has the expected pod range" do
402+
expect(data['nodePools']).to include(
403+
including(
404+
"name" => "pool-03",
405+
"networkConfig" => including(
406+
"podIpv4CidrBlock" => "172.16.0.0/18",
407+
"podRange" => "test"
408+
)
409+
)
410+
)
411+
end
412+
413+
it "has the expected image" do
414+
expect(data['nodePools']).to include(
415+
including(
416+
"name" => "pool-03",
417+
"config" => including(
418+
"imageType" => "COS_CONTAINERD",
419+
),
420+
)
421+
)
422+
end
423+
424+
it "has the expected linux node config sysctls" do
425+
expect(data['nodePools']).to include(
426+
including(
427+
"name" => "pool-03",
428+
"config" => including(
429+
"linuxNodeConfig" => including(
430+
"sysctls" => including(
431+
"net.core.netdev_max_backlog" => "20000"
432+
)
433+
)
434+
)
435+
)
436+
)
437+
end
399438
end
400439
end
401440
end

0 commit comments

Comments
 (0)