Skip to content

merge queue: embarking devel (4eb84a0) and #5913 together#6060

Closed
mergify[bot] wants to merge 9 commits into
develfrom
mergify/merge-queue/56ca2da0cf
Closed

merge queue: embarking devel (4eb84a0) and #5913 together#6060
mergify[bot] wants to merge 9 commits into
develfrom
mergify/merge-queue/56ca2da0cf

Conversation

@mergify

@mergify mergify Bot commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

🎉 This pull request has been checked successfully and will be merged soon. 🎉

Branch devel (4eb84a0) and #5913 are embarked together for merge.

This pull request has been created by Mergify to speculatively check the mergeability of #5913.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.

Required conditions of queue default for merge:

  • #approved-reviews-by >= 2 [🛡 GitHub branch protection]
  • #changes-requested-reviews-by = 0 [🛡 GitHub branch protection]
  • any of:
    • all of:
      • base=devel
      • status-success=codespell
      • status-success=go-test
      • status-success=golangci-lint
      • status-success=lint-extras
      • status-success=mod-check
      • status-success=multi-arch-build
      • status-success=uncommitted-code-check
      • any of:
        • label=ci/skip/e2e
        • all of:
          • status-success=ci/centos/k8s-e2e-external-storage/1.33
          • status-success=ci/centos/k8s-e2e-external-storage/1.34
          • status-success=ci/centos/k8s-e2e-external-storage/1.35
          • status-success=ci/centos/mini-e2e-helm/k8s-1.33
          • status-success=ci/centos/mini-e2e-helm/k8s-1.34
          • status-success=ci/centos/mini-e2e-helm/k8s-1.35
          • status-success=ci/centos/mini-e2e/k8s-1.33
          • status-success=ci/centos/mini-e2e/k8s-1.34
          • status-success=ci/centos/mini-e2e/k8s-1.35
          • status-success=ci/centos/upgrade-tests-cephfs
          • status-success=ci/centos/upgrade-tests-rbd
    • all of:
      • base~=^(release-.+)$
      • status-success=codespell
      • status-success=go-test
      • status-success=golangci-lint
      • status-success=lint-extras
      • status-success=mod-check
      • status-success=multi-arch-build
      • status-success=uncommitted-code-check
      • any of:
        • label=ci/skip/e2e
        • all of:
          • status-success=ci/centos/k8s-e2e-external-storage/1.32
          • status-success=ci/centos/mini-e2e-helm/k8s-1.32
          • status-success=ci/centos/mini-e2e/k8s-1.32
          • status-success=ci/centos/k8s-e2e-external-storage/1.33
          • status-success=ci/centos/k8s-e2e-external-storage/1.34
          • status-success=ci/centos/mini-e2e-helm/k8s-1.33
          • status-success=ci/centos/mini-e2e-helm/k8s-1.34
          • status-success=ci/centos/mini-e2e/k8s-1.33
          • status-success=ci/centos/mini-e2e/k8s-1.34
          • status-success=ci/centos/upgrade-tests-cephfs
          • status-success=ci/centos/upgrade-tests-rbd
    • all of:
      • base=release-v3.15
      • status-success=codespell
      • status-success=go-test
      • status-success=golangci-lint
      • status-success=lint-extras
      • status-success=mod-check
      • status-success=multi-arch-build
      • status-success=uncommitted-code-check
      • any of:
        • label=ci/skip/e2e
        • all of:
          • status-success=ci/centos/k8s-e2e-external-storage/1.31
          • status-success=ci/centos/k8s-e2e-external-storage/1.32
          • status-success=ci/centos/mini-e2e-helm/k8s-1.31
          • status-success=ci/centos/mini-e2e-helm/k8s-1.32
          • status-success=ci/centos/mini-e2e/k8s-1.31
          • status-success=ci/centos/mini-e2e/k8s-1.32
          • status-success=ci/centos/k8s-e2e-external-storage/1.33
          • status-success=ci/centos/mini-e2e-helm/k8s-1.33
          • status-success=ci/centos/mini-e2e/k8s-1.33
          • status-success=ci/centos/upgrade-tests-cephfs
          • status-success=ci/centos/upgrade-tests-rbd
    • all of:
      • base=ci/centos
      • status-success=ci/centos/jjb-validate
      • status-success=ci/centos/job-validation

Required conditions to stay in the queue:

---
checking_base_sha: 4eb84a08b08c2a23af2c73b7733cd7a1414f2555
previous_failed_batches: []
pull_requests:
  - number: 5913
...

gadididi and others added 9 commits February 11, 2026 18:30
Implement SecurityKeyNVMEOFManager to manage NVMe-oF DH-CHAP authentication
keys using pluggable KMS backends (Vault, metadata KMS, etc).
In the future will be used also for tls\psk keys

- Encrypts/decrypts keys using KMS
- Supports both integrated KMS (Vault) and external DEKStore (RBD metadata)
- Provides StoreKey/GetKey/RemoveKey for key lifecycle management

