Terraform k3s

来自linuxsa wiki
跳转到导航 跳转到搜索

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