This repository contains scripts to automate the creation of a 4-node Kubernetes cluster on Proxmox VE. It is specifically designed for running Rook/Ceph as the storage backend and supports multi-bridge network setups (e.g., vmbr1199 and vmbr2199).
- Automated VM creation and configuration via Proxmox CLI
- Support for multi-network interfaces (Kolla-Ansible compatibility)
- Prepares nodes for Kubespray-based Kubernetes installation
- Ready for Rook-Ceph deployment
- Generates
globals.ymlandpasswords.ymlfor Kolla-Ansible - Automatically integrates Ceph credentials and configuration
- Supports VM template creation from Ubuntu 24.04 Cloud image
- A working Proxmox VE hypervisor
- Internet access on the host machine to download images and tools
- Proxmox CLI access (run as
root) cloud-initinstalled on the guest image- VM Template ID to clone from
git clone https://github.com/senolcolak/proxmox-k8s4rook.git
cd proxmox-k8s4rook./cloud-init-template.sh⚙️ This will create a VM template (ID 4444 by default) based on Ubuntu 24.04 Cloud image.
./install-k8s.sh <TEMPLATE_ID> <START_VM_ID> <IP_RANGE>Example:
./install-k8s.sh 4444 5001 10.1.99.121-10.1.99.124The script will automatically create VMs with:
- 2 interfaces:
vmbr99(default) andvmbr2199- Cloud-init config for each node
- SSH key injection (you can modify this)
- Hostname and static IP configuration
If you have an existing Rook-Ceph cluster:
- The script will ask for the IP/DNS of the Rook-Ceph toolbox host
- It will fetch
ceph.confand relevant keyrings - These will be placed under
/etc/kolla/config/cinder,glance,swift, etc. - You can modify the behavior in the script to suit your environment
globals.yml: Pre-generated for Kolla-Ansible customizationpasswords.yml: Auto-generated secure password file- VM Configurations stored in Proxmox VMDB
- Ceph credentials copied under correct config directories
- Tested with Ubuntu 24.04 and Proxmox 7.x
- Ensure
vmbr1199andvmbr2199are correctly configured on your Proxmox host - Make sure cloud-init and SSH keys are functional in the template
- Script assumes 4-node setup, but can be modified easily for more
MIT License
Created by Şenol Çolak – Kubedo
Pull requests and suggestions are welcome! Feel free to fork and enhance for your custom use cases.