@@ -16,21 +16,10 @@ if [ $TEST_WINDOWS ]; then
16
16
NODE_SELECTOR_OS=windows
17
17
fi
18
18
19
- if [ -z " $AUTO_ROTATE_SECRET_NAME " ]; then
20
- export AUTO_ROTATE_SECRET_NAME=secret-$( openssl rand -hex 6)
21
- fi
22
-
23
- if [ -z " $IS_YAML_TEST " ]; then
24
- export IS_YAML_TEST=false
25
- fi
26
-
27
- export KEYVAULT_NAME=${KEYVAULT_NAME:- csi-secrets-store-e2e}
19
+ export KEYVAULT_NAME=${KEYVAULT_NAME:- secrets-store-csi-e2e}
28
20
export SECRET_NAME=${KEYVAULT_SECRET_NAME:- secret1}
29
21
export SECRET_VERSION=${KEYVAULT_SECRET_VERSION:- " " }
30
22
export SECRET_VALUE=${KEYVAULT_SECRET_VALUE:- " test" }
31
- export KEY_NAME=${KEYVAULT_KEY_NAME:- key1}
32
- export KEY_VERSION=${KEYVAULT_KEY_VERSION:- 7cc095105411491b84fe1b92ebbcf01a}
33
- export KEY_VALUE_CONTAINS=${KEYVAULT_KEY_VALUE:- " LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF4K2FadlhJN2FldG5DbzI3akVScgpheklaQ2QxUlBCQVZuQU1XcDhqY05TQk5MOXVuOVJrenJHOFd1SFBXUXNqQTA2RXRIOFNSNWtTNlQvaGQwMFNRCk1aODBMTlNxYkkwTzBMcWMzMHNLUjhTQ0R1cEt5dkpkb01LSVlNWHQzUlk5R2Ywam1ucHNKOE9WbDFvZlRjOTIKd1RINXYyT2I1QjZaMFd3d25MWlNiRkFnSE1uTHJtdEtwZTVNcnRGU21nZS9SL0J5ZXNscGU0M1FubnpndzhRTwpzU3ZMNnhDU21XVW9WQURLL1MxREU0NzZBREM2a2hGTjF5ZHUzbjVBcnREVGI0c0FjUHdTeXB3WGdNM3Y5WHpnClFKSkRGT0JJOXhSTW9UM2FjUWl0Z0c2RGZibUgzOWQ3VU83M0o3dUFQWUpURG1pZGhrK0ZFOG9lbjZWUG9YRy8KNXdJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0t" }
34
23
export LABEL_VALUE=${LABEL_VALUE:- " test" }
35
24
export NODE_SELECTOR_OS=$NODE_SELECTOR_OS
36
25
@@ -39,8 +28,8 @@ export NODE_SELECTOR_OS=$NODE_SELECTOR_OS
39
28
export API_VERSION=$( get_secrets_store_api_version)
40
29
41
30
setup () {
42
- if [[ -z " ${AZURE_CLIENT_ID} " ]] || [[ -z " ${AZURE_CLIENT_SECRET }" ]]; then
43
- echo " Error: Azure service principal is not provided" >&2
31
+ if [[ -z " ${IDENTITY_CLIENT_ID } " ]]; then
32
+ echo " Error: Azure managed identity id is not provided" >&2
44
33
return 1
45
34
fi
46
35
}
@@ -59,15 +48,6 @@ setup() {
59
48
kubectl wait --for=condition=Ready --timeout=150s pods -l app=csi-secrets-store-provider-azure --namespace $NAMESPACE
60
49
}
61
50
62
- @test " create azure k8s secret" {
63
- run kubectl create secret generic secrets-store-creds --from-literal clientid=${AZURE_CLIENT_ID} --from-literal clientsecret=${AZURE_CLIENT_SECRET}
64
- assert_success
65
-
66
- # label the node publish secret ref secret
67
- run kubectl label secret secrets-store-creds secrets-store.csi.k8s.io/used=true
68
- assert_success
69
- }
70
-
71
51
@test " deploy azure secretproviderclass crd" {
72
52
envsubst < $BATS_TESTS_DIR /azure_v1_secretproviderclass.yaml | kubectl apply -f -
73
53
@@ -96,12 +76,6 @@ setup() {
96
76
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
97
77
}
98
78
99
- @test " CSI inline volume test with pod portability - read azure kv key from pod" {
100
- result=$( kubectl exec secrets-store-inline-crd -- cat /mnt/secrets-store/$KEY_NAME )
101
- result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
102
- [[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
103
- }
104
-
105
79
@test " CSI inline volume test with pod portability - unmount succeeds" {
106
80
# On Linux a failure to unmount the tmpfs will block the pod from being
107
81
# deleted.
@@ -144,10 +118,6 @@ setup() {
144
118
result=$( kubectl exec $POD -- cat /mnt/secrets-store/secretalias)
145
119
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
146
120
147
- result=$( kubectl exec $POD -- cat /mnt/secrets-store/$KEY_NAME )
148
- result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
149
- [[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
150
-
151
121
result=$( kubectl get secret foosecret -o jsonpath=" {.data.username}" | base64 -d)
152
122
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
153
123
@@ -184,13 +154,6 @@ setup() {
184
154
run kubectl create ns test-ns
185
155
assert_success
186
156
187
- run kubectl create secret generic secrets-store-creds --from-literal clientid=${AZURE_CLIENT_ID} --from-literal clientsecret=${AZURE_CLIENT_SECRET} -n test-ns
188
- assert_success
189
-
190
- # label the node publish secret ref secret
191
- run kubectl label secret secrets-store-creds secrets-store.csi.k8s.io/used=true -n test-ns
192
- assert_success
193
-
194
157
envsubst < $BATS_TESTS_DIR /azure_v1_secretproviderclass_ns.yaml | kubectl apply -f -
195
158
196
159
kubectl wait --for condition=established --timeout=60s crd/secretproviderclasses.secrets-store.csi.x-k8s.io
@@ -212,10 +175,6 @@ setup() {
212
175
result=$( kubectl exec -n test-ns $POD -- cat /mnt/secrets-store/secretalias)
213
176
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
214
177
215
- result=$( kubectl exec -n test-ns $POD -- cat /mnt/secrets-store/$KEY_NAME )
216
- result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
217
- [[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
218
-
219
178
result=$( kubectl get secret foosecret -n test-ns -o jsonpath=" {.data.username}" | base64 -d)
220
179
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
221
180
@@ -238,13 +197,6 @@ setup() {
238
197
run kubectl create ns negative-test-ns
239
198
assert_success
240
199
241
- run kubectl create secret generic secrets-store-creds --from-literal clientid=${AZURE_CLIENT_ID} --from-literal clientsecret=${AZURE_CLIENT_SECRET} -n negative-test-ns
242
- assert_success
243
-
244
- # label the node publish secret ref secret
245
- run kubectl label secret secrets-store-creds secrets-store.csi.k8s.io/used=true -n negative-test-ns
246
- assert_success
247
-
248
200
envsubst < $BATS_TESTS_DIR /deployment-synck8s-azure.yaml | kubectl apply -n negative-test-ns -f -
249
201
sleep 5
250
202
@@ -284,17 +236,9 @@ setup() {
284
236
result=$( kubectl exec secrets-store-inline-multiple-crd -- cat /mnt/secrets-store-0/secretalias)
285
237
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
286
238
287
- result=$( kubectl exec secrets-store-inline-multiple-crd -- cat /mnt/secrets-store-0/$KEY_NAME )
288
- result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
289
- [[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
290
-
291
239
result=$( kubectl exec secrets-store-inline-multiple-crd -- cat /mnt/secrets-store-1/secretalias)
292
240
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
293
241
294
- result=$( kubectl exec secrets-store-inline-multiple-crd -- cat /mnt/secrets-store-1/$KEY_NAME )
295
- result_base64_encoded=$( echo " ${result// $' \r ' } " | base64 ${BASE64_FLAGS} )
296
- [[ " ${result_base64_encoded} " == * " ${KEY_VALUE_CONTAINS} " * ]]
297
-
298
242
result=$( kubectl get secret foosecret-0 -o jsonpath=" {.data.username}" | base64 -d)
299
243
[[ " ${result// $' \r ' } " == " ${SECRET_VALUE} " ]]
300
244
@@ -314,66 +258,11 @@ setup() {
314
258
assert_success
315
259
}
316
260
317
- @test " Test auto rotation of mount contents and K8s secrets - Create deployment" {
318
- run kubectl create ns rotation
319
- assert_success
320
-
321
- run kubectl create secret generic secrets-store-creds --from-literal clientid=${AZURE_CLIENT_ID} --from-literal clientsecret=${AZURE_CLIENT_SECRET} -n rotation
322
- assert_success
323
-
324
- # label the node publish secret ref secret
325
- run kubectl label secret secrets-store-creds secrets-store.csi.k8s.io/used=true -n rotation
326
- assert_success
327
-
328
- run az login -u ${AZURE_CLIENT_ID} -p ${AZURE_CLIENT_SECRET} -t ${TENANT_ID} --service-principal
329
- assert_success
330
-
331
- run az keyvault secret set --vault-name ${KEYVAULT_NAME} --name ${AUTO_ROTATE_SECRET_NAME} --value secret
332
- assert_success
333
-
334
- envsubst < $BATS_TESTS_DIR /rotation/azure_synck8s_v1_secretproviderclass.yaml | kubectl apply -n rotation -f -
335
- envsubst < $BATS_TESTS_DIR /rotation/pod-synck8s-azure.yaml | kubectl apply -n rotation -f -
336
-
337
- kubectl wait -n rotation --for=condition=Ready --timeout=60s pod/secrets-store-inline-rotation
338
-
339
- run kubectl get pod/secrets-store-inline-rotation -n rotation
340
- assert_success
341
- }
342
-
343
- @test " Test auto rotation of mount contents and K8s secrets" {
344
- result=$( kubectl exec -n rotation secrets-store-inline-rotation -- cat /mnt/secrets-store/secretalias)
345
- [[ " ${result// $' \r ' } " == " secret" ]]
346
-
347
- result=$( kubectl get secret -n rotation rotationsecret -o jsonpath=" {.data.username}" | base64 -d)
348
- [[ " ${result// $' \r ' } " == " secret" ]]
349
-
350
- run az keyvault secret set --vault-name ${KEYVAULT_NAME} --name ${AUTO_ROTATE_SECRET_NAME} --value rotated
351
- assert_success
352
-
353
- sleep 60
354
-
355
- result=$( kubectl exec -n rotation secrets-store-inline-rotation -- cat /mnt/secrets-store/secretalias)
356
- [[ " ${result// $' \r ' } " == " rotated" ]]
357
-
358
- result=$( kubectl get secret -n rotation rotationsecret -o jsonpath=" {.data.username}" | base64 -d)
359
- [[ " ${result// $' \r ' } " == " rotated" ]]
360
-
361
- run az keyvault secret delete --vault-name ${KEYVAULT_NAME} --name ${AUTO_ROTATE_SECRET_NAME}
362
- assert_success
363
-
364
- run az logout
365
- assert_success
366
- }
367
-
368
261
teardown_file () {
369
262
archive_provider " app=csi-secrets-store-provider-azure" || true
370
263
archive_info || true
371
264
372
265
# cleanup
373
- run kubectl delete namespace rotation
374
266
run kubectl delete namespace test-ns
375
-
376
- run kubectl delete secret secrets-store-creds
377
-
378
267
run kubectl delete pods secrets-store-inline-crd secrets-store-inline-multiple-crd --force --grace-period 0
379
268
}
0 commit comments