@@ -12,6 +12,7 @@ import (
1212 "k8s.io/apimachinery/pkg/types"
1313 "k8s.io/apimachinery/pkg/util/validation/field"
1414 "k8s.io/kubernetes/pkg/apis/core"
15+ "k8s.io/utils/ptr"
1516
1617 operatorv1alpha1 "github.com/openshift/external-secrets-operator/api/v1alpha1"
1718 "github.com/openshift/external-secrets-operator/pkg/operator/assets"
@@ -102,18 +103,13 @@ func (r *ExternalSecretsReconciler) createOrApplyDeploymentFromAsset(externalsec
102103
103104func (r * ExternalSecretsReconciler ) getDeploymentObject (assetName string , externalsecrets * operatorv1alpha1.ExternalSecrets , resourceLabels map [string ]string ) (* appsv1.Deployment , error ) {
104105 deployment := decodeDeploymentObjBytes (assets .MustAsset (assetName ))
106+ updateNamespace (deployment , externalsecrets )
105107 updateResourceLabels (deployment , resourceLabels )
106108 updatePodTemplateLabels (deployment , resourceLabels )
107109
108- namespace := deployment .GetNamespace ()
109- if externalsecrets .Spec .ControllerConfig != nil && externalsecrets .Spec .ControllerConfig .Namespace != "" {
110- namespace = externalsecrets .Spec .ControllerConfig .Namespace
111- }
112- updateNamespace (deployment , namespace )
113-
114110 image := os .Getenv (externalsecretsImageEnvVarName )
115111 if image == "" {
116- return nil , fmt .Errorf ("%s environment variable with externalsecrets image not set" , externalsecretsImageEnvVarName )
112+ return nil , NewIrrecoverableError ( fmt .Errorf ("%s environment variable with externalsecrets image not set" , externalsecretsImageEnvVarName ), "failed to update image in %s deployment object" , deployment . GetName () )
117113 }
118114 logLevel := getLogLevel (externalsecrets .Spec .ExternalSecretsConfig )
119115
@@ -143,8 +139,29 @@ func (r *ExternalSecretsReconciler) getDeploymentObject(assetName string, extern
143139}
144140
145141// updatePodTemplateLabels sets labels on the pod template spec.
146- func updatePodTemplateLabels (deployment * appsv1.Deployment , resourceLabels map [string ]string ) {
147- deployment .Spec .Template .ObjectMeta .Labels = resourceLabels
142+ func updatePodTemplateLabels (deployment * appsv1.Deployment , labels map [string ]string ) {
143+ l := deployment .Spec .Template .ObjectMeta .GetLabels ()
144+ for k , v := range labels {
145+ l [k ] = v
146+ }
147+ deployment .Spec .Template .ObjectMeta .SetLabels (l )
148+ }
149+
150+ func updateContainerSecurityContext (container * corev1.Container ) {
151+ container .SecurityContext = & corev1.SecurityContext {
152+ AllowPrivilegeEscalation : ptr .To (false ),
153+ Capabilities : & corev1.Capabilities {
154+ Drop : []corev1.Capability {
155+ "ALL" ,
156+ },
157+ },
158+ ReadOnlyRootFilesystem : ptr .To (true ),
159+ RunAsNonRoot : ptr .To (true ),
160+ RunAsUser : nil ,
161+ SeccompProfile : & corev1.SeccompProfile {
162+ Type : corev1 .SeccompProfileTypeRuntimeDefault ,
163+ },
164+ }
148165}
149166
150167// updateResourceRequirement sets validated resource requirements to all containers.
@@ -277,7 +294,7 @@ func updateContainerSpec(deployment *appsv1.Deployment, externalsecrets *operato
277294 namespace := getOperatingNamespace (externalsecrets )
278295 args := []string {
279296 "--concurrent=1" ,
280- "--metrics-port=9402 " ,
297+ "--metrics-addr=:8080 " ,
281298 fmt .Sprintf ("--loglevel=%s" , logLevel ),
282299 "--zap-time-encoding=epoch" ,
283300 "--enable-leader-election=true" ,
@@ -294,6 +311,7 @@ func updateContainerSpec(deployment *appsv1.Deployment, externalsecrets *operato
294311 if container .Name == "external-secrets" {
295312 deployment .Spec .Template .Spec .Containers [i ].Args = args
296313 deployment .Spec .Template .Spec .Containers [i ].Image = image
314+ updateContainerSecurityContext (& deployment .Spec .Template .Spec .Containers [i ])
297315 break
298316 }
299317 }
@@ -317,6 +335,7 @@ func updateWebhookContainerSpec(deployment *appsv1.Deployment, image, logLevel s
317335 if container .Name == "webhook" {
318336 deployment .Spec .Template .Spec .Containers [i ].Args = args
319337 deployment .Spec .Template .Spec .Containers [i ].Image = image
338+ updateContainerSecurityContext (& deployment .Spec .Template .Spec .Containers [i ])
320339 break
321340 }
322341 }
@@ -343,6 +362,7 @@ func updateCertControllerContainerSpec(deployment *appsv1.Deployment, image, log
343362 if container .Name == "cert-controller" {
344363 deployment .Spec .Template .Spec .Containers [i ].Args = args
345364 deployment .Spec .Template .Spec .Containers [i ].Image = image
365+ updateContainerSecurityContext (& deployment .Spec .Template .Spec .Containers [i ])
346366 break
347367 }
348368 }
0 commit comments