@@ -12,6 +12,7 @@ import (
1212 "github.com/mongodb/mongodb-kubernetes-operator/pkg/kube/probes"
1313 "github.com/mongodb/mongodb-kubernetes-operator/pkg/kube/resourcerequirements"
1414 "github.com/mongodb/mongodb-kubernetes-operator/pkg/kube/statefulset"
15+ "github.com/mongodb/mongodb-kubernetes-operator/pkg/util/envvar"
1516 "github.com/mongodb/mongodb-kubernetes-operator/pkg/util/scale"
1617 appsv1 "k8s.io/api/apps/v1"
1718 "k8s.io/apimachinery/pkg/types"
@@ -23,7 +24,6 @@ const (
2324 AgentName = "mongodb-agent"
2425 MongodbName = "mongod"
2526
26- AgentImageEnv = "AGENT_IMAGE"
2727 versionUpgradeHookName = "mongod-posthook"
2828 readinessProbeContainerName = "mongodb-agent-readinessprobe"
2929 dataVolumeName = "data-volume"
@@ -34,18 +34,20 @@ const (
3434 operatorServiceAccountName = "mongodb-kubernetes-operator"
3535 agentHealthStatusFilePathValue = "/var/log/mongodb-mms-automation/healthstatus/agent-health-status.json"
3636
37- readinessProbeImageEnv = "READINESS_PROBE_IMAGE "
37+ MongodbRepoUrl = "MONGODB_REPO_URL "
3838
39- MongodbImageEnv = "MONGODB_IMAGE"
40- MongodbRepoUrl = "MONGODB_REPO_URL"
41-
42- versionUpgradeHookImageEnv = "VERSION_UPGRADE_HOOK_IMAGE"
43- headlessAgentEnv = "HEADLESS_AGENT"
44- podNamespaceEnv = "POD_NAMESPACE"
45- automationConfigEnv = "AUTOMATION_CONFIG_MAP"
39+ headlessAgentEnv = "HEADLESS_AGENT"
40+ podNamespaceEnv = "POD_NAMESPACE"
41+ automationConfigEnv = "AUTOMATION_CONFIG_MAP"
4642
4743 automationconfFilePath = "/data/automation-mongod.conf"
4844 keyfileFilePath = "/var/lib/mongodb-mms-automation/authentication/keyfile"
45+
46+ AgentImageEnv = "AGENT_IMAGE"
47+ MongodbImageEnv = "MONGODB_IMAGE"
48+ VersionUpgradeHookImageEnv = "VERSION_UPGRADE_HOOK_IMAGE"
49+ ReadinessProbeImageEnv = "READINESS_PROBE_IMAGE"
50+ ManagedSecurityContextEnv = "MANAGED_SECURITY_CONTEXT"
4951)
5052
5153// MongoDBStatefulSetOwner is an interface which any resource which generates a MongoDB StatefulSet should implement.
@@ -124,6 +126,13 @@ func BuildMongoDBReplicaSetStatefulSetModificationFunction(mdb MongoDBStatefulSe
124126 singleModeVolumeClaim = statefulset .WithVolumeClaim (dataVolumeName , dataPvc ())
125127 }
126128 }
129+
130+ podSecurityContext := podtemplatespec .NOOP ()
131+ managedSecurityContext := envvar .ReadBool (ManagedSecurityContextEnv )
132+ if ! managedSecurityContext {
133+ podSecurityContext = podtemplatespec .WithSecurityContext (podtemplatespec .DefaultPodSecurityContext ())
134+ }
135+
127136 return statefulset .Apply (
128137 statefulset .WithName (mdb .GetName ()),
129138 statefulset .WithNamespace (mdb .GetNamespace ()),
@@ -137,7 +146,7 @@ func BuildMongoDBReplicaSetStatefulSetModificationFunction(mdb MongoDBStatefulSe
137146 singleModeVolumeClaim ,
138147 statefulset .WithPodSpecTemplate (
139148 podtemplatespec .Apply (
140- podtemplatespec . WithSecurityContext ( podtemplatespec . DefaultPodSecurityContext ()) ,
149+ podSecurityContext ,
141150 podtemplatespec .WithPodLabels (labels ),
142151 podtemplatespec .WithVolume (healthStatusVolume ),
143152 podtemplatespec .WithVolume (hooksVolume ),
@@ -162,14 +171,20 @@ func mongodbAgentContainer(automationConfigSecretName string, volumeMounts []cor
162171 "-healthCheckFilePath=" + agentHealthStatusFilePathValue ,
163172 "-serveStatusPort=5000" ,
164173 "-useLocalMongoDbTools" }, " " )
174+
175+ securityContext := container .NOOP ()
176+ managedSecurityContext := envvar .ReadBool (ManagedSecurityContextEnv )
177+ if ! managedSecurityContext {
178+ securityContext = container .WithSecurityContext (container .DefaultSecurityContext ())
179+ }
165180 return container .Apply (
166181 container .WithName (AgentName ),
167182 container .WithImage (os .Getenv (AgentImageEnv )),
168183 container .WithImagePullPolicy (corev1 .PullAlways ),
169184 container .WithReadinessProbe (DefaultReadiness ()),
170185 container .WithResourceRequirements (resourcerequirements .Defaults ()),
171186 container .WithVolumeMounts (volumeMounts ),
172- container . WithSecurityContext ( container . DefaultSecurityContext ()) ,
187+ securityContext ,
173188 container .WithCommand ([]string {"/bin/bash" , "-c" , `current_uid=$(id -u)
174189echo $current_uid
175190declare -r current_uid
@@ -212,7 +227,7 @@ func versionUpgradeHookInit(volumeMount []corev1.VolumeMount) container.Modifica
212227 return container .Apply (
213228 container .WithName (versionUpgradeHookName ),
214229 container .WithCommand ([]string {"cp" , "version-upgrade-hook" , "/hooks/version-upgrade" }),
215- container .WithImage (os .Getenv (versionUpgradeHookImageEnv )),
230+ container .WithImage (os .Getenv (VersionUpgradeHookImageEnv )),
216231 container .WithImagePullPolicy (corev1 .PullAlways ),
217232 container .WithVolumeMounts (volumeMount ),
218233 )
@@ -248,7 +263,7 @@ func readinessProbeInit(volumeMount []corev1.VolumeMount) container.Modification
248263 return container .Apply (
249264 container .WithName (readinessProbeContainerName ),
250265 container .WithCommand ([]string {"cp" , "/probes/readinessprobe" , "/opt/scripts/readinessprobe" }),
251- container .WithImage (os .Getenv (readinessProbeImageEnv )),
266+ container .WithImage (os .Getenv (ReadinessProbeImageEnv )),
252267 container .WithImagePullPolicy (corev1 .PullAlways ),
253268 container .WithVolumeMounts (volumeMount ),
254269 )
@@ -282,6 +297,12 @@ exec mongod -f %s;
282297 mongoDbCommand ,
283298 }
284299
300+ securityContext := container .NOOP ()
301+ managedSecurityContext := envvar .ReadBool (ManagedSecurityContextEnv )
302+ if ! managedSecurityContext {
303+ securityContext = container .WithSecurityContext (container .DefaultSecurityContext ())
304+ }
305+
285306 return container .Apply (
286307 container .WithName (MongodbName ),
287308 container .WithImage (getMongoDBImage (version )),
@@ -295,6 +316,6 @@ exec mongod -f %s;
295316 ),
296317 container .WithVolumeMounts (volumeMounts ),
297318
298- container . WithSecurityContext ( container . DefaultSecurityContext ()) ,
319+ securityContext ,
299320 )
300321}
0 commit comments