From 86c2ec8269e20dfcd35abd403074a8cb17cd6a5f Mon Sep 17 00:00:00 2001 From: Edimar Cardoso Date: Thu, 4 Jul 2024 00:13:56 -0300 Subject: [PATCH] Adding the option to override the cluster domain This option will help in cases of changes to the cluster domain or when configurations in the cluster's DNS know how to deal with other domains, such as customizations in CoreDNS. --- api/v1/mongodbcommunity_types.go | 3 +++ ...bcommunity.mongodb.com_mongodbcommunity.yaml | 3 +++ controllers/replica_set_controller.go | 17 ++++++++++++----- 3 files changed, 18 insertions(+), 5 deletions(-) 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())