Skip to content

Commit f22b362

Browse files
authored
Merge pull request #435 from andyzhangx/remove-default-secret-namespace
feat: store secret in pod.Namespace if not specified
2 parents 33120c3 + de58ff0 commit f22b362

File tree

7 files changed

+34
-17
lines changed

7 files changed

+34
-17
lines changed
9 Bytes
Binary file not shown.

charts/latest/blob-csi-driver/templates/csi-blob-controller.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ spec:
6060
- "--csi-address=$(ADDRESS)"
6161
- "--leader-election"
6262
- "--timeout=60s"
63+
- "--extra-create-metadata=true"
6364
env:
6465
- name: ADDRESS
6566
value: /csi/csi.sock

deploy/csi-blob-controller.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ spec:
3636
- "--csi-address=$(ADDRESS)"
3737
- "--leader-election"
3838
- "--timeout=60s"
39+
- "--extra-create-metadata=true"
3940
env:
4041
- name: ADDRESS
4142
value: /csi/csi.sock

pkg/blob/blob.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ const (
6868
storeAccountKeyFalse = "false"
6969
defaultSecretAccountName = "azurestorageaccountname"
7070
defaultSecretAccountKey = "azurestorageaccountkey"
71-
defaultSecretNamespace = "default"
7271
fuse = "fuse"
7372
nfs = "nfs"
7473

@@ -86,6 +85,10 @@ const (
8685
containerMaxSize = 100 * util.TiB
8786

8887
subnetTemplate = "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s"
88+
89+
pvcNameKey = "csi.storage.k8s.io/pvc/name"
90+
pvcNamespaceKey = "csi.storage.k8s.io/pvc/namespace"
91+
pvNameKey = "csi.storage.k8s.io/pv/name"
8992
)
9093

9194
var (
@@ -495,13 +498,10 @@ func setAzureCredentials(kubeClient kubernetes.Interface, accountName, accountKe
495498
if accountName == "" || accountKey == "" {
496499
return "", fmt.Errorf("the account info is not enough, accountName(%v), accountKey(%v)", accountName, accountKey)
497500
}
498-
if secretNamespace == "" {
499-
secretNamespace = defaultSecretNamespace
500-
}
501501
secretName := fmt.Sprintf(secretNameTemplate, accountName)
502502
secret := &v1.Secret{
503503
ObjectMeta: metav1.ObjectMeta{
504-
Namespace: defaultSecretNamespace,
504+
Namespace: secretNamespace,
505505
Name: secretName,
506506
},
507507
Data: map[string][]byte{

pkg/blob/controllerserver.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,15 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
9191
secretNamespace = v
9292
case storeAccountKeyField:
9393
storeAccountKey = v
94+
case pvcNamespaceKey:
95+
if secretNamespace == "" {
96+
// respect `secretNamespace` field as first priority
97+
secretNamespace = v
98+
}
99+
case pvcNameKey:
100+
// no op
101+
case pvNameKey:
102+
// no op
94103
case serverNameField:
95104
// no op, only used in NodeStageVolume
96105
case storageEndpointSuffixField:
@@ -228,6 +237,8 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
228237
klog.V(2).Infof("create container %s on storage account %s successfully", validContainerName, accountName)
229238

230239
isOperationSucceeded = true
240+
// reset secretNamespace field in VolumeContext
241+
parameters[secretNamespaceField] = secretNamespace
231242
return &csi.CreateVolumeResponse{
232243
Volume: &csi.Volume{
233244
VolumeId: volumeID,

test/e2e/dynamic_provisioning_test.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,12 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() {
7878
},
7979
}
8080
test := testsuites.DynamicallyProvisionedCmdVolumeTest{
81-
CSIDriver: testDriver,
82-
Pods: pods,
83-
StorageClassParameters: map[string]string{"skuName": "Standard_LRS"},
81+
CSIDriver: testDriver,
82+
Pods: pods,
83+
StorageClassParameters: map[string]string{
84+
"skuName": "Standard_LRS",
85+
"secretNamespace": "default",
86+
},
8487
}
8588
test.Run(cs, ns)
8689
})
@@ -375,7 +378,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() {
375378
accountName := segments[3]
376379

377380
containerName := "csi-inline-blobfuse-volume"
378-
req := makeCreateVolumeReq(containerName)
381+
req := makeCreateVolumeReq(containerName, ns.Name)
379382
req.Parameters["storageAccount"] = accountName
380383
resp, err := blobDriver.CreateVolume(context.Background(), req)
381384
if err != nil {

test/e2e/pre_provisioning_test.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Pre-Provisioned", func() {
7979
})
8080

8181
ginkgo.It("[env] should use a pre-provisioned volume and mount it as readOnly in a pod", func() {
82-
req := makeCreateVolumeReq("pre-provisioned-readonly")
82+
req := makeCreateVolumeReq("pre-provisioned-readonly", ns.Name)
8383
resp, err := blobDriver.CreateVolume(context.Background(), req)
8484
if err != nil {
8585
ginkgo.Fail(fmt.Sprintf("create volume error: %v", err))
@@ -113,7 +113,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Pre-Provisioned", func() {
113113
})
114114

115115
ginkgo.It(fmt.Sprintf("[env] should use a pre-provisioned volume and retain PV with reclaimPolicy %q", v1.PersistentVolumeReclaimRetain), func() {
116-
req := makeCreateVolumeReq("pre-provisioned-retain-reclaimpolicy")
116+
req := makeCreateVolumeReq("pre-provisioned-retain-reclaimpolicy", ns.Name)
117117
resp, err := blobDriver.CreateVolume(context.Background(), req)
118118
if err != nil {
119119
ginkgo.Fail(fmt.Sprintf("create volume error: %v", err))
@@ -142,7 +142,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Pre-Provisioned", func() {
142142
volumeSize := fmt.Sprintf("%dGi", defaultVolumeSize)
143143
pods := []testsuites.PodDetails{}
144144
for i := 1; i <= 6; i++ {
145-
req := makeCreateVolumeReq(fmt.Sprintf("pre-provisioned-multiple-pods%d", time.Now().UnixNano()))
145+
req := makeCreateVolumeReq(fmt.Sprintf("pre-provisioned-multiple-pods%d", time.Now().UnixNano()), ns.Name)
146146
resp, err := blobDriver.CreateVolume(context.Background(), req)
147147
if err != nil {
148148
ginkgo.Fail(fmt.Sprintf("create volume error: %v", err))
@@ -174,7 +174,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Pre-Provisioned", func() {
174174
})
175175

176176
ginkgo.It("should use existing credentials in k8s cluster", func() {
177-
req := makeCreateVolumeReq("pre-provisioned-existing-credentials")
177+
req := makeCreateVolumeReq("pre-provisioned-existing-credentials", ns.Name)
178178
resp, err := blobDriver.CreateVolume(context.Background(), req)
179179
if err != nil {
180180
ginkgo.Fail(fmt.Sprintf("create volume error: %v", err))
@@ -212,7 +212,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Pre-Provisioned", func() {
212212
})
213213

214214
ginkgo.It("should use provided credentials", func() {
215-
req := makeCreateVolumeReq("pre-provisioned-provided-credentials")
215+
req := makeCreateVolumeReq("pre-provisioned-provided-credentials", ns.Name)
216216
resp, err := blobDriver.CreateVolume(context.Background(), req)
217217
if err != nil {
218218
ginkgo.Fail(fmt.Sprintf("create volume error: %v", err))
@@ -252,7 +252,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Pre-Provisioned", func() {
252252
})
253253
})
254254

255-
func makeCreateVolumeReq(volumeName string) *csi.CreateVolumeRequest {
255+
func makeCreateVolumeReq(volumeName, secretNamespace string) *csi.CreateVolumeRequest {
256256
req := &csi.CreateVolumeRequest{
257257
Name: volumeName,
258258
VolumeCapabilities: []*csi.VolumeCapability{
@@ -270,8 +270,9 @@ func makeCreateVolumeReq(volumeName string) *csi.CreateVolumeRequest {
270270
LimitBytes: defaultVolumeSizeBytes,
271271
},
272272
Parameters: map[string]string{
273-
"skuname": "Standard_LRS",
274-
"containerName": volumeName,
273+
"skuname": "Standard_LRS",
274+
"containerName": volumeName,
275+
"secretNamespace": secretNamespace,
275276
},
276277
}
277278

0 commit comments

Comments
 (0)