Defaults to "metadata" KMS for **testing**,
which stores encrypted keys
in RBD image metadata via external DEKStore.

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
Add DH-CHAP authentication key operations for NVMe-oF connections:

- generateDHCHAPKey(): Creates NVMe spec-compliant keys in
  DHHC-1:hash:base64:crc32 format (supports SHA-256/384/512)
- GetOrCreateDHCHAPHostKey/SubsystemKey(): Manages per-connection keys
- buildDHCHAPKeyID(): Generates unique key IDs using nodeID and
  hashed subsystemNQN (e.g., nvmeof-dhchap-host-node1-abc123)

Keys are stored/retrieved via SecurityKeyNVMEOFManager using KMS
encryption. Each node-subsystem pair gets a unique authentication key.

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
- get the dhchap mode- it can be
"none", "unidirectional", "bidirectional", or empty
and store it in volumeContext (for ControllerPublishVolume())
- get authenticationKMSID var. also can
be empty. and store it in volumeContext.

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
adding these vars because there are going to be in used
in removing dh-chap keys- in ControllerunPblishVoluem().

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
Implement kms.DEKStore using RBD image metadata for testing/development.
Stores encrypted DH-CHAP keys as metadata entries in the backing RBD image.

- Keys stored with prefix "nvmeof.csi.ceph.com/" to distinguish from
  volume encryption and NVMe-oF resource metadata
- Used with "metadata" KMS type (secrets-metadata) for POC/testing
- Production deployments should use Vault KMS with integrated storage

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
add instace of SecurityKeyNVMEOFManager into
controller server struct.
also add getOrInitSecurityKeys() ,
lazy init for SecurityKeyNVMEOFManager struct.
this field is the manager of sercurity things like dh-chap
psk\tls.

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
Implement DH-CHAP authentication for NVMe-oF host connections with
pluggable KMS backend support for secure key management.

Changes:
- setupDHCHAPKeys(): Initialize KMS, retrieve/generate host authentication
  keys, and configure DEKStore (RBD metadata for testing, Vault for prod)
- cleanupDHCHAPKeys(): Remove DH-CHAP keys during ControllerUnpublishVolume
- Update AddHost() to accept optional DH-CHAP host key parameter
- Add dhchapMode volume context parameter (none/unidirectional/bidirectional)

Authentication flow:
1. Parse dhchapMode from volume context (defaults to "metadata" KMS)
2. Initialize SecurityKeyNVMEOFManager with KMS credentials
3. For metadata KMS: Set RBD volume as DEKStore (test mode only)
4. GetOrCreateDHCHAPHostKey() retrieves existing or generates new key
5. Pass encrypted key to gateway AddHost() call

Keys are stored per node-subsystem pair, encrypted with KMS (KEK from
K8s Secret), and persist across volume operations. Production deployments
should use Vault KMS with integrated DEK storage.

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
Implement DH-CHAP authentication for NVMe-oF initiator connections
with support for both unidirectional and bidirectional modes.

Changes:
- setupDHCHAPAuth(): Retrieve host/subsystem keys from KMS and configure
  ConnectRequest with authentication parameters
- Pass dhchapMode from volume context through connection flow
- Add --dhchap-secret and --dhchap-ctrl-secret to nvme connect command
- Support RBD metadata DEKStore (testing) and Vault KMS (production)

Authentication flow:
1. NodeStageVolume receives dhchapMode from volume context
2. Initialize SecurityKeyNVMEOFManager with same KMS as controller
3. Retrieve existing DH-CHAP keys (generated during ControllerPublishVolume)
4. For unidirectional: Add host key to nvme connect
5. For bidirectional: Add both host and subsystem keys

Signed-off-by: gadi-didi <gadi.didi@ibm.com>
@ceph-csi-bot ceph-csi-bot added ci/skip/e2e skip running e2e CI jobs component/nvme-of Issues and PRs related to NVMe-oF. queued ok-to-test Label to trigger E2E tests labels Feb 13, 2026
@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/k8s-e2e-external-storage/1.35

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/mini-e2e-helm/k8s-1.35

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/upgrade-tests-cephfs

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/k8s-e2e-external-storage/1.33

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/mini-e2e/k8s-1.35

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/upgrade-tests-rbd

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/k8s-e2e-external-storage/1.34

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/mini-e2e-helm/k8s-1.33

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/mini-e2e/k8s-1.33

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/mini-e2e-helm/k8s-1.34

@ceph-csi-bot

Copy link
Copy Markdown
Collaborator

/test ci/centos/mini-e2e/k8s-1.34

@ceph-csi-bot ceph-csi-bot removed the ok-to-test Label to trigger E2E tests label Feb 13, 2026
@mergify mergify Bot closed this Feb 13, 2026
@mergify mergify Bot deleted the mergify/merge-queue/56ca2da0cf branch February 13, 2026 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/skip/e2e skip running e2e CI jobs component/nvme-of Issues and PRs related to NVMe-oF. queued

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants