feat: Initial k8s cluster setup
This commit is contained in:
parent
dc71408e1b
commit
5def74736b
6 changed files with 233 additions and 0 deletions
47
pve01.wheatley.in/k8s-wheatley/.terraform.lock.hcl
generated
Normal file
47
pve01.wheatley.in/k8s-wheatley/.terraform.lock.hcl
generated
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# This file is maintained automatically by "tofu init".
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.opentofu.org/siderolabs/talos" {
|
||||
version = "0.9.0"
|
||||
constraints = "0.9.0"
|
||||
hashes = [
|
||||
"h1:50TaymX/KnjXcURmpKsVd7JUyLRrMDNXMHFgqzSe88U=",
|
||||
"zh:0fa82a384b25a58b65523e0ea4768fa1212b1f5cfc0c9379d31162454fedcc9d",
|
||||
"zh:249ab08b810bb96ef7c35354a12622907df7cbda59c83ff314ee85e8b851128d",
|
||||
"zh:4f284c21f0cb4b7012fdb231ebba4803e5c389f7ea380fb5958ebfa6b822d055",
|
||||
"zh:6049f8d06bc92ab1a46d56c2b37799e6a1b7ce3c61905acf8f0c2009942be8ac",
|
||||
"zh:7de5f0a6429c6856ade3c7e59d5041a7fe8e0010aea14a2074e91f8a526283ce",
|
||||
"zh:9760420cf5feec0550556664962bc6f1af45115b9ea5bcbf47aa9bffd3dd4ac2",
|
||||
"zh:9860272a9fbcea65393c478dc579ad2677a44338de24677702ce699a027801aa",
|
||||
"zh:a60311a8bf267b18dcf1c8250f45e371b51c6aef086e037a3f9496602f190187",
|
||||
"zh:b74c119b2a964cae8d17b5b5f14c8eecf44708e3817c1f65ac89b813856aed98",
|
||||
"zh:bc33e14650052c246ac2e6492a0a24755d4e8d27cb7259e3996f07b0537f2c77",
|
||||
"zh:c4bc2c65b3dcef2508c14dbbfc18937c5ede11670c02a644cbc28c83a57de92b",
|
||||
"zh:c98bf4809220568d76ea2db232a88a60c29fd90d4c9e2f8c8a68cf91ceed066a",
|
||||
"zh:de0179ee9c55bf36d3474049ceac3a105ed7bc1fb9c4787d4076c4b15d268b66",
|
||||
"zh:e99e019d950131c2c4259c1cbca1d072cb813bdfdbbbf9359f5901d6b7542a0d",
|
||||
"zh:feb941cc673692c6858f96590f3ca082683a62aa2d2842b9bfffcd327eb840d3",
|
||||
]
|
||||
}
|
||||
|
||||
provider "registry.opentofu.org/telmate/proxmox" {
|
||||
version = "3.0.2-rc05"
|
||||
constraints = ">= 3.0.2-rc05, 3.0.2-rc05"
|
||||
hashes = [
|
||||
"h1:PG5/Mu1UUP6/WIdtytJKZ8NxQJg8OIGygFwJOoPdmZw=",
|
||||
"zh:042d748367f33aaf440698644be4f2a2875f9db31915c1ef84616f176fc6174f",
|
||||
"zh:1488781da1920d60d933c8ce926c34b5e989ffae58e3fbe437973d2b1d2faafc",
|
||||
"zh:283dd6f74627f1d1d75d616b31f8ced3f97fd5277a07c9535e85cfa765d7a321",
|
||||
"zh:378f1c2da21aeea083ac2e632db274a02c7a01e2486a40d3c813d05a21142db3",
|
||||
"zh:38d63d0961f8c32273392caaace30f50cff8ab06e5dda17f67a8827ebffeba98",
|
||||
"zh:52159782df101ec98f20faff81e8f2d9d92cb4ec903314fcddcc57ec16cdaacb",
|
||||
"zh:6ca47b90c66b1d2706cb3cbb05da8b3f90a202c4865010202b2962e2b64d217e",
|
||||
"zh:6e7b85cb2380e4dc0be694dd0e4a24927f7f66df41960eca3cfe907443d4f0b9",
|
||||
"zh:758775f733673ab5c196db6a33648458037746f94d4bef7ce148cb01474efe2d",
|
||||
"zh:7c31a3ca6d52db39da2bdd60be37af71d59d808fc206de50fe661535ea436da3",
|
||||
"zh:af16984350a2f4d77c21f66a479007801e2527543310567c99cd82eb421e249e",
|
||||
"zh:c1f965d3f96cf3f87af2c12ab9d4bde42f8ef660f8dc34ba3cfc9b20435a7269",
|
||||
"zh:c2b9022a31103919a5ffbac6ee8d7feb6c4f5f580c1766f769569c2e8e4ce7f1",
|
||||
"zh:e90162c42f1237323291e3d0de0c62701b3f89350fae18246da06702f41a6123",
|
||||
]
|
||||
}
|
||||
68
pve01.wheatley.in/k8s-wheatley/main.tf
Normal file
68
pve01.wheatley.in/k8s-wheatley/main.tf
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
terraform {
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "Telmate/proxmox"
|
||||
version = "3.0.2-rc05"
|
||||
}
|
||||
talos = {
|
||||
source = "siderolabs/talos"
|
||||
version = "0.9.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
provider "proxmox" {
|
||||
pm_api_url = "https://10.167.84.10:8006/api2/json"
|
||||
pm_api_token_id = ""
|
||||
pm_api_token_secret = ""
|
||||
pm_tls_insecure = true
|
||||
}
|
||||
|
||||
locals {
|
||||
talos_version = "1.11.3"
|
||||
}
|
||||
|
||||
module "controlplanes" {
|
||||
source = "./modules/controlplane"
|
||||
|
||||
controlplanes = {
|
||||
cpu = 4
|
||||
memory = 4
|
||||
disk = "40G"
|
||||
storagepool = "nvme-fastpool"
|
||||
talos_version = local.talos_version
|
||||
nodes = [
|
||||
{
|
||||
name = "cp01"
|
||||
ip_address = "10.13.38.20"
|
||||
},
|
||||
{
|
||||
name = "cp02"
|
||||
ip_address = "10.13.38.21"
|
||||
},
|
||||
{
|
||||
name = "cp03"
|
||||
ip_address = "10.13.38.22"
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
module "workers" {
|
||||
source = "./modules/worker"
|
||||
|
||||
workers = {
|
||||
cpu = 4
|
||||
memory = 4
|
||||
disk = "40G"
|
||||
storagepool = "nvme-fastpool"
|
||||
talos_version = local.talos_version
|
||||
nodes = [
|
||||
{
|
||||
name = "worker01"
|
||||
ip_address = "10.13.38.30"
|
||||
},
|
||||
{
|
||||
name = "worker02"
|
||||
ip_address = "10.13.38.31"
|
||||
}]
|
||||
}
|
||||
}
|
||||
44
pve01.wheatley.in/k8s-wheatley/modules/controlplane/main.tf
Normal file
44
pve01.wheatley.in/k8s-wheatley/modules/controlplane/main.tf
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
terraform {
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "telmate/proxmox"
|
||||
version = ">= 3.0.2-rc05"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resource "proxmox_vm_qemu" "controlplane" {
|
||||
for_each = { for node in var.controlplanes.nodes : node.name => node }
|
||||
|
||||
name = format("k8s-wheatley-%s", each.value.name)
|
||||
target_node = "pve01"
|
||||
tags = "k8s-wheatley,controlplane"
|
||||
onboot = true
|
||||
bios = "ovmf"
|
||||
boot = "order=virtio0;net0"
|
||||
clone = format("talos-%s", var.controlplanes.talos_version)
|
||||
scsihw = "virtio-scsi-pci"
|
||||
|
||||
disk {
|
||||
size = var.controlplanes.disk
|
||||
storage = var.controlplanes.storagepool
|
||||
type = "disk"
|
||||
slot = "virtio0"
|
||||
format = "raw"
|
||||
}
|
||||
|
||||
cpu {
|
||||
cores = var.controlplanes.cpu
|
||||
sockets = 1
|
||||
}
|
||||
|
||||
memory = var.controlplanes.memory * 1024
|
||||
|
||||
network {
|
||||
id = 0
|
||||
model = "virtio"
|
||||
bridge = "vmbr1"
|
||||
}
|
||||
ipconfig0 = format("ip=%s/24,gw=10.13.38.1", each.value.ip_address)
|
||||
skip_ipv6 = true
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
variable "controlplanes" {
|
||||
description = "Control plane node configuration"
|
||||
type = object({
|
||||
cpu = number
|
||||
memory = number
|
||||
disk = string
|
||||
storagepool = string
|
||||
talos_version = string
|
||||
nodes = list(object({
|
||||
name = string
|
||||
ip_address = string
|
||||
}))
|
||||
})
|
||||
}
|
||||
|
||||
44
pve01.wheatley.in/k8s-wheatley/modules/worker/main.tf
Normal file
44
pve01.wheatley.in/k8s-wheatley/modules/worker/main.tf
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
terraform {
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "telmate/proxmox"
|
||||
version = ">= 3.0.2-rc05"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resource "proxmox_vm_qemu" "worker" {
|
||||
for_each = { for node in var.workers.nodes : node.name => node }
|
||||
|
||||
name = format("k8s-wheatley-%s", each.value.name)
|
||||
target_node = "pve01"
|
||||
tags = "k8s-wheatley,worker"
|
||||
onboot = true
|
||||
bios = "ovmf"
|
||||
boot = "order=virtio0;net0"
|
||||
clone = format("talos-%s", var.workers.talos_version)
|
||||
scsihw = "virtio-scsi-pci"
|
||||
|
||||
disk {
|
||||
size = var.workers.disk
|
||||
storage = var.workers.storagepool
|
||||
type = "disk"
|
||||
slot = "virtio0"
|
||||
format = "raw"
|
||||
}
|
||||
|
||||
cpu {
|
||||
cores = var.workers.cpu
|
||||
sockets = 1
|
||||
}
|
||||
|
||||
memory = var.workers.memory * 1024
|
||||
|
||||
network {
|
||||
id = 0
|
||||
model = "virtio"
|
||||
bridge = "vmbr1"
|
||||
}
|
||||
ipconfig0 = format("ip=%s/24,gw=10.13.38.1", each.value.ip_address)
|
||||
skip_ipv6 = true
|
||||
}
|
||||
15
pve01.wheatley.in/k8s-wheatley/modules/worker/variables.tf
Normal file
15
pve01.wheatley.in/k8s-wheatley/modules/worker/variables.tf
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
variable "workers" {
|
||||
description = "Worker node configuration"
|
||||
type = object({
|
||||
cpu = number
|
||||
memory = number
|
||||
disk = string
|
||||
storagepool = string
|
||||
talos_version = string
|
||||
nodes = list(object({
|
||||
name = string
|
||||
ip_address = string
|
||||
}))
|
||||
})
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue