Preserve glance image persistent volume ======================================== Overview -------- In burrito, if the default storage backend is netapp, the Persistent Volume (PV) is created and used to store glance images. When the PV is dynamically created by netapp trident csi driver and the reclaim policy is inherited from the storageclass setting which is Delete, the PV is deleted when the PVC is deleted. So if we uninstall glance, the PV is gone. We want to preserve the PV even if glance is deleted. Then we can reuse the already uploaded images when we install glance again. Here is the howto. How to preserve glance image persistent volume ------------------------------------------------ The reclaim policy of glance image PV is Delete.:: root@btx-0:~# k get pv pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 500Gi RWX Delete Bound openstack/glance-images netapp 25h Patch the PV to set it to Retain.:: root@btx-0:~# k patch pv pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 -p \ '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}' persistentvolume/pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 patched The reclaim policy of the PV is changed to Retain.:: root@btx-0:~# k get pv pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 500Gi RWX Retain Bound openstack/glance-images netapp 25h Uninstall glance.:: $ ./scripts/burrito.sh uninstall glance The glance-images PVC is gone but the PV still exists.:: root@btx-0:/# k get pv pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 500Gi RWX Retain Released openstack/glance-images netapp 25h The status of PV is changed to Released. Patch resourceVersion and uid of claimRef to null.:: root@btx-0:~# k patch pv pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 -p \ '{"spec":{"claimRef": {"resourceVersion": null, "uid": null}}}' persistentvolume/pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 patched I want to reuse the PV when I install glance so I edit the appropriate yaml manifest file - pvc-images.yaml.:: [burrito]$ git diff openstack-helm/glance/templates/pvc-images.yaml diff --git a/openstack-helm/glance/templates/pvc-images.yaml b/openstack-helm/glance/templates/pvc-images.yaml index 86a3b47..658c1ec 100644 --- a/openstack-helm/glance/templates/pvc-images.yaml +++ b/openstack-helm/glance/templates/pvc-images.yaml @@ -26,5 +26,6 @@ spec: requests: storage: {{ .Values.volume.size }} storageClassName: {{ .Values.volume.class_name }} + volumeName: pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 {{- end }} {{- end }} I added 'volumeName: ' to let the PVC use the PV. Install glance.:: $ ./scripts/burrito.sh install glance And see the PV is reused.:: root@btx-0:/# k get pvc glance-images NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE glance-images Bound pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 500Gi RWX netapp 1m root@btx-0:/# k get pv |grep glance-images pvc-b0f01f0f-fab5-4c0f-b549-89f47d819cf1 500Gi RWX Retain Bound openstack/glance-images netapp 26h Yes, the glance-images PVC takes the preserved PV.