@@ -9,7 +9,7 @@ IMAGE_TAG=v0.0.8-e2e-$(git rev-parse --short HEAD)
9
9
NAMESPACE=default
10
10
PROVIDER_YAML=https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer.yaml
11
11
CONTAINER_IMAGE=nginx
12
- EXEC_COMMAND=" cat /mnt/secrets-store "
12
+ EXEC_COMMAND=" cat"
13
13
BASE64_FLAGS=" -w 0"
14
14
if [[ " $OSTYPE " == * " darwin" * ]]; then
15
15
BASE64_FLAGS=" -b 0"
18
18
if [ $TEST_WINDOWS ]; then
19
19
PROVIDER_YAML=https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer-windows.yaml
20
20
CONTAINER_IMAGE=mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019
21
- EXEC_COMMAND=" powershell.exe cat /mnt/secrets-store "
21
+ EXEC_COMMAND=" powershell.exe cat"
22
22
fi
23
23
24
24
export KEYVAULT_NAME=${KEYVAULT_NAME:- csi-secrets-store-e2e}
@@ -40,7 +40,6 @@ setup() {
40
40
@test " install azure provider" {
41
41
run kubectl apply -f $PROVIDER_YAML --namespace $NAMESPACE
42
42
assert_success
43
- sleep 5
44
43
45
44
cmd=" kubectl wait --for=condition=Ready --timeout=60s pod -l app=csi-secrets-store-provider-azure --namespace $NAMESPACE "
46
45
wait_for_process $WAIT_TIME $SLEEP_TIME " $cmd "
@@ -85,12 +84,12 @@ setup() {
85
84
}
86
85
87
86
@test " CSI inline volume test with pod portability - read azure kv secret from pod" {
88
- result=$( kubectl exec nginx-secrets-store-inline-crd -- $EXEC_COMMAND /$SECRET_NAME )
87
+ result=$( kubectl exec nginx-secrets-store-inline-crd -- $EXEC_COMMAND /mnt/secrets-store /$SECRET_NAME )
89
88
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
90
89
}
91
90
92
91
@test " CSI inline volume test with pod portability - read azure kv key from pod" {
93
- result=$( kubectl exec nginx-secrets-store-inline-crd -- $EXEC_COMMAND /$KEY_NAME )
92
+ result=$( kubectl exec nginx-secrets-store-inline-crd -- $EXEC_COMMAND /mnt/secrets-store /$KEY_NAME )
94
93
result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
95
94
[[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
96
95
}
@@ -113,10 +112,10 @@ setup() {
113
112
@test " Sync with K8s secrets - read secret from pod, read K8s secret, read env var, check secret ownerReferences" {
114
113
POD=$( kubectl get pod -l app=nginx -o jsonpath=" {.items[0].metadata.name}" )
115
114
116
- result=$( kubectl exec $POD -- $EXEC_COMMAND /secretalias)
115
+ result=$( kubectl exec $POD -- $EXEC_COMMAND /mnt/secrets-store /secretalias)
117
116
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
118
117
119
- result=$( kubectl exec $POD -- $EXEC_COMMAND /$KEY_NAME )
118
+ result=$( kubectl exec $POD -- $EXEC_COMMAND /mnt/secrets-store /$KEY_NAME )
120
119
result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
121
120
[[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
122
121
@@ -169,10 +168,10 @@ setup() {
169
168
@test " Test Namespaced scope SecretProviderClass - Sync with K8s secrets - read secret from pod, read K8s secret, read env var, check secret ownerReferences" {
170
169
POD=$( kubectl get pod -l app=nginx -n test-ns -o jsonpath=" {.items[0].metadata.name}" )
171
170
172
- result=$( kubectl exec -n test-ns $POD -- $EXEC_COMMAND /secretalias)
171
+ result=$( kubectl exec -n test-ns $POD -- $EXEC_COMMAND /mnt/secrets-store /secretalias)
173
172
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
174
173
175
- result=$( kubectl exec -n test-ns $POD -- $EXEC_COMMAND /$KEY_NAME )
174
+ result=$( kubectl exec -n test-ns $POD -- $EXEC_COMMAND /mnt/secrets-store /$KEY_NAME )
176
175
result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
177
176
[[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
178
177
@@ -215,3 +214,60 @@ setup() {
215
214
run kubectl delete ns negative-test-ns
216
215
assert_success
217
216
}
217
+
218
+ @test " deploy multiple azure secretproviderclass crd" {
219
+ envsubst < $BATS_TESTS_DIR /azure_v1alpha1_multiple_secretproviderclass.yaml | kubectl apply -f -
220
+
221
+ cmd=" kubectl wait --for condition=established --timeout=60s crd/secretproviderclasses.secrets-store.csi.x-k8s.io"
222
+ wait_for_process $WAIT_TIME $SLEEP_TIME " $cmd "
223
+
224
+ cmd=" kubectl get secretproviderclasses.secrets-store.csi.x-k8s.io/azure-spc-0 -o yaml | grep azure-spc-0"
225
+ wait_for_process $WAIT_TIME $SLEEP_TIME " $cmd "
226
+
227
+ cmd=" kubectl get secretproviderclasses.secrets-store.csi.x-k8s.io/azure-spc-1 -o yaml | grep azure-spc-1"
228
+ wait_for_process $WAIT_TIME $SLEEP_TIME " $cmd "
229
+ }
230
+
231
+ @test " deploy pod with multiple secret provider class" {
232
+ envsubst < $BATS_TESTS_DIR /nginx-pod-azure-inline-volume-multiple-spc.yaml | kubectl apply -f -
233
+
234
+ cmd=" kubectl wait --for=condition=Ready --timeout=60s pod/nginx-secrets-store-inline-multiple-crd"
235
+ wait_for_process $WAIT_TIME $SLEEP_TIME " $cmd "
236
+
237
+ run kubectl get pod/nginx-secrets-store-inline-multiple-crd
238
+ assert_success
239
+ }
240
+
241
+ @test " CSI inline volume test with multiple secret provider class" {
242
+ result=$( kubectl exec nginx-secrets-store-inline-multiple-crd -- $EXEC_COMMAND /mnt/secrets-store-0/secretalias)
243
+ [[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
244
+
245
+ result=$( kubectl exec nginx-secrets-store-inline-multiple-crd -- $EXEC_COMMAND /mnt/secrets-store-0/$KEY_NAME )
246
+ result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
247
+ [[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
248
+
249
+ result=$( kubectl exec nginx-secrets-store-inline-multiple-crd -- $EXEC_COMMAND /mnt/secrets-store-1/secretalias)
250
+ [[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
251
+
252
+ result=$( kubectl exec nginx-secrets-store-inline-multiple-crd -- $EXEC_COMMAND /mnt/secrets-store-1/$KEY_NAME )
253
+ result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
254
+ [[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
255
+
256
+ result=$( kubectl get secret foosecret-0 -o jsonpath=" {.data.username}" | base64 -d)
257
+ [[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
258
+
259
+ result=$( kubectl exec nginx-secrets-store-inline-multiple-crd -- printenv | grep SECRET_USERNAME_0) | awk -F" =" ' { print $2}'
260
+ [[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
261
+
262
+ result=$( kubectl get secret foosecret-0 -o json | jq ' .metadata.ownerReferences | length' )
263
+ [[ " $result " -eq 1 ]]
264
+
265
+ result=$( kubectl get secret foosecret-1 -o jsonpath=" {.data.username}" | base64 -d)
266
+ [[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
267
+
268
+ result=$( kubectl exec nginx-secrets-store-inline-multiple-crd -- printenv | grep SECRET_USERNAME_1) | awk -F" =" ' { print $2}'
269
+ [[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
270
+
271
+ result=$( kubectl get secret foosecret-1 -o json | jq ' .metadata.ownerReferences | length' )
272
+ [[ " $result " -eq 1 ]]
273
+ }
0 commit comments