From 0e4d7df9fc199038549971ee37931d1fd234e0b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Petazzoni?= Date: Fri, 27 Jun 2025 17:39:55 +0200 Subject: [PATCH] =?UTF-8?q?=E2=8F=AB=20Update=20Terraform=20Helm=20provide?= =?UTF-8?q?r=20to=203.X?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terraform/many-kubernetes/stage2.tmpl | 82 +++++++++---------- .../terraform/many-kubernetes/variables.tf | 2 +- .../terraform/one-kubernetes/scaleway/main.tf | 2 +- .../terraform/one-kubernetes/vcluster/main.tf | 39 +++++---- .../one-kubernetes/vcluster/provider.tf | 8 ++ .../terraform/providers/vcluster/config.tf | 2 +- 6 files changed, 71 insertions(+), 64 deletions(-) diff --git a/prepare-labs/terraform/many-kubernetes/stage2.tmpl b/prepare-labs/terraform/many-kubernetes/stage2.tmpl index c3f1d441..ab29eb4e 100644 --- a/prepare-labs/terraform/many-kubernetes/stage2.tmpl +++ b/prepare-labs/terraform/many-kubernetes/stage2.tmpl @@ -4,6 +4,10 @@ terraform { source = "hashicorp/kubernetes" version = "2.16.1" } + helm = { + source = "hashicorp/helm" + version = "~> 3.0" + } } } @@ -16,7 +20,7 @@ provider "kubernetes" { provider "helm" { alias = "cluster_${index}" - kubernetes { + kubernetes = { config_path = "./kubeconfig.${index}" } } @@ -51,42 +55,37 @@ resource "helm_release" "shpod_${index}" { name = "shpod" namespace = "shpod" create_namespace = false - set { - name = "service.type" - value = "NodePort" - } - set { - name = "resources.requests.cpu" - value = "100m" - } - set { - name = "resources.requests.memory" - value = "500M" - } - set { - name = "resources.limits.cpu" - value = "1" - } - set { - name = "resources.limits.memory" - value = "1000M" - } - set { - name = "persistentVolume.enabled" - value = "true" - } - set { - name = "ssh.password" - value = random_string.shpod_${index}.result - } - set { - name = "rbac.cluster.clusterRoles" - value = "{cluster-admin}" - } - set { - name = "codeServer.enabled" - value = "true" - } + values = [ + yamlencode({ + service = { + type = "NodePort" + } + resources = { + requests = { + cpu = "100m" + memory = "500M" + } + limits = { + cpu = "1" + memory = "1000M" + } + } + persistentVolume = { + enabled = true + } + ssh = { + password = random_string.shpod_${index}.result + } + rbac = { + cluster = { + clusterRoles = [ "cluster-admin" ] + } + } + codeServer = { + enabled = true + } + }) + ] } resource "helm_release" "metrics_server_${index}" { @@ -101,10 +100,11 @@ resource "helm_release" "metrics_server_${index}" { name = "metrics-server" namespace = "metrics-server" create_namespace = true - set { - name = "args" - value = "{--kubelet-insecure-tls}" - } + values = [ + yamlencode({ + args = [ "--kubelet-insecure-tls" ] + }) + ] } # This section here deserves a little explanation. diff --git a/prepare-labs/terraform/many-kubernetes/variables.tf b/prepare-labs/terraform/many-kubernetes/variables.tf index cae05b9c..a0df2ac3 100644 --- a/prepare-labs/terraform/many-kubernetes/variables.tf +++ b/prepare-labs/terraform/many-kubernetes/variables.tf @@ -23,7 +23,7 @@ variable "node_size" { } variable "location" { - type = string + type = string default = null } diff --git a/prepare-labs/terraform/one-kubernetes/scaleway/main.tf b/prepare-labs/terraform/one-kubernetes/scaleway/main.tf index a1b6a4eb..bd931ee8 100644 --- a/prepare-labs/terraform/one-kubernetes/scaleway/main.tf +++ b/prepare-labs/terraform/one-kubernetes/scaleway/main.tf @@ -30,7 +30,7 @@ resource "scaleway_k8s_pool" "_" { max_size = var.max_nodes_per_pool autoscaling = var.max_nodes_per_pool > var.min_nodes_per_pool autohealing = true - depends_on = [ scaleway_instance_security_group._ ] + depends_on = [scaleway_instance_security_group._] } data "scaleway_k8s_version" "_" { diff --git a/prepare-labs/terraform/one-kubernetes/vcluster/main.tf b/prepare-labs/terraform/one-kubernetes/vcluster/main.tf index 12e036c0..e7431108 100644 --- a/prepare-labs/terraform/one-kubernetes/vcluster/main.tf +++ b/prepare-labs/terraform/one-kubernetes/vcluster/main.tf @@ -5,24 +5,23 @@ resource "helm_release" "_" { repository = "https://charts.loft.sh" chart = "vcluster" version = "0.19.7" - set { - name = "service.type" - value = "NodePort" - } - set { - name = "storage.persistence" - value = "false" - } - set { - name = "sync.nodes.enabled" - value = "true" - } - set { - name = "sync.nodes.syncAllNodes" - value = "true" - } - set { - name = "syncer.extraArgs" - value = "{--tls-san=${local.guest_api_server_host}}" - } + values = [ + yamlencode({ + service = { + type = "NodePort" + } + storage = { + persistence = false + } + sync = { + nodes = { + enabled = true + syncAllNodes = true + } + } + syncer = { + extraArgs = ["--tls-san=${local.guest_api_server_host}"] + } + }) + ] } diff --git a/prepare-labs/terraform/one-kubernetes/vcluster/provider.tf b/prepare-labs/terraform/one-kubernetes/vcluster/provider.tf index e69de29b..94681f0d 100644 --- a/prepare-labs/terraform/one-kubernetes/vcluster/provider.tf +++ b/prepare-labs/terraform/one-kubernetes/vcluster/provider.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + helm = { + source = "hashicorp/helm" + version = "~> 3.0" + } + } +} diff --git a/prepare-labs/terraform/providers/vcluster/config.tf b/prepare-labs/terraform/providers/vcluster/config.tf index c11f6337..84c29356 100644 --- a/prepare-labs/terraform/providers/vcluster/config.tf +++ b/prepare-labs/terraform/providers/vcluster/config.tf @@ -1,5 +1,5 @@ provider "helm" { - kubernetes { + kubernetes = { config_path = "~/kubeconfig" } }