@@ -41,35 +41,37 @@ import (
41
41
42
42
const (
43
43
// DriverName holds the name of the csi-driver
44
- DriverName = "blob.csi.azure.com"
45
- blobCSIDriverName = "blob_csi_driver"
46
- separator = "#"
47
- volumeIDTemplate = "%s#%s#%s"
48
- secretNameTemplate = "azure-storage-account-%s-secret"
49
- serverNameField = "server"
50
- storageEndpointSuffixField = "storageendpointsuffix"
51
- tagsField = "tags"
52
- protocolField = "protocol"
53
- accountNameField = "accountname"
54
- accountKeyField = "accountkey"
55
- storageAccountField = "storageaccount"
56
- storageAccountTypeField = "storageaccounttype"
57
- skuNameField = "skuname"
58
- resourceGroupField = "resourcegroup"
59
- locationField = "location"
60
- secretNameField = "secretname"
61
- secretNamespaceField = "secretnamespace"
62
- containerNameField = "containername"
63
- storeAccountKeyField = "storeaccountkey"
64
- keyVaultURLField = "keyvaulturl"
65
- keyVaultSecretNameField = "keyvaultsecretname"
66
- keyVaultSecretVersionField = "keyvaultsecretversion"
67
- storageAccountNameField = "storageaccountname"
68
- storeAccountKeyFalse = "false"
69
- defaultSecretAccountName = "azurestorageaccountname"
70
- defaultSecretAccountKey = "azurestorageaccountkey"
71
- fuse = "fuse"
72
- nfs = "nfs"
44
+ DriverName = "blob.csi.azure.com"
45
+ blobCSIDriverName = "blob_csi_driver"
46
+ separator = "#"
47
+ volumeIDTemplate = "%s#%s#%s"
48
+ secretNameTemplate = "azure-storage-account-%s-secret"
49
+ serverNameField = "server"
50
+ storageEndpointSuffixField = "storageendpointsuffix"
51
+ tagsField = "tags"
52
+ protocolField = "protocol"
53
+ accountNameField = "accountname"
54
+ accountKeyField = "accountkey"
55
+ storageAccountField = "storageaccount"
56
+ storageAccountTypeField = "storageaccounttype"
57
+ skuNameField = "skuname"
58
+ resourceGroupField = "resourcegroup"
59
+ locationField = "location"
60
+ secretNameField = "secretname"
61
+ secretNamespaceField = "secretnamespace"
62
+ containerNameField = "containername"
63
+ storeAccountKeyField = "storeaccountkey"
64
+ getAccountKeyFromSecretField = "getaccountkeyfromsecret"
65
+ keyVaultURLField = "keyvaulturl"
66
+ keyVaultSecretNameField = "keyvaultsecretname"
67
+ keyVaultSecretVersionField = "keyvaultsecretversion"
68
+ storageAccountNameField = "storageaccountname"
69
+ falseValue = "false"
70
+ trueValue = "true"
71
+ defaultSecretAccountName = "azurestorageaccountname"
72
+ defaultSecretAccountKey = "azurestorageaccountkey"
73
+ fuse = "fuse"
74
+ nfs = "nfs"
73
75
74
76
// See https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#container-names
75
77
containerNameMinLength = 3
@@ -238,14 +240,15 @@ func (d *Driver) GetAuthEnv(ctx context.Context, volumeID, protocol string, attr
238
240
}
239
241
240
242
var (
241
- accountKey string
242
- accountSasToken string
243
- secretName string
244
- secretNamespace string
245
- keyVaultURL string
246
- keyVaultSecretName string
247
- keyVaultSecretVersion string
248
- authEnv []string
243
+ accountKey string
244
+ accountSasToken string
245
+ secretName string
246
+ secretNamespace string
247
+ keyVaultURL string
248
+ keyVaultSecretName string
249
+ keyVaultSecretVersion string
250
+ authEnv []string
251
+ getAccountKeyFromSecret bool
249
252
)
250
253
251
254
for k , v := range attrib {
@@ -266,6 +269,10 @@ func (d *Driver) GetAuthEnv(ctx context.Context, volumeID, protocol string, attr
266
269
secretName = v
267
270
case secretNamespaceField :
268
271
secretNamespace = v
272
+ case getAccountKeyFromSecretField :
273
+ if v == trueValue {
274
+ getAccountKeyFromSecret = true
275
+ }
269
276
case "azurestorageauthtype" :
270
277
authEnv = append (authEnv , "AZURE_STORAGE_AUTH_TYPE=" + v )
271
278
case "azurestorageidentityclientid" :
@@ -314,7 +321,10 @@ func (d *Driver) GetAuthEnv(ctx context.Context, volumeID, protocol string, attr
314
321
// read from k8s secret first
315
322
var name string
316
323
name , accountKey , err = d .GetStorageAccountFromSecret (secretName , secretNamespace )
317
- if err != nil {
324
+ if name != "" {
325
+ accountName = name
326
+ }
327
+ if err != nil && ! getAccountKeyFromSecret {
318
328
klog .V (2 ).Infof ("could not get account(%s) key from secret, error: %v, use cluster identity to get account key instead" , accountName , err )
319
329
if rgName == "" {
320
330
rgName = d .cloud .ResourceGroup
0 commit comments