@@ -105,10 +105,10 @@ type DatabaseStatefulSetOptions struct {
105
105
StsType StsType
106
106
AdditionalMongodConfig * mdbv1.AdditionalMongodConfig
107
107
108
- InitDatabaseNonStaticImage string
109
- DatabaseNonStaticImage string
110
- MongodbImage string
111
- AgentImage string
108
+ InitDatabaseImage string
109
+ DatabaseNonStaticImage string
110
+ MongodbImage string
111
+ AgentImage string
112
112
113
113
Annotations map [string ]string
114
114
VaultConfig vault.VaultConfiguration
@@ -665,6 +665,63 @@ func getVolumesAndVolumeMounts(mdb databaseStatefulSetSource, databaseOpts Datab
665
665
666
666
// buildMongoDBPodTemplateSpec constructs the podTemplateSpec for the MongoDB resource
667
667
func buildMongoDBPodTemplateSpec (opts DatabaseStatefulSetOptions , mdb databaseStatefulSetSource ) podtemplatespec.Modification {
668
+ if architectures .IsRunningStaticArchitecture (mdb .GetAnnotations ()) {
669
+ return buildStaticArchitecturePodTemplateSpec (opts , mdb )
670
+ } else {
671
+ return buildNonStaticArchitecturePodTemplateSpec (opts , mdb )
672
+ }
673
+ }
674
+
675
+ // buildStaticArchitecturePodTemplateSpec constructs the podTemplateSpec for static architecture
676
+ func buildStaticArchitecturePodTemplateSpec (opts DatabaseStatefulSetOptions , mdb databaseStatefulSetSource ) podtemplatespec.Modification {
677
+ var volumes []corev1.Volume
678
+
679
+ _ , containerSecurityContext := podtemplatespec .WithDefaultSecurityContextsModifications ()
680
+
681
+ // Static architecture containers: agent container and mongod container
682
+ agentContainerModifications := []func (* corev1.Container ){container .Apply (
683
+ container .WithName (util .AgentContainerName ),
684
+ container .WithImage (opts .AgentImage ),
685
+ container .WithEnvs (databaseEnvVars (opts )... ),
686
+ containerSecurityContext ,
687
+ )}
688
+
689
+ mongodContainerModifications := []func (* corev1.Container ){container .Apply (
690
+ container .WithName (util .DatabaseContainerName ),
691
+ container .WithArgs ([]string {"" }),
692
+ container .WithImage (opts .MongodbImage ),
693
+ container .WithEnvs (databaseEnvVars (opts )... ),
694
+ container .WithCommand ([]string {"bash" , "-c" , "tail -F -n0 ${MDB_LOG_FILE_MONGODB} mongodb_marker" }),
695
+ containerSecurityContext ,
696
+ )}
697
+
698
+ // Handle hostname override for static architecture
699
+ if opts .HostNameOverrideConfigmapName != "" {
700
+ volumes = append (volumes , statefulset .CreateVolumeFromConfigMap (opts .HostNameOverrideConfigmapName , opts .HostNameOverrideConfigmapName ))
701
+ hostnameOverrideModification := container .WithVolumeMounts ([]corev1.VolumeMount {
702
+ {
703
+ Name : opts .HostNameOverrideConfigmapName ,
704
+ MountPath : "/opt/scripts/config" ,
705
+ },
706
+ })
707
+ agentContainerModifications = append (agentContainerModifications , hostnameOverrideModification )
708
+ mongodContainerModifications = append (mongodContainerModifications , hostnameOverrideModification )
709
+ }
710
+
711
+ mods := []podtemplatespec.Modification {
712
+ sharedDatabaseConfiguration (opts , mdb ),
713
+ podtemplatespec .WithServiceAccount (util .MongoDBServiceAccount ),
714
+ podtemplatespec .WithServiceAccount (getServiceAccountName (opts )),
715
+ podtemplatespec .WithVolumes (volumes ),
716
+ podtemplatespec .WithContainerByIndex (0 , agentContainerModifications ... ),
717
+ podtemplatespec .WithContainerByIndex (1 , mongodContainerModifications ... ),
718
+ }
719
+
720
+ return podtemplatespec .Apply (mods ... )
721
+ }
722
+
723
+ // buildNonStaticArchitecturePodTemplateSpec constructs the podTemplateSpec for non-static architecture
724
+ func buildNonStaticArchitecturePodTemplateSpec (opts DatabaseStatefulSetOptions , mdb databaseStatefulSetSource ) podtemplatespec.Modification {
668
725
// scripts volume is shared by the init container and the AppDB, so the startup
669
726
// script can be copied over
670
727
scriptsVolume := statefulset .CreateVolumeFromEmptyDir ("database-scripts" )
@@ -673,7 +730,9 @@ func buildMongoDBPodTemplateSpec(opts DatabaseStatefulSetOptions, mdb databaseSt
673
730
volumes := []corev1.Volume {scriptsVolume }
674
731
volumeMounts := []corev1.VolumeMount {databaseScriptsVolumeMount }
675
732
676
- initContainerModifications := []func (* corev1.Container ){buildDatabaseInitContainer (opts .InitDatabaseNonStaticImage )}
733
+ // Non-static architecture: init container and database container
734
+ initContainerModifications := []func (* corev1.Container ){buildDatabaseInitContainer (opts .InitDatabaseImage )}
735
+
677
736
databaseContainerModifications := []func (* corev1.Container ){container .Apply (
678
737
container .WithName (util .DatabaseContainerName ),
679
738
container .WithImage (opts .DatabaseNonStaticImage ),
@@ -682,47 +741,17 @@ func buildMongoDBPodTemplateSpec(opts DatabaseStatefulSetOptions, mdb databaseSt
682
741
container .WithVolumeMounts (volumeMounts ),
683
742
)}
684
743
685
- _ , containerSecurityContext := podtemplatespec .WithDefaultSecurityContextsModifications ()
686
-
687
- staticContainerMongodContainerModification := podtemplatespec .NOOP ()
688
- if architectures .IsRunningStaticArchitecture (mdb .GetAnnotations ()) {
689
- // we don't use initContainers therefore, we reset it here
690
- initContainerModifications = []func (* corev1.Container ){}
691
- mongodModification := []func (* corev1.Container ){container .Apply (
692
- container .WithName (util .DatabaseContainerName ),
693
- container .WithArgs ([]string {"" }),
694
- container .WithImage (opts .MongodbImage ),
695
- container .WithEnvs (databaseEnvVars (opts )... ),
696
- container .WithCommand ([]string {"bash" , "-c" , "tail -F -n0 ${MDB_LOG_FILE_MONGODB} mongodb_marker" }),
697
- containerSecurityContext ,
698
- )}
699
- staticContainerMongodContainerModification = podtemplatespec .WithContainer (util .DatabaseContainerName , mongodModification ... )
700
-
701
- // We are not setting the database-scripts volume on purpose,
702
- // since we don't need to copy things from the init container over.
703
- databaseContainerModifications = []func (* corev1.Container ){container .Apply (
704
- container .WithName (util .AgentContainerName ),
705
- container .WithImage (opts .AgentImage ),
706
- container .WithEnvs (databaseEnvVars (opts )... ),
707
- containerSecurityContext ,
708
- )}
709
- }
710
-
744
+ // Handle hostname override for non-static architecture
711
745
if opts .HostNameOverrideConfigmapName != "" {
712
746
volumes = append (volumes , statefulset .CreateVolumeFromConfigMap (opts .HostNameOverrideConfigmapName , opts .HostNameOverrideConfigmapName ))
713
- modification := container .WithVolumeMounts ([]corev1.VolumeMount {
747
+ hostnameOverrideModification := container .WithVolumeMounts ([]corev1.VolumeMount {
714
748
{
715
749
Name : opts .HostNameOverrideConfigmapName ,
716
750
MountPath : "/opt/scripts/config" ,
717
751
},
718
752
})
719
-
720
- // we only need to add the volume modification if we actually use an init container
721
- if len (initContainerModifications ) > 0 {
722
- initContainerModifications = append (initContainerModifications , modification )
723
- }
724
-
725
- databaseContainerModifications = append (databaseContainerModifications , modification )
753
+ initContainerModifications = append (initContainerModifications , hostnameOverrideModification )
754
+ databaseContainerModifications = append (databaseContainerModifications , hostnameOverrideModification )
726
755
}
727
756
728
757
mods := []podtemplatespec.Modification {
@@ -731,11 +760,7 @@ func buildMongoDBPodTemplateSpec(opts DatabaseStatefulSetOptions, mdb databaseSt
731
760
podtemplatespec .WithServiceAccount (getServiceAccountName (opts )),
732
761
podtemplatespec .WithVolumes (volumes ),
733
762
podtemplatespec .WithContainerByIndex (0 , databaseContainerModifications ... ),
734
- staticContainerMongodContainerModification ,
735
- }
736
-
737
- if len (initContainerModifications ) > 0 {
738
- mods = append (mods , podtemplatespec .WithInitContainer (InitDatabaseContainerName , initContainerModifications ... ))
763
+ podtemplatespec .WithInitContainerByIndex (0 , initContainerModifications ... ),
739
764
}
740
765
741
766
return podtemplatespec .Apply (mods ... )
0 commit comments