Announcing project Pyrgos

Have you ever wanted to easily create and update Kubernetes clusters on top of your on-prem infrastructure? That's exactly what Pyrgos project is.

Announcing project Pyrgos

For our users who want to easily deploy a production-ready Kubernetes clusters on top of their XCP-ng/Xen Orchestra infrastructure, well, you'll be pleased to discover our new project Pyrgos, built on top of Xen Orchestra.


As you may know, the name Kubernetes originates from Greek, meaning "helmsman" or "pilot". This container orchestration platform is widely used, even in XCP-ng/Xen Orchestra, with nodes running in VMs.

Right now, our users are relying on various tools to get some automation deploying Kubernetes (k8s) clusters on top of our virtualization platform. To deploy a k8s cluster, a part of those users are installing it manually, while most of them are using the XO API directly, our CLI, or our Terraform provider to bring automation to this task. It works well, but we wanted to reduce the load of our beloved system admins to be able to create production-grade k8s clusters, while also helping them to keep them up to date, directly from the XO web UI!

The goal is to give your dev teams a "ready to work" k8s cluster so they can run their application inside it, without spending time on your side to create and update those clusters.

Project Pyrgos

Pyrgos (πύργος) means "Watchtower" in Greek. Which seems like a valid analogy for our Kubernetes "pilots". A kind of ground control, helping to centralize and keep the pilots running.

Helping k8s cluster creation

We already have a "recipe" to create k8s clusters in XO, in fact since almost 3 years:

DevBlog #5 - Kubernetes cluster on XO
It’ll soon be possible to deploy easily and quickly a kubernetes cluster on XO thanks to a new coming feature: XO recipes.

However, this current tool doesn't give a lot of choice during the creation, and it's not "production-grade" since you need more control planes nodes to be safe (at least 3). Improving this tool to allow multi-control planes (with any number), but also more choices in the tooling used, while providing a dedicated small weight Linux template to it, is our goal. In the long run, choosing your CNI, Ingress and many other things will be provided in this screen.

Display your current clusters

We also want to dedicate a view in Xen Orchestra, where you can see all your created k8s clusters, with some important information on them. Number of worker nodes, control planes, main data but also including their current versions, and if they are up to date (or not).

Updating your cluster

Another exciting feature for our project, is the ability to just update your cluster to a newer Kubernetes version with one click, leaving Xen Orchestra to do it for you. In short, XO will redeploy a fresh node in the latest k8s version, join the cluster, and replace one by one all the nodes, while "evacuating" the old workers, so it's entirely transparent for your application. Similar to our "Rolling Pool Update" feature for XCP-ng pools.

Providing the tools

We also want to help our Kubernetes community to easily deploy the tooling they need to manage their clusters. Through our "hub" of VMs, we can also prepare some tools to be deployed and connected to your clusters, reducing again the amount of work needed to manage it.

And more!

This is just a start, with our first priorities. Clearly, we don't want to expose the whole Kubernetes "run" details for your application inside Xen Orchestra (that would be too complex), but focus on the usual pain points from our users, so they can focus on using it without the complexity of deploying and updating it. Stay tuned for more. If you want to discuss or test it in preview, feel free to join our dedicated thread on the forum!

Next steps

We'll release more Kubernetes features step by step. Expect improvements to our Kubernetes recipe in our next release in March. Stay tuned!