Skip to content

Commit 1411575

Browse files
authored
Merge pull request #268 from scality/bugfix/S3CSI-195-fix-node-publish-creds-usage
S3CSI-195: Change length of access keys and update documentation + v2.0.1 bump
2 parents faec777 + 61b01f3 commit 1411575

File tree

23 files changed

+488
-96
lines changed

23 files changed

+488
-96
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
SHELL = /bin/bash
1616

1717
# MP CSI Driver version
18-
VERSION=2.0.0
18+
VERSION=2.0.1
1919

2020
# List of allowed licenses in the CSI Driver's dependencies.
2121
# See https://github.com/google/licenseclassifier/blob/e6a9bb99b5a6f71d5a34336b8245e305f5430f99/license_type.go#L28 for list of canonical names for licenses.

charts/scality-mountpoint-s3-csi-driver/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: v2
22
name: scality-mountpoint-s3-csi-driver
33
description: A Helm chart for installing the Mountpoint for Scality CSI Driver for S3. This CSI driver allows your Kubernetes applications to access S3 objects through a file system interface.
4-
version: 2.0.0
4+
version: 2.0.1
55
kubeVersion: ">=1.30.0-0"
66
home: https://github.com/scality/mountpoint-s3-csi-driver
77
sources:

charts/scality-mountpoint-s3-csi-driver/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ image:
2424
repository: ghcr.io/scality/mountpoint-s3-csi-driver
2525
pullPolicy: IfNotPresent
2626
# Overrides the image tag whose default is the chart appVersion.
27-
tag: "2.0.0"
27+
tag: "2.0.1"
2828

2929
# Node plugin configuration (DaemonSet)
3030
node:

docs/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ Container images for the Scality CSI Driver for S3 are hosted on GHCR:
3535

3636
| Driver Version | Image URL |
3737
|---------------|----------------------------------------------------------------------------|
38-
| 2.0.0 | `ghcr.io/scality/mountpoint-s3-csi-driver:2.0.0` |
38+
| 2.0.1 | `ghcr.io/scality/mountpoint-s3-csi-driver:2.0.1` |
3939

