Implementation of flexvolume driver and provisioner for oVirt
Clone or download
rgolangh flex: Make sure the removes the old directory
On redeployment, the entrypoint should remove the old directory
and recreate it.

Signed-off-by: Roy Golan <>
Latest commit 0e7be4e Jan 16, 2019


Build Status Go Report Card

container image status
ovirt-flexvolume-driver ovirt-flexvolume-driver
ovirt-volume-provisioner ovirt-volume-provisioner
ovirt-cloud-provider ovirt-cloud-provider
ovirt-flexvolume-driver-apb Docker Repository on Quay
ovirt-openshift-installer Docker Repository on Quay


Make oVirt the a prefered platform for openshift installation. The main components this project will ship are:

  • storage integration through plugin - currently flex, CSI in the future
  • cloud provider
  • easy deployement of all those components


A kubernetes controller that creates/deletes persistent volumes, and allocates disks
in ovirt as a result. This is the first part for providing volumes from ovirt.


A kubernetes node plugin that attaches/detaches a volume to a container.
It attaches the ovirt disk to the kube node(which is an ovirt vm). It identifies the disk device on the os,
prepares a filesystem, then mounts it so it is ready as a volume mount into a container.


An out-of-tree implementation of a cloudprovider.
A controller that manages the admission of new nodes for openshift, from ovirt vms.
Merging this code is work in progress here:
NOTE: ovirt-cloud-provider will be available in v0.3.3


version ovirt version openshift version
<= v0.3.1 >= 4.2 3.9, 3.10
>= v0.3.2 >= 4.2 3.10, 3.11


Deploy via service-catalog


  • Openshift 3.10.0
  • Running service catalog

From the repo:

  • push the apb image to your cluster repo
    $ make apb_build apb_push
  • go to the service catalog UI and deploy the ovirt-flexvolume-driver-apb.
    Here is a demo doing that:

Deploy via cli

  • make sure oc command is configured and has access to your cluster, e.g run oc status

  • use a cluster admin user to deploy, or grant permission to one

    $ oc login -u system:admin
    $ oc adm policy add-cluster-role-to-user cluster-admin developer
  • Run on a master(replace the input with yours):

     docker run \
     -it \
     --rm \
     --net=host \
     -v $HOME/.kube:/opt/apb/.kube:z \
     -u $UID \
     provision -e \
    • If its the first time deploying the image then it should take few moments to download it.

Upon completion you have the components running:

$ oc get ds -n default ovirt-flexvolume-driver 
name                      desired   current   ready     up-to-date   available   node selector   age
ovirt-flexvolume-driver   1         1         1         1            1           <none>          15m

$ oc get deployment -n default ovirt-volume-provisioner 
ovirt-volume-provisioner   1         1         1            1           17m


Feedback is most welcome, if you have an idea, proposal, fix, or want to chat
you'll find the details here:

Blog post in ovirt:

Youtube Demo: