@@ -64,13 +64,13 @@ functionality in the future.
6464The Controller-plugin should implement the following CSI procedures:
6565
6666- ` CreateVolume ` / ` DeleteVolume `
67- 1 . Create RBD-image on the Ceph cluster (see Considerations)
68- 1 . Create the NVMe-subsystem (see Considerations )
69- 1 . Expose the RBD-image through the NVMe-oF Gateway
67+ 1 . Create RBD-image on the Ceph cluster through Ceph-CSI/RBD
68+ 1 . Create the NVMe-subsystem (if it does not exist yet )
69+ 1 . Expose the RBD-image through the NVMe-oF Gateway
7070
7171- ` ControllerPublishVolume ` / ` ControllerUnpublishVolume `
72- 1 . Allow access to the subsystem from the host where the Node-plugin will
73- attach the volume
72+ 1 . Allow access to the subsystem from the host where the Node-plugin will
73+ attach the volume
7474
7575There are several parameters that can be configurable when a user creates a
7676volume. Some of these parameters are set by the Container Platform
@@ -80,8 +80,10 @@ Administrator settable parameters, this extends the parameters that can be set
8080for RBD volumes (set in a StorageClass):
8181
8282- _ all parameters for the Ceph-CSI RBD driver_
83- - NVMe-oF Gateway (or gateway group?)
84- - NVMe subsystem (or possibly detected based on Kubernetes Namespace?)
83+ - NVMe-oF Gateway Group (hostname, could be a Kubernetes Service)
84+ - NVMe subsystem name
85+ - if given, the name for the subsystem should be used
86+ - if not given, base the name on the owner (Kubernetes Namespace)
8587
8688User controlled parameters (set in a PersistentVolumeClaim):
8789
@@ -93,11 +95,11 @@ User controlled parameters (set in a PersistentVolumeClaim):
9395The Node-plugin should implement the following CSI procedures:
9496
9597- ` NodeStageVolume ` / ` NodeUnstageVolume `
96- 1 . attach the NVMe-oF namespace from the NVMe-oF Gateway
97- 1 . (Filesystem-mode only) mount the filesystem of the block-device
98+ 1 . attach the NVMe-oF namespace from the NVMe-oF Gateway
99+ 1 . (Filesystem-mode only) mount the filesystem of the block-device
98100
99101- ` NodePublishVolume ` / ` NodeUnpublishVolume `
100- 1 . bind mount the block-device or filesystem in the target location
102+ 1 . bind mount the block-device or filesystem in the target location
101103
102104There are likely additional requirements for attaching the NVMe-oF namespace,
103105including loading of kernel modules and access to nvme-tools in the
@@ -216,20 +218,12 @@ NVMe-oF initiator.
216218> [ !WARNING]
217219> Details that are under discussion and/or investigation are listed here.
218220
219- - Which component should create RBD-images?
220-
221- 1 . the ` ceph-nvmeof ` gateway with ` ns add --rbd-create-image `
222- 1 . Ceph-CSI RBD so that all Ceph-CSI procedures work 'normally'
223-
224- The preference goes to Ceph-CSI RBD creating the RBD-images. It will make it
225- easier to do other CSI procedures for resizing, snapshotting and cloning.
226-
227221- Are credentials required for attaching a NVMe namespace on a host?
228222
229- 1 . Can these credentials be stored in the VolumeContext of a
230- PersistentVolume? (Probably they should not.)
231- 1 . Are the credentials unique per NVMe namespace?
232- 1 . Can these credentials be obtained from the NVMe Gateway?
223+ 1 . Can these credentials be stored in the VolumeContext of a
224+ PersistentVolume? (Probably they should not.)
225+ 1 . Are the credentials unique per NVMe namespace?
226+ 1 . Can these credentials be obtained from the NVMe Gateway?
233227
234228 Credentials are optional, some access permissions are in place through the
235229 ControllerPublishVolume CSI procedure where the worker node that attaches the
@@ -239,26 +233,14 @@ NVMe-oF initiator.
239233
240234- What is the difference for using a single NVMe-oF Gateway vs a Gateway Group?
241235
242- 1 . Is there a single address for a group that can be used (like a
243- Kubernetes Service, redirecting to one of the gateways)?
244- 1 . Are gRPC API calls for configuring subsystems/namespaces different?
245- 1 . A Gateway or Gateway Group should probably be configured by the admin in
246- the StorageClass (different StorageClasses for different Gateway
247- Groups).
236+ 1 . Is there a single address for a group that can be used (like a
237+ Kubernetes Service, redirecting to one of the gateways)?
238+ 1 . Are gRPC API calls for configuring subsystems/namespaces different?
239+ 1 . A Gateway or Gateway Group should probably be configured by the admin in
240+ the StorageClass (different StorageClasses for different Gateway
241+ Groups).
248242
249243 Gateway groups are recommended to use, it provides high-availability. This
250244 means that the Node-plugin should use ` nvme connect-all ` and only call `nvme
251245 disconnect` when the last volume is detached from the host in
252246 NodeUnstageVolume.
253-
254- - What component should create the NVMe-subsystem(s)?
255-
256- There are two options for creating a subsystem:
257-
258- 1 . Should be created in advance while deploying the NVMe-oF Gateway (would be
259- empty). The subsystem should be included in the parameters of the
260- StorageClass. All NVMe-namespaces would be added to a the single subsystem.
261-
262- 1 . The Controller-plugin creates the namespace during CreateVolume. This
263- would allow additional logic for placing namespaces in different
264- subsystems (based on Kubernetes namespaces aka tenants).
0 commit comments