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