diff --git a/api/v1/mongodbcommunity_types.go b/api/v1/mongodbcommunity_types.go index 8c78b8a4e..c86fa9e03 100644 --- a/api/v1/mongodbcommunity_types.go +++ b/api/v1/mongodbcommunity_types.go @@ -132,6 +132,9 @@ type MongoDBCommunitySpec struct { // MemberConfig // +optional MemberConfig []automationconfig.MemberOptions `json:"memberConfig,omitempty"` + + // OverrideClusterDomain overrides the cluster domain. + OverrideClusterDomain string `json:"overrideClusterDomain,omitempty"` } // MapWrapper is a wrapper for a map to be used by other structs. diff --git a/config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml b/config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml index 1b1189970..212bdaee2 100644 --- a/config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml +++ b/config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml @@ -223,6 +223,9 @@ spec: members: description: Members is the number of members in the replica set type: integer + overrideClusterDomain: + description: OverrideClusterDomain overrides the cluster domain. + type: string prometheus: description: Prometheus configurations. properties: diff --git a/controllers/replica_set_controller.go b/controllers/replica_set_controller.go index 2d9355a57..3fae49dbc 100644 --- a/controllers/replica_set_controller.go +++ b/controllers/replica_set_controller.go @@ -203,9 +203,12 @@ func (r ReplicaSetReconciler) Reconcile(ctx context.Context, request reconcile.R withMongoDBArbiters(mdb.AutomationConfigArbitersThisReconciliation()). withPendingPhase(10)) } - + mdbClusterDomain := mdb.Spec.OverrideClusterDomain + if mdbClusterDomain == "" { + mdbClusterDomain = os.Getenv(clusterDomain) + } res, err := status.Update(ctx, r.client.Status(), &mdb, statusOptions(). - withMongoURI(mdb.MongoURI(os.Getenv(clusterDomain))). + withMongoURI(mdb.MongoURI(mdbClusterDomain)). withMongoDBMembers(mdb.AutomationConfigMembersThisReconciliation()). withStatefulSetReplicas(mdb.StatefulSetReplicasThisReconciliation()). withStatefulSetArbiters(mdb.StatefulSetArbitersThisReconciliation()). @@ -218,7 +221,7 @@ func (r ReplicaSetReconciler) Reconcile(ctx context.Context, request reconcile.R return res, err } - if err := r.updateConnectionStringSecrets(ctx, mdb, os.Getenv(clusterDomain)); err != nil { + if err := r.updateConnectionStringSecrets(ctx, mdb, mdbClusterDomain); err != nil { r.log.Errorf("Could not update connection string secrets: %s", err) } @@ -499,8 +502,12 @@ func (r ReplicaSetReconciler) ensureAutomationConfig(mdb mdbv1.MongoDBCommunity, } func buildAutomationConfig(mdb mdbv1.MongoDBCommunity, auth automationconfig.Auth, currentAc automationconfig.AutomationConfig, modifications ...automationconfig.Modification) (automationconfig.AutomationConfig, error) { - domain := getDomain(mdb.ServiceName(), mdb.Namespace, os.Getenv(clusterDomain)) - arbiterDomain := getDomain(mdb.ServiceName(), mdb.Namespace, os.Getenv(clusterDomain)) + mdbClusterDomain := mdb.Spec.OverrideClusterDomain + if mdbClusterDomain == "" { + mdbClusterDomain = os.Getenv(clusterDomain) + } + domain := getDomain(mdb.ServiceName(), mdb.Namespace, mdbClusterDomain) + arbiterDomain := getDomain(mdb.ServiceName(), mdb.Namespace, mdbClusterDomain) zap.S().Debugw("AutomationConfigMembersThisReconciliation", "mdb.AutomationConfigMembersThisReconciliation()", mdb.AutomationConfigMembersThisReconciliation())