How to Build an Open-Source HCI Platform with Ceph, Kubernetes & OpenStack
From Cloud Chaos to Full Control — Automating Your Open-Source HCI
You don’t realize you’ve outgrown the cloud — until you do.
The first signs? Your object storage usage hits 100+ TB. Monthly bills creep into four-digit territory. And suddenly, that “convenient” cloud setup feels more like a cage.
That’s when building your own open-source Hyper-Converged Infrastructure (HCI) starts making real sense.
This guide walks you through setting up a full open-source HCI platform — combining OpenStack, Kubernetes, and Ceph, deployed entirely on Proxmox using a fully automated Bash script.
No vendor lock-in. No manual steps. Full control.
Note: Lab-Grade Setup for Learning & Validation
This guide demonstrates a lab-grade deployment intended for testing, learning, and staging purposes. It is not meant for production use as-is — but it provides a strong foundation to understand and validate the architecture before production rollouts.
What You’ll Learn
In this hands-on tutorial, you’ll learn how to:
- Automate VM provisioning on Proxmox
- Deploy a Kubernetes cluster using Kubespray
- Install a Ceph cluster via Rook (S3-compatible)
- Prepare OpenStack-ready nodes for future workloads
The Infrastructure Setup

This lab uses 7 nested VMs inside Proxmox:
- os0: Bootstrap / control node
- os1–os4: Kubernetes nodes (1 control plane + 3 workers)
- os5 & os6: OpenStack-ready nodes with 32GB RAM each
All VMs are provisioned using Proxmox CLI (qm
) and configured with cloud-init and SSH key automation.
The Script — Full Automation from VM to Ceph

The main script performs the following tasks:
- Provisions 7 VMs with static IPs and hostnames
- Creates and distributes SSH keys for access
- Clones the Kubespray repository
- Builds a custom
hosts.yaml
inventory for Kubernetes setup - Deploys Kubernetes via Ansible
- Clones Rook and installs Ceph using K8s manifests
Why Modify Rook’s hostNetwork
?
The script modifies cluster.yaml
to set hostNetwork: true
, ensuring proper communication between pods and nodes in nested virtualized environments — where bridged networking and NAT can create routing issues.
Watch It in Action
We’ve recorded the entire automation process — from VM provisioning to Kubernetes and Ceph deployment — in a real-world nested virtualization lab.
Watch the 14-minute speed-run on YouTube
▶️ https://www.youtube.com/watch?v=zyJhgXf0pt8
You’ll see:
- Proxmox CLI used to spin up 7 VMs
- SSH key distribution and cloud-init usage
- Kubespray cluster setup and Rook-Ceph installation
- Network tuning for nested VM environments (hostNetwork)
Whether you’re evaluating open-source HCI or just want to verify the script before running it — this video is your preview window.
Try It Yourself
Clone the repository:
git clone https://github.com/senolcolak/proxmox-k8s4rook.git
cd proxmox-k8s4rook
./1-rook-ceph.sh
This will spin up your own lab-grade, fully open-source HCI stack.
What Makes This Setup Different?
Most tutorials stop at Kubernetes or Ceph. This one goes beyond:
- Automates full stack: Proxmox → Kubernetes → Ceph
- Cleanly integrates etcd, control plane, and kube nodes
- Prepares nodes for OpenStack workloads
- Fully reproducible — great for demos, staging, or training
All on your infrastructure. On your terms.
SEO Tags
open-source hci
, build open-source hci platform
, kubernetes ceph openstack automation
, rook-ceph proxmox nested virtualization
, kubespray cloud-init cluster deployment
, automated kubernetes ceph hci lab
, ceph s3 compatible rook setup
Need Production-Grade Help?
Kubedo helps teams transition from vendor-dependent architectures to fully managed, open-source infrastructure. We design and operate production-grade Ceph + Kubernetes + OpenStack clusters.
Let’s talk — tell us what you’re building.
Thanks for reading — and watching.