Skip to content

Commit 9d4bbff

Browse files
committed
test securityContext fallback improvements
1 parent 819cda9 commit 9d4bbff

File tree

1 file changed

+207
-3
lines changed

1 file changed

+207
-3
lines changed

tests/unit/security_context_test.yaml

Lines changed: 207 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ templates:
1818
- secrets_st2auth.yaml
1919
- secrets_st2chatops.yaml
2020

21+
# TODO: test initContainers that use st2.packs.images[].securityContext
22+
# (there is no good way to select initContainers)
23+
2124
tests:
2225
- it: Deployment and Job Pods+Containers have no SecurityContext by default
2326
templates:
@@ -34,6 +37,7 @@ tests:
3437
# job-st2-apikey-load
3538
# job-st2-key-load
3639
# job-st2-register-content
40+
# job-ensure-packs-volumes-are-writable
3741
# extra_hooks job
3842
set:
3943
st2chatops:
@@ -135,7 +139,16 @@ tests:
135139
template: deployments.yaml
136140
set:
137141
st2:
138-
packs: { sensors: [] } # ensure only 1 sensor
142+
packs:
143+
sensors: [] # ensure only 1 sensor
144+
#images: &st2_packs_images
145+
# - repository: index.docker.io/stackstorm
146+
# name: st2packs
147+
# tag: example
148+
# securityContext: &st2packs_security_context
149+
# capabilities:
150+
# drop: [ALL]
151+
# add: [kill, net_raw, chown, fowner]
139152
rbac: { enabled: true } # enable rbac job
140153

141154
podSecurityContext: *global_pod_security_context
@@ -159,8 +172,14 @@ tests:
159172
securityContext: *security_context_override
160173

161174
st2client:
162-
podSecurityContext: *pod_security_context_override
163-
securityContext: *security_context_override
175+
podSecurityContext: &pod_security_context_override_2
176+
fsGroup: 8888
177+
supplementalGroups: [4444]
178+
securityContext: &security_context_override_2
179+
capabilities:
180+
drop: [ALL]
181+
add: [kill, net_raw, chown]
182+
164183
asserts:
165184
- hasDocuments:
166185
count: 13
@@ -231,16 +250,201 @@ tests:
231250
# st2client pod
232251
- notEqual: *global_pod_security_context_assert
233252
documentIndex: 12
253+
- notEqual: *override_pod_security_context_assert
254+
documentIndex: 12
255+
- equal: &override_pod_security_context_assert_2
256+
path: spec.template.spec.securityContext
257+
value: *pod_security_context_override_2
258+
documentIndex: 12
259+
260+
# st2client container
261+
- notEqual: *global_container0_security_context_assert
262+
documentIndex: 12
263+
- notEqual: *override_container0_security_context_assert
264+
documentIndex: 12
265+
- equal: &override_container0_security_context_assert_2
266+
path: spec.template.spec.containers[0].securityContext
267+
value: *security_context_override_2
268+
documentIndex: 12
269+
# path can only select one element, not all initContainers (if present).
270+
#- notEqual: *global_initcontainers_security_context_assert
271+
# documentIndex: 12
272+
#- notEqual: *override_initcontainers_security_context_assert
273+
# documentIndex: 12
274+
#- equal: &override_initcontainers_security_context_assert_2
275+
# path: spec.template.spec.initContainers[].securityContext
276+
# value: *security_context_override
277+
# documentIndex: 12
278+
279+
- it: st2client Deployment Pod+Containers default to st2actionrunner SecurityContext overrides
280+
template: deployments.yaml
281+
set:
282+
st2:
283+
packs:
284+
sensors: [] # ensure only 1 sensor
285+
#images: *st2_packs_images
286+
rbac: { enabled: true } # enable rbac job
287+
288+
podSecurityContext: *global_pod_security_context
289+
securityContext: *global_security_context
290+
291+
st2actionrunner:
292+
podSecurityContext: *pod_security_context_override
293+
securityContext: *security_context_override
294+
295+
#st2client: no override defined
296+
297+
asserts:
298+
- hasDocuments:
299+
count: 13
300+
301+
# st2client pod
302+
- notEqual: *global_pod_security_context_assert
303+
documentIndex: 12
304+
- notEqual: *override_pod_security_context_assert_2
305+
documentIndex: 12
234306
- equal: *override_pod_security_context_assert
235307
documentIndex: 12
236308

