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

Signed-off-by: Roy Golan <rgolan@redhat.com>
Latest commit 0e7be4e Jan 16, 2019

README.md

ovirt-openshift-extensions

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

Purpose

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

ovirt-volume-provisioner

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.

ovirt-flexvolume-driver

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.

ovirt-cloud-provider

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: https://github.com/oVirt/ovirt-openshift-extensions/pull/59
NOTE: ovirt-cloud-provider will be available in v0.3.3

Versions

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

Deployment

Deploy via service-catalog

Pre-requisite:

  • 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:
    IMAGE ALT TEXT HERE

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 quay.io/rgolangh/ovirt-flexvolume-driver-apb \
     provision -e \
     '{
       "admin_user":"developer",
       "admin_password":"YOURPASS",  
       "cluster":"openshift",
       "namespace":"default",
       "engine_username":"admin@internal",
       "engine_password":"YOURPASS",
       "engine_url":"https://ENGINE-FQDN/ovirt-engine/api",
       }'
    • 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 
NAME                       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
ovirt-volume-provisioner   1         1         1            1           17m

Contributing

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: https://www.ovirt.org/blog/2018/02/your-container-volumes-served-by-ovirt/

Youtube Demo: https://youtu.be/_E9pUVrI0hs

References