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