diff --git a/main.tf b/main.tf index e69de29..041cd7f 100644 --- a/main.tf +++ b/main.tf @@ -0,0 +1,30 @@ +# getting lastest supported k8s version +data "scaleway_k8s_version" "latest" { + name = "latest" + region = "fr-par" +} + +resource "scaleway_k8s_cluster" "cluster" { + name = var.cluster_name + + # versions have the form region/version, so trimming the region part + version = trimprefix(data.scaleway_k8s_version.latest.id, "fr-par/") + cni = "cilium" + + region = "fr-par" + + # referencing the created network + private_network_id = scaleway_vpc_private_network.network.id + + # set to true to delete all that wes created when destroying the cluster + delete_additional_resources = true +} + +resource "scaleway_k8s_pool" "pool" { + # referencing the created cluster id + cluster_id = scaleway_k8s_cluster.cluster.id + + name = "${var.node_type}-pool" + node_type = var.node_type + size = var.node_count +} diff --git a/networks.tf b/networks.tf index e69de29..8ddad52 100644 --- a/networks.tf +++ b/networks.tf @@ -0,0 +1,8 @@ +# scaleway cluster needs a private network +resource "scaleway_vpc_private_network" "network" { + name = "k8s-network" + + ipv4_subnet { + subnet = "10.50.70.0/24" + } +} diff --git a/outputs.tf b/outputs.tf index e69de29..45808c7 100644 --- a/outputs.tf +++ b/outputs.tf @@ -0,0 +1,4 @@ +output "cluster_kubeconfig" { + description = "the contents of generated KUBECONFIG file" + value = nonsensitive(scaleway_k8s_cluster.cluster.kubeconfig[0].config_file) +} \ No newline at end of file diff --git a/provider.tf b/provider.tf index e69de29..a94dd9f 100644 --- a/provider.tf +++ b/provider.tf @@ -0,0 +1,9 @@ +terraform { + required_providers { + scaleway = { + source = "scaleway/scaleway" + version = "~> 2.41.0" + } + } + required_version = ">= 1.8" +} \ No newline at end of file diff --git a/variables.tf b/variables.tf index e69de29..9452424 100644 --- a/variables.tf +++ b/variables.tf @@ -0,0 +1,21 @@ +variable "cluster_name" { + type = string + description = "le nom du cluster à créer" +} + +variable "node_count" { + type = number + description = "nombre d'instances à créer dans le pool de nœuds de cluster" + default = 1 + + validation { + condition = var.node_count > 0 + error_message = "Le nombre de nœuds doit être supérieur à 0" + } +} + +variable "node_type" { + type = string + description = "le type de nœud à créer dans le pool de nœuds de la grappe" + default = "DEV1-M" +} \ No newline at end of file