diff --git a/deployments/kubernetes/chart/reloader/templates/deployment.yaml b/deployments/kubernetes/chart/reloader/templates/deployment.yaml index 1dc0a72e..97ca4c3f 100644 --- a/deployments/kubernetes/chart/reloader/templates/deployment.yaml +++ b/deployments/kubernetes/chart/reloader/templates/deployment.yaml @@ -146,9 +146,13 @@ spec: periodSeconds: {{ .Values.reloader.deployment.readinessProbe.periodSeconds | default "10" }} successThreshold: {{ .Values.reloader.deployment.readinessProbe.successThreshold | default "1" }} - {{- with .Values.reloader.deployment.containerSecurityContext }} - securityContext: {{ toYaml . | nindent 10 }} - {{- end }} + {{- $containerSecurityContext := .Values.reloader.deployment.containerSecurityContext | default dict }} + {{- if .Values.reloader.readOnlyRootFileSystem }} + {{- $_ := set $containerSecurityContext "readOnlyRootFilesystem" true }} + {{- end }} + + securityContext: + {{- toYaml $containerSecurityContext | nindent 10 }} {{- if eq .Values.reloader.readOnlyRootFileSystem true }} volumeMounts: diff --git a/deployments/kubernetes/chart/reloader/tests/deployment_test.yaml b/deployments/kubernetes/chart/reloader/tests/deployment_test.yaml new file mode 100644 index 00000000..7fabe5c4 --- /dev/null +++ b/deployments/kubernetes/chart/reloader/tests/deployment_test.yaml @@ -0,0 +1,50 @@ +suite: Deployment + +templates: + - deployment.yaml + +tests: + - it: sets readOnlyRootFilesystem in container securityContext when reloader.readOnlyRootFileSystem is true + set: + reloader: + readOnlyRootFileSystem: true + deployment: + containerSecurityContext: + readOnlyRootFilesystem: false + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem + value: true + + - it: sets readOnlyRootFilesystem in container securityContext even if reloader.deployment.containerSecurityContext is null + set: + reloader: + readOnlyRootFileSystem: true + deployment: + containerSecurityContext: null + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem + value: true + + - it: does not override readOnlyRootFilesystem in container securityContext based on reloader.readOnlyRootFileSystem + set: + reloader: + readOnlyRootFileSystem: false + deployment: + containerSecurityContext: + readOnlyRootFilesystem: true + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem + value: true + + - it: template is still valid with no defined containerSecurityContext + set: + reloader: + readOnlyRootFileSystem: false + deployment: + containerSecurityContext: null + asserts: + - isEmpty: + path: spec.template.spec.containers[0].securityContext