@@ -12,6 +12,7 @@ import (
12
12
"github.com/mongodb/mongodb-kubernetes-operator/pkg/kube/probes"
13
13
"github.com/mongodb/mongodb-kubernetes-operator/pkg/kube/resourcerequirements"
14
14
"github.com/mongodb/mongodb-kubernetes-operator/pkg/kube/statefulset"
15
+ "github.com/mongodb/mongodb-kubernetes-operator/pkg/util/envvar"
15
16
"github.com/mongodb/mongodb-kubernetes-operator/pkg/util/scale"
16
17
appsv1 "k8s.io/api/apps/v1"
17
18
"k8s.io/apimachinery/pkg/types"
@@ -23,7 +24,6 @@ const (
23
24
AgentName = "mongodb-agent"
24
25
MongodbName = "mongod"
25
26
26
- AgentImageEnv = "AGENT_IMAGE"
27
27
versionUpgradeHookName = "mongod-posthook"
28
28
readinessProbeContainerName = "mongodb-agent-readinessprobe"
29
29
dataVolumeName = "data-volume"
@@ -34,18 +34,20 @@ const (
34
34
operatorServiceAccountName = "mongodb-kubernetes-operator"
35
35
agentHealthStatusFilePathValue = "/var/log/mongodb-mms-automation/healthstatus/agent-health-status.json"
36
36
37
- readinessProbeImageEnv = "READINESS_PROBE_IMAGE "
37
+ MongodbRepoUrl = "MONGODB_REPO_URL "
38
38
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"
46
42
47
43
automationconfFilePath = "/data/automation-mongod.conf"
48
44
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"
49
51
)
50
52
51
53
// MongoDBStatefulSetOwner is an interface which any resource which generates a MongoDB StatefulSet should implement.
@@ -124,6 +126,13 @@ func BuildMongoDBReplicaSetStatefulSetModificationFunction(mdb MongoDBStatefulSe
124
126
singleModeVolumeClaim = statefulset .WithVolumeClaim (dataVolumeName , dataPvc ())
125
127
}
126
128
}
129
+
130
+ podSecurityContext := podtemplatespec .NOOP ()
131
+ managedSecurityContext := envvar .ReadBool (ManagedSecurityContextEnv )
132
+ if ! managedSecurityContext {
133
+ podSecurityContext = podtemplatespec .WithSecurityContext (podtemplatespec .DefaultPodSecurityContext ())
134
+ }
135
+
127
136
return statefulset .Apply (
128
137
statefulset .WithName (mdb .GetName ()),
129
138
statefulset .WithNamespace (mdb .GetNamespace ()),
@@ -137,7 +146,7 @@ func BuildMongoDBReplicaSetStatefulSetModificationFunction(mdb MongoDBStatefulSe
137
146
singleModeVolumeClaim ,
138
147
statefulset .WithPodSpecTemplate (
139
148
podtemplatespec .Apply (
140
- podtemplatespec . WithSecurityContext ( podtemplatespec . DefaultPodSecurityContext ()) ,
149
+ podSecurityContext ,
141
150
podtemplatespec .WithPodLabels (labels ),
142
151
podtemplatespec .WithVolume (healthStatusVolume ),
143
152
podtemplatespec .WithVolume (hooksVolume ),
@@ -162,14 +171,20 @@ func mongodbAgentContainer(automationConfigSecretName string, volumeMounts []cor
162
171
"-healthCheckFilePath=" + agentHealthStatusFilePathValue ,
163
172
"-serveStatusPort=5000" ,
164
173
"-useLocalMongoDbTools" }, " " )
174
+
175
+ securityContext := container .NOOP ()
176
+ managedSecurityContext := envvar .ReadBool (ManagedSecurityContextEnv )
177
+ if ! managedSecurityContext {
178
+ securityContext = container .WithSecurityContext (container .DefaultSecurityContext ())
179
+ }
165
180
return container .Apply (
166
181
container .WithName (AgentName ),
167
182
container .WithImage (os .Getenv (AgentImageEnv )),
168
183
container .WithImagePullPolicy (corev1 .PullAlways ),
169
184
container .WithReadinessProbe (DefaultReadiness ()),
170
185
container .WithResourceRequirements (resourcerequirements .Defaults ()),
171
186
container .WithVolumeMounts (volumeMounts ),
172
- container . WithSecurityContext ( container . DefaultSecurityContext ()) ,
187
+ securityContext ,
173
188
container .WithCommand ([]string {"/bin/bash" , "-c" , `current_uid=$(id -u)
174
189
echo $current_uid
175
190
declare -r current_uid
@@ -212,7 +227,7 @@ func versionUpgradeHookInit(volumeMount []corev1.VolumeMount) container.Modifica
212
227
return container .Apply (
213
228
container .WithName (versionUpgradeHookName ),
214
229
container .WithCommand ([]string {"cp" , "version-upgrade-hook" , "/hooks/version-upgrade" }),
215
- container .WithImage (os .Getenv (versionUpgradeHookImageEnv )),
230
+ container .WithImage (os .Getenv (VersionUpgradeHookImageEnv )),
216
231
container .WithImagePullPolicy (corev1 .PullAlways ),
217
232
container .WithVolumeMounts (volumeMount ),
218
233
)
@@ -248,7 +263,7 @@ func readinessProbeInit(volumeMount []corev1.VolumeMount) container.Modification
248
263
return container .Apply (
249
264
container .WithName (readinessProbeContainerName ),
250
265
container .WithCommand ([]string {"cp" , "/probes/readinessprobe" , "/opt/scripts/readinessprobe" }),
251
- container .WithImage (os .Getenv (readinessProbeImageEnv )),
266
+ container .WithImage (os .Getenv (ReadinessProbeImageEnv )),
252
267
container .WithImagePullPolicy (corev1 .PullAlways ),
253
268
container .WithVolumeMounts (volumeMount ),
254
269
)
@@ -282,6 +297,12 @@ exec mongod -f %s;
282
297
mongoDbCommand ,
283
298
}
284
299
300
+ securityContext := container .NOOP ()
301
+ managedSecurityContext := envvar .ReadBool (ManagedSecurityContextEnv )
302
+ if ! managedSecurityContext {
303
+ securityContext = container .WithSecurityContext (container .DefaultSecurityContext ())
304
+ }
305
+
285
306
return container .Apply (
286
307
container .WithName (MongodbName ),
287
308
container .WithImage (getMongoDBImage (version )),
@@ -295,6 +316,6 @@ exec mongod -f %s;
295
316
),
296
317
container .WithVolumeMounts (volumeMounts ),
297
318
298
- container . WithSecurityContext ( container . DefaultSecurityContext ()) ,
319
+ securityContext ,
299
320
)
300
321
}
0 commit comments