From 8e12101c310b44a572c2e96de629cc6727201d99 Mon Sep 17 00:00:00 2001 From: Angel Misevski Date: Thu, 20 Jul 2023 13:12:16 -0400 Subject: [PATCH 1/2] Update automount functionality to include CM binaryData with subpath Include keys in binaryData when auto-mounting a configmap as subpaths volumeMounts. Signed-off-by: Angel Misevski --- pkg/provision/automount/configmap.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/provision/automount/configmap.go b/pkg/provision/automount/configmap.go index fe274d634..2a3462e6b 100644 --- a/pkg/provision/automount/configmap.go +++ b/pkg/provision/automount/configmap.go @@ -114,9 +114,18 @@ func getAutomountConfigmap(mountPath, mountAs string, accessMode *int32, configm automount.EnvFromSource = []corev1.EnvFromSource{envFromSource} case constants.DevWorkspaceMountAsSubpath: var volumeMounts []corev1.VolumeMount + volumeName := common.AutoMountConfigMapVolumeName(configmap.Name) for secretKey := range configmap.Data { volumeMounts = append(volumeMounts, corev1.VolumeMount{ - Name: common.AutoMountConfigMapVolumeName(configmap.Name), + Name: volumeName, + ReadOnly: true, + MountPath: path.Join(mountPath, secretKey), + SubPath: secretKey, + }) + } + for secretKey := range configmap.BinaryData { + volumeMounts = append(volumeMounts, corev1.VolumeMount{ + Name: volumeName, ReadOnly: true, MountPath: path.Join(mountPath, secretKey), SubPath: secretKey, From 77d5ddbcc3ee3237185c341ba6c40ca300ed0a23 Mon Sep 17 00:00:00 2001 From: Angel Misevski Date: Thu, 20 Jul 2023 13:15:30 -0400 Subject: [PATCH 2/2] Add test case to cover subpath CM binaryData field Signed-off-by: Angel Misevski --- .../testIncludesConfigmapBinaryData.yaml | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 pkg/provision/automount/testdata/testIncludesConfigmapBinaryData.yaml diff --git a/pkg/provision/automount/testdata/testIncludesConfigmapBinaryData.yaml b/pkg/provision/automount/testdata/testIncludesConfigmapBinaryData.yaml new file mode 100644 index 000000000..13aed357c --- /dev/null +++ b/pkg/provision/automount/testdata/testIncludesConfigmapBinaryData.yaml @@ -0,0 +1,40 @@ +name: Includes configmap's binaryData field when provisioning + +input: + configmaps: + - + apiVersion: v1 + kind: ConfigMap + metadata: + name: test-subpath-configmap + labels: + controller.devfile.io/mount-to-devworkspace: "true" + controller.devfile.io/watch-configmap: 'true' + annotations: + controller.devfile.io/mount-as: subpath + controller.devfile.io/mount-path: /tmp/configmap/subpath + data: + configmap-key: "This is secret" + configmap-key-2: "This is also secret I guess" + binaryData: + binary-key: aGVsbG8K # "hello" + +output: + volumes: + - name: test-subpath-configmap + configmap: + name: test-subpath-configmap + defaultMode: 0640 + volumeMounts: + - name: test-subpath-configmap + readOnly: true + mountPath: /tmp/configmap/subpath/configmap-key + subpath: configmap-key + - name: test-subpath-configmap + readOnly: true + mountPath: /tmp/configmap/subpath/configmap-key-2 + subpath: configmap-key-2 + - name: test-subpath-configmap + readOnly: true + mountPath: /tmp/configmap/subpath/binary-key + subpath: binary-key