Workload cluster build d'image avec capi image builder
coolibra570 vues
3. Workload cluster avec kubeadm control-plane et proxmox
- Build ubuntu vm template pour proxmox avec capi image-builder
image-builder
Kubernetes Image Builder est un projet de SIG Cluster Lifecycle, permettant de créer des images de machines virtuelles Kubernetes pour plusieurs fournisseurs d'infrastructure. Les images de machines virtuelles ainsi obtenues sont spécifiquement conçues pour être utilisées avec Cluster api.
Ce projet fourni des images dejà build qu'on peut utiliser.
- Build ubuntu 2204 pour capi
git clone https://github.com/kubernetes-sigs/image-builder.git
cd image-builder/images/capi
# mettre à jour les variables
export PROXMOX_URL="https://10.10.10.105:8006/api2/json"
export PROXMOX_USERNAME='root@pam!root-token'
export PROXMOX_TOKEN="6b24c86d-cf71-461c-b2e6-a1362fd03c76"
export PROXMOX_NODE="proxmox-node-01"
export PROXMOX_ISO_POOL="local"
export PROXMOX_BRIDGE="vmbr0"
export PROXMOX_STORAGE_POOL="local-lvm"
export NEW_VERSION="1.32.2"
export NEW_SERIE="1.32"
export PACKER_FLAGS="--var 'kubernetes_rpm_version=$NEW_VERSION' --var 'kubernetes_semver=v$NEW_VERSION' --var 'kubernetes_series=v$NEW_SERIE' --var 'kubernetes_deb_version=$NEW_VERSION-1.1'"
- Lancer le build
make build-proxmox-ubuntu-2204

- Build avec terraform on utilise les image dejà build avec image buoilder de ce repo
- Le provider proxmox: providers.tf
terraform {
required_providers {
proxmox = {
source = "bpg/proxmox"
version = "0.72.0"
}
}
}
provider "proxmox" {
endpoint = "https://10.10.10.105:8006/"
api_token = "root@pam!root-token=6b24c86d-cf71-461c-b2e6-a1362fd03c76"
insecure = true
ssh {
agent = true
username = "root"
}
}
-
- Le fichier vm.tf
resource "proxmox_virtual_environment_file" "user_data_cloud_config" {
content_type = "snippets"
datastore_id = "local"
node_name = "proxmox-node-01"
source_raw {
data = <<-EOF
#cloud-config
users:
- default
- name: admin-usr
groups:
- sudo
shell: /bin/bash
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGNoeYxPOFEG9H70hmxRF66WL4MMVQ5XbQVNsXLsAdpo coul@home-lab
sudo: ALL=(ALL) NOPASSWD:ALL
runcmd:
- apt update
- apt install -y qemu-guest-agent net-tools
- systemctl enable qemu-guest-agent
- systemctl start qemu-guest-agent
- echo "done" > /tmp/cloud-config.done
EOF
file_name = "user-data-cloud-config.yaml"
}
}
resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
name = "vm-template-ubuntu-2204-kube-v1.32"
description = "Managed by Terraform"
tags = ["terraform", "ubuntu"]
node_name = "proxmox-node-01"
vm_id = 1000
agent {
# read 'Qemu guest agent' section, change to true only when ready
enabled = true
}
# if agent is not enabled, the VM may not be able to shutdown properly, and may need to be forced off
stop_on_destroy = true
startup {
order = "3"
up_delay = "60"
down_delay = "60"
}
cpu {
cores = 2
type = "x86-64-v2-AES" # recommended for modern CPUs
}
memory {
dedicated = 2048
floating = 2048 # set equal to dedicated to enable ballooning
}
disk {
datastore_id = "local-lvm"
file_id = proxmox_virtual_environment_download_file.latest_debian_12_bookworm_qcow2_img.id
interface = "scsi0"
size = 20
}
initialization {
ip_config {
ipv4 {
address = "dhcp"
}
}
user_data_file_id = proxmox_virtual_environment_file.user_data_cloud_config.id
user_account {
keys = [trimspace(tls_private_key.ubuntu_vm_key.public_key_openssh)]
password = "admin" # random_password.ubuntu_vm_password.result
username = "admin-usr"
}
}
network_device {
bridge = "vmbr0"
}
operating_system {
type = "l26"
}
tpm_state {
version = "v2.0"
}
serial_device {}
}
resource "proxmox_virtual_environment_download_file" "latest_debian_12_bookworm_qcow2_img" {
content_type = "iso"
datastore_id = "local"
file_name = "ubuntu-2204-kube-v1.32.qcow2.img"
node_name = "proxmox-node-01"
url = "https://swift.services.a.regiocloud.tech/swift/v1/AUTH_b182637428444b9aa302bb8d5a5a418c/openstack-k8s-capi-images/ubuntu-2204-kube-v1.32/ubuntu-2204-kube-v1.32.qcow2"
}
resource "random_password" "ubuntu_vm_password" {
length = 16
override_special = "_%@"
special = true
}
resource "tls_private_key" "ubuntu_vm_key" {
algorithm = "RSA"
rsa_bits = 2048
}
output "ubuntu_vm_password" {
value = random_password.ubuntu_vm_password.result
sensitive = true
}
output "ubuntu_vm_private_key" {
value = tls_private_key.ubuntu_vm_key.private_key_pem
sensitive = true
}
output "ubuntu_vm_public_key" {
value = tls_private_key.ubuntu_vm_key.public_key_openssh
}
output "vm_ipv4_address" {
value = proxmox_virtual_environment_vm.ubuntu_vm.ipv4_addresses[1][0]
}
-
- Lancer ces commandes pour créer la vm
terraform init
terraform plan
terraform apply

Cette image sera utliseée pour la suite.
Commentaires
Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour le moment.