k8s cluster 2+1 CX23

This commit is contained in:
Sergei Poljanski 2026-03-20 20:41:44 +03:00
commit 468fd67b92
Signed by: asxpi
GPG key ID: 4F8851660FA4121B
7 changed files with 110 additions and 0 deletions

10
.gitignore vendored Normal file
View file

@ -0,0 +1,10 @@
.terraform/
*.tfstate
*.tfstate.backup
*.tfvars
!*.tfvars.example
kubeconfig
talosconfig
.terraform.lock.hcl
backend.conf
.claude

32
main.tf Normal file
View file

@ -0,0 +1,32 @@
module "kubernetes" {
source = "hcloud-k8s/kubernetes/hcloud"
version = "3.27.2"
cluster_name = var.cluster_name
hcloud_token = var.hcloud_token
cluster_kubeconfig_path = "kubeconfig"
cluster_talosconfig_path = "talosconfig"
firewall_use_current_ipv4 = true
cert_manager_enabled = true
control_plane_nodepools = [
{
name = "control"
type = "cx23" # 2 vCPU, 4 GB RAM
location = "hel1"
count = 1
}
]
worker_nodepools = [
{
name = "worker"
type = "cx23" # 2 vCPU, 4 GB RAM
location = "hel1"
count = 2
}
]
}

7
outputs.tf Normal file
View file

@ -0,0 +1,7 @@
output "control_plane_public_ipv4_list" {
value = module.kubernetes.control_plane_public_ipv4_list
}
output "worker_public_ipv4_list" {
value = module.kubernetes.worker_public_ipv4_list
}

29
providers.tf Normal file
View file

@ -0,0 +1,29 @@
terraform {
backend "s3" {
bucket = "k8s-asxpio-main"
key = "terraform/state/terraform.tfstate"
region = "hel1"
endpoint = "https://hel1.your-objectstorage.com"
skip_credentials_validation = true
skip_metadata_api_check = true
skip_region_validation = true
skip_requesting_account_id = true
force_path_style = true
}
required_providers {
helm = {
source = "hashicorp/helm"
version = ">= 2.0"
}
}
}
provider "helm" {
kubernetes = {
host = module.kubernetes.kubeconfig_data.server
cluster_ca_certificate = module.kubernetes.kubeconfig_data.ca
client_certificate = module.kubernetes.kubeconfig_data.cert
client_key = module.kubernetes.kubeconfig_data.key
}
}

2
terraform.tfvars.example Normal file
View file

@ -0,0 +1,2 @@
hcloud_token = "your-hetzner-cloud-api-token"
cluster_name = "k8s"

21
traefik.tf Normal file
View file

@ -0,0 +1,21 @@
resource "helm_release" "traefik" {
name = "traefik"
namespace = "traefik"
create_namespace = true
repository = "https://traefik.github.io/charts"
chart = "traefik"
version = "35.0.1"
set = [
{
name = "providers.kubernetesCRD.enabled"
value = "true"
},
{
name = "providers.kubernetesIngress.enabled"
value = "true"
}
]
depends_on = [module.kubernetes]
}

9
variables.tf Normal file
View file

@ -0,0 +1,9 @@
variable "cluster_name" {
type = string
default = "k8s-asxpio"
}
variable "hcloud_token" {
type = string
sensitive = true
}