Storage is already abstracted via Kubernetes with persistent volume claims and CSI (container storage interface)
You can specify the default storage class to use the provider's CSI driver. The PVC is then specified and consumed the same way in a portable manner across providers.