237309
# st2client container
238310
- notEqual: *global_container0_security_context_assert
239311
documentIndex: 12
312+
- notEqual: *override_container0_security_context_assert_2
313+
documentIndex: 12
240314
- equal: *override_container0_security_context_assert
241315
documentIndex: 12
242316
# path can only select one element, not all initContainers (if present).
243317
#- notEqual: *global_initcontainers_security_context_assert
244318
# documentIndex: 12
319+
#- notEqual: *override_initcontainers_security_context_assert_2
320+
# documentIndex: 12
245321
#- equal: *override_initcontainers_security_context_assert
246322
# documentIndex: 12
323+
324+
# overrides for register-content job and extra_hooks job(s)
325+
# document indexes: 3, 5
326+
327+
- it: extra_hooks Jobs Pod+Containers accept SecurityContext overrides
328+
template: jobs.yaml
329+
set:
330+
st2:
331+
packs:
332+
sensors: [] # ensure only 1 sensor
333+
images: []
334+
volumes: *volumes_enabled
335+
configs: {} # has one core.yaml config file by default (dicts get merged)
336+
rbac: { enabled: true } # enable rbac job
337+
338+
podSecurityContext: *global_pod_security_context
339+
securityContext: *global_security_context
340+
341+
st2actionrunner:
342+
podSecurityContext: *pod_security_context_override
343+
securityContext: *security_context_override
344+
345+
jobs:
346+
extra_hooks:
347+
- name: upgrade-warning
348+
hook: pre-upgrade, pre-rollback
349+
hook_weight: -5
350+
podSecurityContext: *pod_security_context_override_2
351+
securityContext: *security_context_override_2
352+
353+
asserts:
354+
- hasDocuments:
355+
count: 6
356+
357+
# extra_hooks job pod
358+
- notEqual: *global_pod_security_context_assert
359+
documentIndex: 5
360+
- notEqual: *override_pod_security_context_assert
361+
documentIndex: 5
362+
- equal: *override_pod_security_context_assert_2
363+
documentIndex: 5
364+
365+
# extra_hooks job container
366+
- notEqual: *global_container0_security_context_assert
367+
documentIndex: 5
368+
- notEqual: *override_container0_security_context_assert
369+
documentIndex: 5
370+
- equal: *override_container0_security_context_assert_2
371+
documentIndex: 5
372+
# path can only select one element, not all initContainers (if present).
373+
#- notEqual: *global_initcontainers_security_context_assert
374+
# documentIndex: 5
375+
#- notEqual: *override_initcontainers_security_context_assert
376+
# documentIndex: 5
377+
#- equal: *override_initcontainers_security_context_assert_2
378+
# documentIndex: 5
379+
380+
- it: register-content and extra_hooks Jobs Pod+Containers default to st2actionrunner SecurityContext overrides
381+
template: jobs.yaml
382+
set:
383+
st2:
384+
packs:
385+
sensors: [] # ensure only 1 sensor
386+
images: []
387+
volumes: *volumes_enabled
388+
configs: {} # has one core.yaml config file by default (dicts get merged)
389+
rbac: { enabled: true } # enable rbac job
390+
391+
podSecurityContext: *global_pod_security_context
392+
securityContext: *global_security_context
393+
394+
st2actionrunner:
395+
podSecurityContext: *pod_security_context_override
396+
securityContext: *security_context_override
397+
398+
jobs:
399+
extra_hooks: *jobs_extra_hooks
400+
# does not override podSecurityContext or securityContext
401+
402+
asserts:
403+
- hasDocuments:
404+
count: 6
405+
406+
# job-register-content pod
407+
- notEqual: *global_pod_security_context_assert
408+
documentIndex: 3
409+
- notEqual: *override_pod_security_context_assert_2
410+
documentIndex: 3
411+
- equal: *override_pod_security_context_assert
412+
documentIndex: 3
413+
414+
# job-register-content container
415+
- notEqual: *global_container0_security_context_assert
416+
documentIndex: 3
417+
- notEqual: *override_container0_security_context_assert_2
418+
documentIndex: 3
419+
- equal: *override_container0_security_context_assert
420+
documentIndex: 3
421+
# path can only select one element, not all initContainers (if present).
422+
#- notEqual: *global_initcontainers_security_context_assert
423+
# documentIndex: 3
424+
#- notEqual: *override_initcontainers_security_context_assert_2
425+
# documentIndex: 3
426+
#- equal: *override_initcontainers_security_context_assert
427+
# documentIndex: 3
428+
429+
# extra_hooks job pod
430+
- notEqual: *global_pod_security_context_assert
431+
documentIndex: 5
432+
- notEqual: *override_pod_security_context_assert_2
433+
documentIndex: 5
434+
- equal: *override_pod_security_context_assert
435+
documentIndex: 5
436+
437+
# extra_hooks job container
438+
- notEqual: *global_container0_security_context_assert
439+
documentIndex: 5
440+
- notEqual: *override_container0_security_context_assert_2
441+
documentIndex: 5
442+
- equal: *override_container0_security_context_assert
443+
documentIndex: 5
444+
# path can only select one element, not all initContainers (if present).
445+
#- notEqual: *global_initcontainers_security_context_assert
446+
# documentIndex: 5
447+
#- notEqual: *override_initcontainers_security_context_assert_2
448+
# documentIndex: 5
449+
#- equal: *override_initcontainers_security_context_assert
450+
# documentIndex: 5

0 commit comments

Comments
 (0)