@@ -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