External Block - Bring Your Own Storage
For some Topo/Ceph/NFS are not great fits, Genestack allows for external block devices to be used in the stand up and operation of Openstack.
Deploy External CSI driver in Genestack
Follow Documentation on getting a storage class presented to k8s, name it "general" and mark that storage class as default, in this example storage is provided by democratic csi driver over iscsi.
(genestack) root@genestack-controller1:/opt/genestack/submodules/openstack-helm# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
general (default) org.democratic-csi.iscsi Delete Immediate true 3h15m
Info
OSD placement is done on nodes with label ‘openstack-control-plane’, a minimum of 3 nodes is required for a healthy Ceph cluster.
Deploy Ceph operator
kubectl apply -k /etc/genestack/kustomize/rook-operator/
kubectl -n rook-ceph set image deploy/rook-ceph-operator rook-ceph-operator=rook/ceph:v1.13.7
Deploy Ceph on PVC
Monitor cluster state, once cluster HEALTH_OK proceed to the next step
(genestack) root@genestack-controller1:/opt/genestack/submodules/openstack-helm# kubectl --namespace rook-ceph get cephclusters.ceph.rook.io
NAME DATADIRHOSTPATH MONCOUNT AGE PHASE MESSAGE HEALTH EXTERNAL FSID
rook-ceph /var/lib/rook 3 129m Ready Cluster created successfully HEALTH_OK 9a6657cd-f3ab-4d70-b276-a05e2ca03e1b
Deploy cephfs filesystem named 'general-multi-attach' for Glance consumption
You should now have two storage class providers configured for Genestack
(genestack) root@genestack-controller1:/opt/genestack/submodules/openstack-helm# kubectl get sc -A
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
general (default) org.democratic-csi.iscsi Delete Immediate true 3h25m
general-multi-attach rook-ceph.cephfs.csi.ceph.com Delete Immediate true 85m