40-
Review [release notes](release-notes.md) for breaking changes and the [releases page](https://github.com/scality/mountpoint-s3-csi-driver/releases) for complete changelog details.
40+
Review [release notes](release-notes.md) for overview of changes and the [releases page](https://github.com/scality/mountpoint-s3-csi-driver/releases) for complete changelog details.
4141

4242
??? note "Previous Images"
4343
| Driver Version | Image URL |
4444
|---------------|----------------------------------------------------------------------------|
45+
| 2.0.0 | `ghcr.io/scality/mountpoint-s3-csi-driver:2.0.0` |
4546
| 1.2.0 | `ghcr.io/scality/mountpoint-s3-csi-driver:1.2.0` |
4647
| 1.1.1 | `ghcr.io/scality/mountpoint-s3-csi-driver:1.1.1` |
4748
| 1.1.0 | `ghcr.io/scality/mountpoint-s3-csi-driver:1.1.0` |

docs/architecture/ring-s3-credentials-management/dynamic-provisioning-credentials-management.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,25 @@ For dynamic provisioning, credentials are used at two different stages:
126126
!!! tip "Security Best Practice"
127127
Use different credentials for provisioner (admin) and node-publish (user) operations to implement principle of least privilege.
128128

129+
!!! important "Secret Configuration Requirement"
130+
**Both `provisioner-secret` and `node-publish-secret` must be configured together** when using secret-based authentication for dynamic provisioning.
131+
The controller uses `provisioner-secret` presence to determine if secret-based authentication is enabled
132+
(it cannot directly detect `node-publish-secret` due to CSI specification limitations).
133+
134+
**Technical Background:**
135+
136+
The CSI external-provisioner strips all `csi.storage.k8s.io/*` prefixed parameters from `CreateVolumeRequest`:
137+
138+
- `provisioner-secret-*` parameters → Resolved and VALUES passed in `req.GetSecrets()`
139+
- `node-publish-secret-*` parameters → Stored in `PV.Spec.CSI.NodePublishSecretRef` (not visible during CreateVolume)
140+
141+
The controller cannot directly detect if only `node-publish-secret` is configured, so it uses `provisioner-secret` presence as a proxy indicator for secret-based authentication.
142+
143+
**Workaround for Node-Only Use Case:**
144+
145+
If you only need credentials for mounting (not bucket creation), configure both secrets pointing to the same Secret.
146+
Example: set both `provisioner-secret-name` and `node-publish-secret-name` to "shared-credentials" in the same namespace.
147+
129148
### Example 1: Same Credentials for Both Operations
130149

131150
```yaml title="StorageClass with fixed secret names for both provisioner and node-publish"
@@ -145,7 +164,9 @@ parameters:
145164
region: "us-west-2"
146165
```
147166

148-
### Example 2: Separate Admin and User Credentials
167+
### Example 2: Separate Admin and User Credentials (Recommended)
168+
169+
This is the **recommended approach** for production environments, implementing the principle of least privilege with different credentials for controller and node operations.
149170

150171
```yaml title="StorageClass with separate admin (provisioner) and user (node-publish) secret names"
151172
apiVersion: storage.k8s.io/v1

docs/concepts-and-reference/helm-chart-configuration-reference.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ These parameters configure the overall behavior of the CSI driver components.
1818
|------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------|-----------------------------|
1919
| `image.repository` | The container image repository for the CSI driver. | `ghcr.io/scality/mountpoint-s3-csi-driver` | No |
2020
| `image.pullPolicy` | The image pull policy. | `IfNotPresent` | No |
21-
| `image.tag` | The image tag for the CSI driver. Overrides the chart's `appVersion` if set. | `2.0.0` | No |
21+
| `image.tag` | The image tag for the CSI driver. Overrides the chart's `appVersion` if set. | `2.0.1` | No |
2222

2323
## S3 Global Configuration
2424

@@ -116,11 +116,11 @@ These parameters configure the overall behavior of the CSI driver components.
116116
| `controller.serviceAccount.create` | Specifies whether a ServiceAccount should be created for the controller. | `true` | No |
117117
| `controller.serviceAccount.name` | Name of the ServiceAccount to use for the controller. | `s3-csi-driver-controller-sa` | No |
118118

119-
## Mountpoint Pod Configuration (v2.0.0+)
119+
## Mountpoint Pod Configuration (v2.0)
120120

121121
<!-- markdownlint-disable MD046 -->
122122
!!! info "Pod Mounter Strategy"
123-
Version 2.0.0 uses pod-based mounter as the default strategy. Mounter pods are created in the `mount-s3` namespace to handle S3 mount operations with improved isolation and resource management.
123+
Version 2.0 uses pod-based mounter as the default strategy. Mounter pods are created in the `mount-s3` namespace to handle S3 mount operations with improved isolation and resource management.
124124
<!-- markdownlint-enable MD046 -->
125125

126126
| Parameter | Description | Default | Required |
@@ -133,7 +133,7 @@ These parameters configure the overall behavior of the CSI driver components.
133133
| `mountpointPod.headroomImage.tag` | Image tag for headroom pods. | `3.10` | No |
134134
| `mountpointPod.headroomImage.pullPolicy` | Image pull policy for headroom pods. | `IfNotPresent` | No |
135135

136-
## CRD Cleanup Configuration (v2.0.0+)
136+
## CRD Cleanup Configuration (v2.0)
137137

138138
| Parameter | Description | Default | Required |
139139
|------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------|-----------------------------|

docs/driver-deployment/installation-guide.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ Deploy the driver with minimal configuration.
118118
```bash
119119
helm install scality-mountpoint-s3-csi-driver \
120120
oci://ghcr.io/scality/mountpoint-s3-csi-driver/helm-charts/scality-mountpoint-s3-csi-driver \
121-
--version 2.0.0 \
121+
--version 2.0.1 \
122122
--set node.s3EndpointUrl="${S3_ENDPOINT_URL}" \
123123
--set s3CredentialSecret.name="${SECRET_NAME}" \
124124
--namespace ${NAMESPACE}
@@ -192,7 +192,7 @@ Deploy the driver using the custom values file.
192192
```bash
193193
helm install scality-mountpoint-s3-csi-driver \
194194
oci://ghcr.io/scality/mountpoint-s3-csi-driver/helm-charts/scality-mountpoint-s3-csi-driver \
195-
--version 2.0.0 \
195+
--version 2.0.1 \
196196
--values values-production.yaml \
197197
--namespace ${NAMESPACE}
198198
```
@@ -227,7 +227,7 @@ Expected output: The CRD should be present with status `Ready`.
227227
228228
!!! info "CRD Installation"
229229
For fresh installs, Helm v3 automatically installs CRDs from the chart's `crds/` directory.
230-
For upgrades from v1.x to v2.0.0, CRDs must be installed manually before upgrading. See the [Upgrade Guide](upgrade-guide.md) for details.
230+
For upgrades from v1.x to v2.0, CRDs must be installed manually before upgrading. See the [Upgrade Guide](upgrade-guide.md) for details.
231231

232232
### Check Driver Logs (Optional)
233233

@@ -247,7 +247,7 @@ NodeGetInfo: called with args {}
247247
```
248248

249249
!!! note "Mounter Strategy"
250-
Version 2.0.0 uses pod-based mounter by default. The mounter pods will be created in the `mount-s3` namespace when volumes are first mounted.
250+
Version 2.0 uses pod-based mounter by default. The mounter pods will be created in the `mount-s3` namespace when volumes are first mounted.
251251

252252
## Uninstallation
253253

docs/driver-deployment/prerequisites.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ The deployment of the Scality CSI Driver for S3 requires access to several conta
2525

2626
| Component | Image | Registry | Purpose |
2727
|-----------|-------|----------|---------|
28-
| **Scality CSI Driver for S3** | `ghcr.io/scality/mountpoint-s3-csi-driver:2.0.0` | GitHub Container Registry (GHCR) | Main CSI driver functionality |
28+
| **Scality CSI Driver for S3** | `ghcr.io/scality/mountpoint-s3-csi-driver:2.0.1` | GitHub Container Registry (GHCR) | Main CSI driver functionality |
2929
| **CSI Node Driver Registrar** | `ghcr.io/scality/mountpoint-s3-csi-driver/csi-node-driver-registrar:v2.14.0` | GitHub Container Registry (GHCR) | Registers CSI driver with kubelet |
3030
| **Liveness Probe** | `ghcr.io/scality/mountpoint-s3-csi-driver/livenessprobe:v2.16.0` | GitHub Container Registry (GHCR) | Health monitoring for CSI driver pods |
3131
| **CSI Provisioner** | `ghcr.io/scality/mountpoint-s3-csi-driver/csi-provisioner:v5.3.0` | GitHub Container Registry (GHCR) | External provisioner for CSI driver (Dynamic provisioning feature) |

docs/driver-deployment/quick-start.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ kubectl create secret generic s3-secret \
4747
helm install \
4848
scality-mountpoint-s3-csi-driver \
4949
oci://ghcr.io/scality/mountpoint-s3-csi-driver/helm-charts/scality-mountpoint-s3-csi-driver \
50-
--version 2.0.0 \
50+
--version 2.0.1 \
5151
--set node.s3EndpointUrl="${S3_ENDPOINT_URL}"
5252
```
5353

@@ -79,8 +79,8 @@ Verify CRD installation:
7979
kubectl get crd mountpoints3podattachments.s3.csi.scality.com
8080
```
8181

82-
!!! info "v2.0.0 Features"
83-
Version 2.0.0 introduces the MountpointS3PodAttachment CRD and pod-based mounter. The `mount-s3` namespace will be automatically created when volumes are first mounted.
82+
!!! info "v2.0 Features"
83+
Version 2.0 introduces the MountpointS3PodAttachment CRD and pod-based mounter. The `mount-s3` namespace will be automatically created when volumes are first mounted.
8484

8585
## Uninstallation
8686

docs/driver-deployment/uninstallation.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ kubectl get pv -o json | jq -r '.items[] | select(.spec.csi.driver == "s3.csi.sc
4848
# Delete PVs as needed
4949
```
5050

51-
### Step 3: Remove MountpointS3PodAttachment CRDs and Mounter Pods (v2.0.0+)
51+
### Step 3: Remove MountpointS3PodAttachment CRDs and Mounter Pods (v2.0+)
5252

53-
!!! info "v2.0.0 Cleanup"
54-
Version 2.0.0 introduces MountpointS3PodAttachment CRD instances and mounter pods that must be cleaned up before uninstalling.
53+
!!! info "v2.0 Cleanup"
54+
Version 2.0 introduces MountpointS3PodAttachment CRD instances and mounter pods that must be cleaned up before uninstalling.
5555

5656
Delete all MountpointS3PodAttachment CRD instances:
5757

@@ -121,7 +121,7 @@ kubectl get namespace mount-s3
121121
kubectl delete namespace mount-s3
122122
```
123123

124-
### Step 5: Remove CRD Definitions (v2.0.0+)
124+
### Step 5: Remove CRD Definitions (v2.0)
125125

126126
!!! warning "CRD Removal"
127127
Helm v3 does **not** automatically delete CRDs on uninstall. CRDs must be manually removed if they are no longer needed.

0 commit comments

Comments
 (0)