@@ -23,11 +23,22 @@ func (f *FunctionFactory) ConfigureContainerUserID(deployment *appsv1.Deployment
2323 functionUser = & userID
2424 }
2525
26- if deployment . Spec . Template . Spec . Containers [ 0 ]. SecurityContext == nil {
27- deployment . Spec . Template . Spec . Containers [ 0 ]. SecurityContext = & corev1. SecurityContext {}
26+ if deployment == nil {
27+ return
2828 }
2929
30- deployment .Spec .Template .Spec .Containers [0 ].SecurityContext .RunAsUser = functionUser
30+ idx , container := FunctionContainer (* deployment )
31+ if idx < 0 {
32+ // function container not found
33+ // and there is nothing we can do at this point
34+ return
35+ }
36+
37+ if container .SecurityContext == nil {
38+ deployment .Spec .Template .Spec .Containers [idx ].SecurityContext = & corev1.SecurityContext {}
39+ }
40+
41+ deployment .Spec .Template .Spec .Containers [idx ].SecurityContext .RunAsUser = functionUser
3142}
3243
3344// ConfigureReadOnlyRootFilesystem will create or update the required settings and mounts to ensure
@@ -39,19 +50,30 @@ func (f *FunctionFactory) ConfigureContainerUserID(deployment *appsv1.Deployment
3950//
4051// This method is safe for both create and update operations.
4152func (f * FunctionFactory ) ConfigureReadOnlyRootFilesystem (request types.FunctionDeployment , deployment * appsv1.Deployment ) {
42- if deployment .Spec .Template .Spec .Containers [0 ].SecurityContext != nil {
43- deployment .Spec .Template .Spec .Containers [0 ].SecurityContext .ReadOnlyRootFilesystem = & request .ReadOnlyRootFilesystem
53+ if deployment == nil {
54+ return
55+ }
56+
57+ idx , container := FunctionContainer (* deployment )
58+ if idx < 0 {
59+ // function container not found
60+ // and there is nothing we can do at this point
61+ return
62+ }
63+
64+ if container .SecurityContext != nil {
65+ deployment .Spec .Template .Spec .Containers [idx ].SecurityContext .ReadOnlyRootFilesystem = & request .ReadOnlyRootFilesystem
4466 } else {
45- deployment .Spec .Template .Spec .Containers [0 ].SecurityContext = & corev1.SecurityContext {
67+ deployment .Spec .Template .Spec .Containers [idx ].SecurityContext = & corev1.SecurityContext {
4668 ReadOnlyRootFilesystem : & request .ReadOnlyRootFilesystem ,
4769 }
4870 }
4971
5072 existingVolumes := removeVolume ("temp" , deployment .Spec .Template .Spec .Volumes )
5173 deployment .Spec .Template .Spec .Volumes = existingVolumes
5274
53- existingMounts := removeVolumeMount ("temp" , deployment . Spec . Template . Spec . Containers [ 0 ] .VolumeMounts )
54- deployment .Spec .Template .Spec .Containers [0 ].VolumeMounts = existingMounts
75+ existingMounts := removeVolumeMount ("temp" , container .VolumeMounts )
76+ deployment .Spec .Template .Spec .Containers [idx ].VolumeMounts = existingMounts
5577
5678 if request .ReadOnlyRootFilesystem {
5779 deployment .Spec .Template .Spec .Volumes = append (
@@ -64,7 +86,7 @@ func (f *FunctionFactory) ConfigureReadOnlyRootFilesystem(request types.Function
6486 },
6587 )
6688
67- deployment .Spec .Template .Spec .Containers [0 ].VolumeMounts = append (
89+ deployment .Spec .Template .Spec .Containers [idx ].VolumeMounts = append (
6890 existingMounts ,
6991 corev1.VolumeMount {
7092 Name : "temp" ,
0 commit comments