From 95eba149753e77e472ba5affbc6755f8d4c0a085 Mon Sep 17 00:00:00 2001 From: Vitor Hideyoshi Date: Sat, 19 Oct 2024 23:12:20 -0300 Subject: [PATCH] Initial Implementation of KUBECONFIG --- .terraform.lock.hcl | 69 ++++++++++++++++++++-------------------- instances/instance.tf | 16 ++++------ kubernetes/config.tf | 4 +-- kubernetes/kubernetes.tf | 24 ++++++++------ main.tf | 2 +- 5 files changed, 59 insertions(+), 56 deletions(-) diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl index a3a0874..cfe08d3 100644 --- a/.terraform.lock.hcl +++ b/.terraform.lock.hcl @@ -2,30 +2,31 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/cloudflare/cloudflare" { - version = "4.41.0" + version = "4.44.0" constraints = "~> 4.0" hashes = [ - "h1:YxQqmiES/Yanq/VfGqBEqg+VIO7FGhO88aKoWFHyGIg=", - "zh:339d26e06dc6fb299ea8aad9476a60fd65bb1d40631ae8eeb81cddf2dd2bebc8", - "zh:3dec2ad96ac2c283fd34ce65781b55c4edbb4d5c5cb53da8e31537176c0ed562", - "zh:5f63a5f8080319a2fff09d4d49944829fa708723436520787cfb60725ced80cf", - "zh:67162c28ccea71cb8141ed15c0637e35621354ebe14878e0b75a8f160fc5505d", - "zh:6ac1e07f5347b6395aca690ed22101bb25e957d25f986f760ff673a7adfd5ef6", - "zh:70282a723c7b52fcabde2baad41c864ed3a8d69f0c4d27a6b6933cac434cffc6", + "h1:MeMGdavako/OPTU/qAgKRIQKD49x9tn4PGrOTWi9tFE=", + "zh:0cae95e8c9d2d979669712745251dcf5720cee2a59bb81d8ad2c2dcf0e6e0c7a", + "zh:1220aee9549e7938648f6a36237929ead0de8244c6a00f8e8cded559f4b65a2f", + "zh:23ae1862e5fe5b583b8ec2c96f80a5ba0e3883be8e1169a0484a45106cc238ce", + "zh:3034654c6f34e419c53dcd6ea558b715e1150fbcc70c93209c5ee88a03025072", + "zh:3b64a66f3ddeb04345511262ad9376eb3c26e0683a78f47a3fd7f5e71f3f7e27", + "zh:4b29435e1e8f970b92bb38eca52820f7a8362c16235334aef9a83be32bd00094", + "zh:4f8fe69db7f54bce0e78a4c671aa5db20515114626035051f387d9833f4a5a91", + "zh:86776bfbdabd2095975be9b3ca999c2f47ca5194ece6c58c69130ccfa2e3c97d", "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", - "zh:924cd23abc326c6b3914e2cd9c94c7832c2552e1e9ae258fb9fd9aedaa5f7ce7", - "zh:a4b75e4c239879296259e7d54f1befbc7fdc16da2d62d1294e9f73add4cae61e", - "zh:a6ceb08feb63b00c7141783b31e45a154c76fd8cdebbdf371074805f0053572d", - "zh:afae1843f9ba85f2f6d94108c65cf43a457e83531a632d44d863e935160cb2ba", - "zh:bd6628ce60c778960a5755f7010b7e2cc5c6ff0341a21c175341b28058ec843d", - "zh:cd30866a1ff99d72b5fa1699db582fa4f25562e6ab21dcc6870324f3056108e0", - "zh:df5924cca691a8220aaaebb5cb55c3d6c32ff0a881f198695eff28155eb12b54", - "zh:e78d0696c941aba58df1cb36b8a0d25cd5f3963f01d9338fdbda74db58afdd49", + "zh:9d50271a09ee01a7105c06e582c52743a3baaf46f298d52bfc9e64cd7bfaa712", + "zh:a1e12d1c3472d457140de0e8b77a4b09e5cdcd3e2f6c0be0fe0dae0526d368db", + "zh:ad638e2c91490367d55ec6fe46ee34a9f7c151ca6e3cc52e5bad9f358e77f1aa", + "zh:cc4c496f2c594994a9d966f7ebe00a797eca9b924ac1bbe5aef26ec83ec7f833", + "zh:e74d5a3695deb38c2858d1c99c424495900e9b298ca8961c0a2fc1b3714c4c77", + "zh:f4b6efa4c2b4c85c92171dc0824dbf42af9dde5250131494de803e0b9fe1ea3c", ] } provider "registry.terraform.io/hashicorp/aws" { - version = "5.17.0" + version = "5.17.0" + constraints = "5.17.0" hashes = [ "h1:U+EDfeUqefebA1h7KyBMD1xH0h311LMi7wijPDPkC/0=", "zh:0087b9dd2c9c638fd63e527e5b9b70988008e263d480a199f180efe5a4f070f0", @@ -66,24 +67,24 @@ provider "registry.terraform.io/hashicorp/tls" { } provider "registry.terraform.io/hideyoshinakazone/yoshik3s" { - version = "1.0.2" - constraints = "1.0.2" + version = "1.1.0" + constraints = "1.1.0" hashes = [ - "h1:tYLW91AxEBT8s9pI3VHFY11gOsqPy0H9LVVurZuPM3g=", - "zh:0f3e923af5149b99c06601927a627155b3ae04842e134e120a20b8d52e400f84", - "zh:12fa90815f52a634dfcae3d524de7bf4036c1743e27e7849b1f40829348aa49b", - "zh:24b0115ede90da5f673836da5b0e07e0fd001d222d69d995f6540cc318ac41ea", - "zh:32b79d30d5db9729d93d8379f407129ec8ebe9ad1e6a3f829460596bf22e27c0", - "zh:42fd73d44621d920fdce7bef2723fe9c0cbeb7f41e10e0f6a31ff7c4aad13314", - "zh:545feed9fe952a94ee271fc3275852dd64fccfb547141974675a096b254cdce5", - "zh:5487273f5169923b495f6507c585d68cfca3ddec0d47cb000380a20eb45b94fb", - "zh:65e788a9c1aba218c3f67ea3da7198911735bc453944ef27197559c8148a3d27", - "zh:867dc1030b4c66194dea42d3dcfd0af9a20a6e6333b0fc9cfb07d288125b1f64", + "h1:PU3LP/kaYBNQ1Xz4yU5Fks9U0GP1FXsdPlh0TuH0ojE=", + "zh:0207cc1fe7d13f72a1e32deefbec269ee7abe19b74feda0b1faa458a2699c770", + "zh:1c93ca95f4ec0dd2c787e9daa3ee7c9d657f25d5b6e2cd4aaa69e0334586c50f", + "zh:1d1b3d62445001e240788ff3f482087511d5e8995b71ffc1ab71a668d713b94b", + "zh:4df95751142f5bd0181aaec97f051a9964c23ed989461342c050442556d0ea46", + "zh:56f924030c030e01cab9fd44e18476c5db336da6bbcf4a4ddb9213185cd21185", + "zh:6e16fdb535791b4ec4167d3068b91fd24ba1fdc76e9e3bac137b0d44b95eb0c9", + "zh:773366ab4b8b7f9e045ec09c5c2b9dcb4452a10329e1d3493addf95e3024520d", + "zh:7f7c384e4ef942061cbc0695250176f1922d6496ac21407f0b27bf78f2968586", "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", - "zh:962a8a157d318f76a2946d637a75adccbf1fd11e49a6c852af9f59548ca97246", - "zh:cc4a5aef6f685da2ccb998676dd4b3aadbc828546fc9cd5d1dc26bbadb42a5c3", - "zh:d163b0a206fcaecc51539ad0b38c5e4b362ec2778187c15fe2196e9201770a3b", - "zh:d8bf1b4a124dedf266a3b45477ea0091058c3609e0eaa4edcd0f2470868ef938", - "zh:ddc7157397b683b244b9dbc725308f2c3745d74ebac180e74cffd7ad5b521da8", + "zh:8e9ff607e9d9d935b4038b018aa68c6c062a1a54203835500ac9146937a996d8", + "zh:ba8cc43465c0a6fb64219f52d05713f8b91dc43515becd073db1aec40ebed34c", + "zh:be6457d1312956109898ca31b3d57418c4b1c2849c2d5d1d96fda994f0a15290", + "zh:c50af979b6c2f3bf2836b2160c300261038fd6dfcf073abc2cf620683e7f2ba3", + "zh:e7249e82db4f0599c9c7258f695bb69167d90bac18b76f4b796c500828287f08", + "zh:f61160d21e55264065a0c4c818344c6afd1b5dca2a89b1b65b6767023805045a", ] } diff --git a/instances/instance.tf b/instances/instance.tf index b891f06..1f35608 100644 --- a/instances/instance.tf +++ b/instances/instance.tf @@ -118,7 +118,7 @@ resource "aws_instance" "worker" { instance_market_options { market_type = "spot" spot_options { - max_price = 0.0014 + max_price = 0.0017 instance_interruption_behavior = "stop" spot_instance_type = "persistent" } @@ -166,14 +166,12 @@ output "pool_master_public_ip" { } output "pool_master_instance" { - value = [ - { - host: aws_instance.main.public_ip - port: 22 - user: "ubuntu" - private_key: tls_private_key.terraform_ssh_key.private_key_pem - } - ] + value = { + host: aws_instance.main.public_ip + port: 22 + user: "ubuntu" + private_key: tls_private_key.terraform_ssh_key.private_key_pem + } } output "pool_worker_instances" { diff --git a/kubernetes/config.tf b/kubernetes/config.tf index 334050c..8ae49d9 100644 --- a/kubernetes/config.tf +++ b/kubernetes/config.tf @@ -15,12 +15,12 @@ variable "master_server_address" { } variable "cluster_main_node" { - type = list(object({ + type = object({ host = string port = string user = string private_key = string - })) + }) description = "map of objects - main cluster nodes - [host, port]" } diff --git a/kubernetes/kubernetes.tf b/kubernetes/kubernetes.tf index 00babfd..2b32bd9 100644 --- a/kubernetes/kubernetes.tf +++ b/kubernetes/kubernetes.tf @@ -2,7 +2,7 @@ terraform { required_providers { yoshik3s = { source = "HideyoshiNakazone/yoshik3s" - version = "1.0.2" + version = "1.1.0" } } } @@ -13,34 +13,30 @@ terraform { resource "yoshik3s_cluster" "main_cluster" { name = "main-cluster" token = var.cluster_token + address = var.cluster_domain k3s_version = "v1.30.2+k3s2" } resource "yoshik3s_master_node" "master_node" { cluster = yoshik3s_cluster.main_cluster - - count = length(var.cluster_main_node) node_connection = { - host = var.cluster_main_node[count.index].host - port = var.cluster_main_node[count.index].port - user = var.cluster_main_node[count.index].user - private_key = var.cluster_main_node[count.index].private_key + host = var.cluster_main_node.host + port = var.cluster_main_node.port + user = var.cluster_main_node.user + private_key = var.cluster_main_node.private_key } node_options = [ "--write-kubeconfig-mode 644", "--disable traefik", "--node-label node_type=master", - "--tls-san ${var.cluster_domain}" ] } resource "yoshik3s_worker_node" "worker_node" { - master_server_address = var.master_server_address - cluster = yoshik3s_cluster.main_cluster count = length(var.cluster_worker_node) @@ -55,4 +51,12 @@ resource "yoshik3s_worker_node" "worker_node" { node_options = [ "--node-label node_type=worker", ] + + depends_on = [yoshik3s_master_node.master_node] } + + +output "cluster_kubeconfig" { + value = yoshik3s_master_node.master_node.kubeconfig + sensitive = true +} \ No newline at end of file diff --git a/main.tf b/main.tf index 097bc54..2d85983 100644 --- a/main.tf +++ b/main.tf @@ -12,7 +12,7 @@ terraform { } yoshik3s = { source = "HideyoshiNakazone/yoshik3s" - version = "1.0.2" + version = "1.1.0" } } }