nvmeof: CSI Driver TLS/PSK Feature Implementation
- Dominant language
- Go
- Stars
- 1.6k
- Forks
- 617
- Avg merge
- 5d 10h
- Merged PRs (30d)
- 43
Description
# TLS-PSK Support for NVMe-oF CSI Driver
## Overview
Add TLS-PSK (Pre-Shared Key) support to enable encrypted NVMe-oF connections between Kubernetes nodes and Ceph gateways.
## Implementation Approach
### Key Storage (addressing @nixpanic feedback)
PSKs are stored using the existing DEKStore pattern, not Kubernetes Secrets:
- **Testing**: RBD image metadata
- **Production**: External KMS (Vault, AWS KMS, etc.)
- Keys are encrypted before storage using the SecurityKeyManager
- CSI-agnostic approach that works without Kubernetes
### Key Scope
**Per host-subsystem pair**
- Multiple volumes on the same host connecting to the same subsystem share one PSK
- Key ID format: `nvmeof-tls-psk--`
### Key Retrieval Pattern
Controller and node retrieve keys independently:
- Controller: Generates PSK during ControllerPublishVolume, stores in DEKStore
- Node: Retrieves same PSK during NodeStageVolume using identical key ID
- No secrets passed between controller and node
## Configuration
StorageClass parameter:
```yaml
parameters:
tlsPskMode: "enabled"
authenticationKMSID: "metadata" # or vault, aws-kms, etc.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.