Terraform k3s
跳转到导航
跳转到搜索
image
Debian 官方云镜像只提供 SHA512SUMS 校验文件,不提供 SHA256SUMS cat SHA512SUMS| grep debian-12-genericcloud-amd64.qcow2 800df5e7a08fb4e1f8e955c3cd866e6b2303b85d60d3eef1fc3c8600b0c3dc34a8fc7c47ab46942bd8ae5dedcba160ee58208ed4885bd6ac98b51cac21b5fcb9 debian-12-genericcloud-amd64.qcow2 ➜ iso sha512sum debian-12-genericcloud-amd64.qcow2 800df5e7a08fb4e1f8e955c3cd866e6b2303b85d60d3eef1fc3c8600b0c3dc34a8fc7c47ab46942bd8ae5dedcba160ee58208ed4885bd6ac98b51cac21b5fcb9 debian-12-genericcloud-amd64.qcow2
tf code
cat main.tf
resource "proxmox_virtual_environment_vm" "k3s_agents" {
count = 2
name = "k3s-agent-${format("%02d", count.index + 1)}"
description = "K3s Agent Node ${count.index + 1}"
tags = ["terraform", "debian", "k3s"]
node_name = "pve"
vm_id = 8001 + count.index
clone {
vm_id = 7001
full = true
}
cpu {
cores = 4
type = "host"
}
memory {
dedicated = 4096
}
disk {
datastore_id = "local-lvm"
interface = "scsi0"
size = 40
}
network_device {
bridge = "vmbr0"
model = "virtio"
}
initialization {
user_account {
username = "evan"
password = "evan2240881"
keys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHZz66AbpF5PaYwS85wVSTLuRIrP+wZPQHHbKQxqtFWN evan@myxps"]
}
ip_config {
ipv4 {
address = "192.168.10.20${count.index + 1}/24"
gateway = "192.168.10.1"
}
}
dns {
domain = "local"
servers = ["192.168.10.1", "8.8.8.8"]
}
}
agent {
enabled = true
}
stop_on_destroy = true
# ==================== 安装 K3s Agent ====================
provisioner "remote-exec" {
inline = [
"curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | sudo INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC=\"agent\" K3S_URL=\"${var.k3s_server_url}\" K3S_TOKEN=\"${var.k3s_token}\" sh -",
"sudo systemctl enable --now k3s-agent"
]
connection {
type = "ssh"
user = "evan"
private_key = file("~/.ssh/id_ed25519")
#password = "evan" # 建议后面改成密钥
#host = self.ipv4_addresses[0][0]
host = "192.168.10.20${count.index + 1}"
timeout = "5m"
}
}
}
cat provider.tf
terraform {
required_providers {
proxmox = {
source = "bpg/proxmox"
version = "~> 0.10"
}
}
}
provider "proxmox" {
endpoint = var.proxmox_endpoint
api_token = var.proxmox_api_token
insecure = true
}
cat terraform.tfvars
proxmox_endpoint = "https://192.168.10.162:8006/"
proxmox_api_token = "root@pam!terrafrom=ayyyyy-066626-451c-9fyy-102yyyy7yyy"
template_vm_id = 7001
k3s_server_url = "https://192.168.10.105:6443"
k3s_token = "K1079a204049f7c2c541a193380bf4c8866b3dabf6f77476d934a745fbdc4fbfa00::server:2baaa33cab61854214d978d627fe0924"
ssh_public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHZz66AbpF5PaYwS85wVSTLuRIrP+wZPQHHbKQxqtFWN evan@myxps"
network_gateway = "192.168.10.1"
network_ip_prefix = "192.168.10.20"
done
as you can see, two virtual machines have automatically joined my k8s cluster proxmox-nuc kubectl get nodes NAME STATUS ROLES AGE VERSION debian-k3s-00 NotReady <none> 2d3h v1.36.2+k3s1 k3s-agent-01 Ready <none> 3m v1.36.2+k3s1 k3s-agent-02 Ready <none> 2m57s v1.36.2+k3s1 myxps Ready control-plane 4d13h v1.36.2+k3s1