From e29bfe7921bb7a2c4551f65116e4223b18ee4c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Petazzoni?= Date: Sat, 13 May 2023 08:19:19 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Improve=20mk8s=20Terraform=20con?= =?UTF-8?q?figuration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - instead of using 'kubectl wait nodes', we now use a simpler 'kubectl get nodes -o name' and check if there is anything in the output. This seems to work better (as the previous method would sometimes remain stuck because the kubectl process would never get stopped by SIGPIPE). - the shpod SSH NodePort is no longer hard-coded to 32222, which allows us to use e.g. vcluster to deploy multiple Kubernetes labs on a single 'home' (or 'outer') Kubernetes cluster. --- prepare-labs/terraform/many-kubernetes/main.tf | 2 +- prepare-labs/terraform/many-kubernetes/stage2.tmpl | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/prepare-labs/terraform/many-kubernetes/main.tf b/prepare-labs/terraform/many-kubernetes/main.tf index 97110d0a..34ebb0ce 100644 --- a/prepare-labs/terraform/many-kubernetes/main.tf +++ b/prepare-labs/terraform/many-kubernetes/main.tf @@ -62,7 +62,7 @@ resource "null_resource" "wait_for_nodes" { } command = <<-EOT while sleep 1; do - kubectl get nodes --watch | grep --silent --line-buffered . && + kubectl get nodes -o name | grep --silent . && kubectl wait node --for=condition=Ready --all --timeout=10m && break done diff --git a/prepare-labs/terraform/many-kubernetes/stage2.tmpl b/prepare-labs/terraform/many-kubernetes/stage2.tmpl index bef04225..4e11813b 100644 --- a/prepare-labs/terraform/many-kubernetes/stage2.tmpl +++ b/prepare-labs/terraform/many-kubernetes/stage2.tmpl @@ -90,7 +90,6 @@ resource "kubernetes_service" "shpod_${index}" { name = "ssh" port = 22 target_port = 22 - node_port = 32222 } type = "NodePort" } @@ -222,7 +221,10 @@ output "ip_addresses_of_nodes" { value = join("\n", [ %{ for index, cluster in clusters ~} join("\t", concat( - [ random_string.shpod_${index}.result, "ssh -l k8s -p 32222" ], + [ + random_string.shpod_${index}.result, + "ssh -l k8s -p $${kubernetes_service.shpod_${index}.spec[0].port[0].node_port}" + ], split(" ", file("./externalips.${index}")) )), %{ endfor ~}