-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Request] CSI Spec Volume Creation #8212
Comments
Hi @sbouts, thanks for opening this issue! Yes as you've noted we didn't implement the volume creation workflow. We had this slated for a potential Phase 2 of work but I don't think we realized this was a blocker for using plugins like Ceph. As you've noted here, there's a good bit of work required to make this happen, so I'm going to tag my colleagues @galeep and @yishan-lin to make sure it's on their radar as some of our planning gets solidified. |
This feature request from on the terraform nomad provider is also relevant for this work. |
Thanks for the link @ryanmickler. That feature request is to cover the existing Nomad registration APIs, not the CSI APIs being discussed here. |
Is there a seperate issue to implement the see here: |
@ryanmickler reading that comment and then digging into container-storage-interface/spec#387 it doesn't look like this is part of the CSI spec yet for the RPCs we support, is it? |
A quick inspection looks like |
Support for those fields were added in #7957 |
right, perhaps those parameters arent getting passed to |
@ryanmickler we should dig into this but let's not clutter up this feature request issue with debugging that. Can you open a new issue and include your volume spec and any relevant logs? |
Just an update on this long-awaited feature, I'll be working on this over the next few weeks. |
As a csi driver author I had someone use cli tools to create the volumes etc and then copy responses into nomad to work that way. It’s not ideal but functional. Great to hear this is being worked on and if any questions arise happy to collaborate with the experience I have from the other side of the equation. |
Just a heads up that I've split ExpandVolume, GetCapacity, and NodeGetVolumeStatus out to their own issues #10324 and #10325, because they're likely to miss 1.1.0 and have to get shipped in a patch version shortly thereafter. Once the create/snapshot E2E testing is done (#10322) and I've updated the API docs, this issue will be closed and shipped for Nomad 1.1.0 (public beta a few weeks out yet). |
I'm going to lock this issue because it has been closed for 120 days ⏳. This helps our maintainers find and focus on the active issues. |
Currently, HashiCorp Nomad implements a subset of the CSI spec found here. This feature request is for the implementation of the volume related methods.
At the bottom of this feature request I have included an overview of the CSI spec methods as well as the ones Nomad has currently implemented.
Usecase
Ceph is an Open Source scalable distributed storage system that is widely adopted among enterprises and strongly liked for its scalability and performance.
Implementing the missing CSI spec methods would enable the use of the ceph-csi driver in Nomad to dynamically provision persistent volumes hosted on Ceph for Nomad workloads.
This would bring Nomad on par with other CO like Kubernetes and Mesos.
The Problem
There have been attempts by the community to try and get the ceph-csi <==> Nomad communication to work.
The problem boils down to Nomad not having fully implemented the CSI spec methods for all the Controller capabilities and Node capabilities the ceph-csi driver (and others) offers. The ceph-csi driver expects volumes to be dynamically provisioned and mounted on the fly (see here) and not being created beforehand and explicitly put into e.g. the Nomad Volume Specification.
Ceph-csi Capabilities
The ceph-csi driver currently implements the following CSI Spec capabilities:
Note: The CSI methods for RBD and CephFS may differ in implementation, but adhere to the same CSI specification.
The Fix
The easier part of the fix is the actual (dummy) implementation of the missing CSI methods in the Nomad client.
The harder part of the fix is how to implement a logical flow in e.g. the Job Stanza and the Volume Specification to service both the creation and mounting of NEW volumes through the CreateVolume API (like ceph-csi expects it) as well as the mounting of EXISTING volumes (like this Nomad example).
Of course I would be more than willing to give a shot at helping to implement the missing methods. Getting the flow right from HCL to the mounting of volumes in Nomad workloads ties more into the core of Nomad and I feel that should be left up to you guys to implement.
CSI Spec Method Overview And Current Nomad Adoption
The text was updated successfully, but these errors were encountered: