Skip to content

Commit e6b05c9

Browse files
committed
fixup! fixup! WIP: remove cert hash annotations
1 parent d7e8403 commit e6b05c9

File tree

5 files changed

+25
-26
lines changed

5 files changed

+25
-26
lines changed

controllers/om/deployment/testing_utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func CreateFromReplicaSet(mongoDBImage string, forceEnterprise bool, rs *mdb.Mon
3232
}
3333

3434
d.MergeReplicaSet(
35-
replicaset.BuildFromStatefulSet(mongoDBImage, forceEnterprise, sts, rs.GetSpec(), rs.Status.FeatureCompatibilityVersion),
35+
replicaset.BuildFromStatefulSet(mongoDBImage, forceEnterprise, sts, rs.GetSpec(), rs.Status.FeatureCompatibilityVersion, ""),
3636
rs.Spec.AdditionalMongodConfig.ToMap(),
3737
lastConfig.ToMap(),
3838
zap.S(),

controllers/om/process/om_process.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,15 @@ import (
88
mdbv1 "github.com/mongodb/mongodb-kubernetes/api/v1/mdb"
99
mdbmultiv1 "github.com/mongodb/mongodb-kubernetes/api/v1/mdbmulti"
1010
"github.com/mongodb/mongodb-kubernetes/controllers/om"
11-
"github.com/mongodb/mongodb-kubernetes/controllers/operator/certs"
1211
"github.com/mongodb/mongodb-kubernetes/pkg/dns"
13-
"github.com/mongodb/mongodb-kubernetes/pkg/util"
1412
)
1513

16-
func CreateMongodProcessesWithLimit(mongoDBImage string, forceEnterprise bool, set appsv1.StatefulSet, dbSpec mdbv1.DbSpec, limit int, fcv string) []om.Process {
14+
func CreateMongodProcessesWithLimit(mongoDBImage string, forceEnterprise bool, set appsv1.StatefulSet, dbSpec mdbv1.DbSpec, limit int, fcv string, certPath string) []om.Process {
1715
hostnames, names := dns.GetDnsForStatefulSetReplicasSpecified(set, dbSpec.GetClusterDomain(), limit, dbSpec.GetExternalDomain())
1816
processes := make([]om.Process, len(hostnames))
1917

20-
certificateFileName := ""
21-
if certificateHash, ok := set.Annotations[certs.CertHashAnnotationKey]; ok {
22-
certificateFileName = fmt.Sprintf("%s/%s", util.TLSCertMountPath, certificateHash)
23-
}
24-
2518
for idx, hostname := range hostnames {
26-
processes[idx] = om.NewMongodProcess(names[idx], hostname, mongoDBImage, forceEnterprise, dbSpec.GetAdditionalMongodConfig(), dbSpec, certificateFileName, set.Annotations, fcv)
19+
processes[idx] = om.NewMongodProcess(names[idx], hostname, mongoDBImage, forceEnterprise, dbSpec.GetAdditionalMongodConfig(), dbSpec, certPath, set.Annotations, fcv)
2720
}
2821

2922
return processes

controllers/om/replicaset/om_replicaset.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ import (
1515

1616
// BuildFromStatefulSet returns a replica set that can be set in the Automation Config
1717
// based on the given StatefulSet and MongoDB resource.
18-
func BuildFromStatefulSet(mongoDBImage string, forceEnterprise bool, set appsv1.StatefulSet, dbSpec mdbv1.DbSpec, fcv string) om.ReplicaSetWithProcesses {
19-
return BuildFromStatefulSetWithReplicas(mongoDBImage, forceEnterprise, set, dbSpec, int(*set.Spec.Replicas), fcv)
18+
func BuildFromStatefulSet(mongoDBImage string, forceEnterprise bool, set appsv1.StatefulSet, dbSpec mdbv1.DbSpec, fcv string, certPath string) om.ReplicaSetWithProcesses {
19+
return BuildFromStatefulSetWithReplicas(mongoDBImage, forceEnterprise, set, dbSpec, int(*set.Spec.Replicas), fcv, certPath)
2020
}
2121

2222
// BuildFromStatefulSetWithReplicas returns a replica set that can be set in the Automation Config
2323
// based on the given StatefulSet and MongoDB spec. The amount of members is set by the replicas
2424
// parameter.
25-
func BuildFromStatefulSetWithReplicas(mongoDBImage string, forceEnterprise bool, set appsv1.StatefulSet, dbSpec mdbv1.DbSpec, replicas int, fcv string) om.ReplicaSetWithProcesses {
26-
members := process.CreateMongodProcessesWithLimit(mongoDBImage, forceEnterprise, set, dbSpec, replicas, fcv)
25+
func BuildFromStatefulSetWithReplicas(mongoDBImage string, forceEnterprise bool, set appsv1.StatefulSet, dbSpec mdbv1.DbSpec, replicas int, fcv string, certPath string) om.ReplicaSetWithProcesses {
26+
members := process.CreateMongodProcessesWithLimit(mongoDBImage, forceEnterprise, set, dbSpec, replicas, fcv, certPath)
2727
replicaSet := om.NewReplicaSet(set.Name, dbSpec.GetMongoDBVersion())
2828
rsWithProcesses := om.NewReplicaSetWithProcesses(replicaSet, members, dbSpec.GetMemberOptions())
2929
rsWithProcesses.SetHorizons(dbSpec.GetHorizonConfig())

controllers/operator/mongodbreplicaset_controller.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -198,12 +198,13 @@ func (r *ReconcileMongoDbReplicaSet) Reconcile(ctx context.Context, request reco
198198
}
199199
}
200200

201+
certHash := enterprisepem.ReadHashFromSecret(ctx, r.SecretClient, rs.Namespace, rsCertsConfig.CertSecretName, databaseSecretPath, log)
201202
internalClusterCertHash := enterprisepem.ReadHashFromSecret(ctx, r.SecretClient, rs.Namespace, rsCertsConfig.InternalClusterSecretName, databaseSecretPath, log)
202203

203204
rsConfig := construct.ReplicaSetOptions(
204205
PodEnvVars(newPodVars(conn, projectConfig, rs.Spec.LogLevel)),
205206
CurrentAgentAuthMechanism(currentAgentAuthMode),
206-
CertificateHash(enterprisepem.ReadHashFromSecret(ctx, r.SecretClient, rs.Namespace, rsCertsConfig.CertSecretName, databaseSecretPath, log)),
207+
CertificateHash(certHash),
207208
InternalClusterHash(internalClusterCertHash),
208209
PrometheusTLSCertHash(prometheusCertHash),
209210
WithVaultConfig(vaultConfig),
@@ -240,12 +241,17 @@ func (r *ReconcileMongoDbReplicaSet) Reconcile(ctx context.Context, request reco
240241
internalClusterCertPath = fmt.Sprintf("%s%s", util.InternalClusterAuthMountPath, internalClusterCertHash)
241242
}
242243

244+
certPath := ""
245+
if certHash != "" {
246+
certPath = fmt.Sprintf("%s/%s", util.TLSCertMountPath, certHash)
247+
}
248+
243249
// Recovery prevents some deadlocks that can occur during reconciliation, e.g. the setting of an incorrect automation
244250
// configuration and a subsequent attempt to overwrite it later, the operator would be stuck in Pending phase.
245251
// See CLOUDP-189433 and CLOUDP-229222 for more details.
246252
if recovery.ShouldTriggerRecovery(rs.Status.Phase != mdbstatus.PhaseRunning, rs.Status.LastTransition) {
247253
log.Warnf("Triggering Automatic Recovery. The MongoDB resource %s/%s is in %s state since %s", rs.Namespace, rs.Name, rs.Status.Phase, rs.Status.LastTransition)
248-
automationConfigStatus := r.updateOmDeploymentRs(ctx, conn, rs.Status.Members, rs, sts, log, caFilePath, internalClusterCertPath, agentCertSecretSelector, prometheusCertHash, true).OnErrorPrepend("Failed to create/update (Ops Manager reconciliation phase):")
254+
automationConfigStatus := r.updateOmDeploymentRs(ctx, conn, rs.Status.Members, rs, sts, log, caFilePath, certPath, internalClusterCertPath, agentCertSecretSelector, prometheusCertHash, true).OnErrorPrepend("Failed to create/update (Ops Manager reconciliation phase):")
249255
deploymentError := create.DatabaseInKubernetes(ctx, r.client, *rs, sts, rsConfig, log)
250256
if deploymentError != nil {
251257
log.Errorf("Recovery failed because of deployment errors, %w", deploymentError)
@@ -261,7 +267,7 @@ func (r *ReconcileMongoDbReplicaSet) Reconcile(ctx context.Context, request reco
261267
}
262268
status = workflow.RunInGivenOrder(publishAutomationConfigFirst(ctx, r.client, *rs, lastSpec, rsConfig, log),
263269
func() workflow.Status {
264-
return r.updateOmDeploymentRs(ctx, conn, rs.Status.Members, rs, sts, log, caFilePath, internalClusterCertPath, agentCertSecretSelector, prometheusCertHash, false).OnErrorPrepend("Failed to create/update (Ops Manager reconciliation phase):")
270+
return r.updateOmDeploymentRs(ctx, conn, rs.Status.Members, rs, sts, log, caFilePath, certPath, internalClusterCertPath, agentCertSecretSelector, prometheusCertHash, false).OnErrorPrepend("Failed to create/update (Ops Manager reconciliation phase):")
265271
},
266272
func() workflow.Status {
267273
workflowStatus := create.HandlePVCResize(ctx, r.client, &sts, log)
@@ -422,7 +428,7 @@ func AddReplicaSetController(ctx context.Context, mgr manager.Manager, imageUrls
422428

423429
// updateOmDeploymentRs performs OM registration operation for the replicaset. So the changes will be finally propagated
424430
// to automation agents in containers
425-
func (r *ReconcileMongoDbReplicaSet) updateOmDeploymentRs(ctx context.Context, conn om.Connection, membersNumberBefore int, rs *mdbv1.MongoDB, set appsv1.StatefulSet, log *zap.SugaredLogger, caFilePath, internalClusterCertPath string, agentCertSecretSelector corev1.SecretKeySelector, prometheusCertHash string, isRecovering bool) workflow.Status {
431+
func (r *ReconcileMongoDbReplicaSet) updateOmDeploymentRs(ctx context.Context, conn om.Connection, membersNumberBefore int, rs *mdbv1.MongoDB, set appsv1.StatefulSet, log *zap.SugaredLogger, caFilePath, certPath, internalClusterCertPath string, agentCertSecretSelector corev1.SecretKeySelector, prometheusCertHash string, isRecovering bool) workflow.Status {
426432
log.Debug("Entering UpdateOMDeployments")
427433
// Only "concrete" RS members should be observed
428434
// - if scaling down, let's observe only members that will remain after scale-down operation
@@ -434,7 +440,7 @@ func (r *ReconcileMongoDbReplicaSet) updateOmDeploymentRs(ctx context.Context, c
434440

435441
// If current operation is to Disable TLS, then we should the current members of the Replica Set,
436442
// this is, do not scale them up or down util TLS disabling has completed.
437-
shouldLockMembers, err := updateOmDeploymentDisableTLSConfiguration(conn, r.imageUrls[mcoConstruct.MongodbImageEnv], r.forceEnterprise, membersNumberBefore, rs, set, log, caFilePath)
443+
shouldLockMembers, err := updateOmDeploymentDisableTLSConfiguration(conn, r.imageUrls[mcoConstruct.MongodbImageEnv], r.forceEnterprise, membersNumberBefore, rs, set, log, caFilePath, certPath)
438444
if err != nil && !isRecovering {
439445
return workflow.Failed(err)
440446
}
@@ -448,7 +454,7 @@ func (r *ReconcileMongoDbReplicaSet) updateOmDeploymentRs(ctx context.Context, c
448454
updatedMembers = int(*set.Spec.Replicas)
449455
}
450456

451-
replicaSet := replicaset.BuildFromStatefulSetWithReplicas(r.imageUrls[mcoConstruct.MongodbImageEnv], r.forceEnterprise, set, rs.GetSpec(), updatedMembers, rs.CalculateFeatureCompatibilityVersion())
457+
replicaSet := replicaset.BuildFromStatefulSetWithReplicas(r.imageUrls[mcoConstruct.MongodbImageEnv], r.forceEnterprise, set, rs.GetSpec(), updatedMembers, rs.CalculateFeatureCompatibilityVersion(), certPath)
452458
processNames := replicaSet.GetProcessNames()
453459

454460
status, additionalReconciliationRequired := r.updateOmAuthentication(ctx, conn, processNames, rs, agentCertSecretSelector, caFilePath, internalClusterCertPath, isRecovering, log)
@@ -512,7 +518,7 @@ func (r *ReconcileMongoDbReplicaSet) updateOmDeploymentRs(ctx context.Context, c
512518
// updateOmDeploymentDisableTLSConfiguration checks if TLS configuration needs
513519
// to be disabled. In which case it will disable it and inform to the calling
514520
// function.
515-
func updateOmDeploymentDisableTLSConfiguration(conn om.Connection, mongoDBImage string, forceEnterprise bool, membersNumberBefore int, rs *mdbv1.MongoDB, set appsv1.StatefulSet, log *zap.SugaredLogger, caFilePath string) (bool, error) {
521+
func updateOmDeploymentDisableTLSConfiguration(conn om.Connection, mongoDBImage string, forceEnterprise bool, membersNumberBefore int, rs *mdbv1.MongoDB, set appsv1.StatefulSet, log *zap.SugaredLogger, caFilePath, certPath string) (bool, error) {
516522
tlsConfigWasDisabled := false
517523

518524
err := conn.ReadUpdateDeployment(
@@ -526,7 +532,7 @@ func updateOmDeploymentDisableTLSConfiguration(conn om.Connection, mongoDBImage
526532

527533
// configure as many agents/Pods as we currently have, no more (in case
528534
// there's a scale up change at the same time).
529-
replicaSet := replicaset.BuildFromStatefulSetWithReplicas(mongoDBImage, forceEnterprise, set, rs.GetSpec(), membersNumberBefore, rs.CalculateFeatureCompatibilityVersion())
535+
replicaSet := replicaset.BuildFromStatefulSetWithReplicas(mongoDBImage, forceEnterprise, set, rs.GetSpec(), membersNumberBefore, rs.CalculateFeatureCompatibilityVersion(), certPath)
530536

531537
lastConfig, err := rs.GetLastAdditionalMongodConfigByType(mdbv1.ReplicaSetConfig)
532538
if err != nil {

controllers/operator/mongodbreplicaset_controller_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -400,22 +400,22 @@ func TestUpdateDeploymentTLSConfiguration(t *testing.T) {
400400
stsNoTLS := construct.DatabaseStatefulSet(*rsNoTLS, construct.ReplicaSetOptions(construct.GetPodEnvOptions()), zap.S())
401401

402402
// TLS Disabled -> TLS Disabled
403-
shouldLockMembers, err := updateOmDeploymentDisableTLSConfiguration(om.NewMockedOmConnection(deploymentNoTLS), "fake-mongoDBImage", false, 3, rsNoTLS, stsNoTLS, zap.S(), util.CAFilePathInContainer)
403+
shouldLockMembers, err := updateOmDeploymentDisableTLSConfiguration(om.NewMockedOmConnection(deploymentNoTLS), "fake-mongoDBImage", false, 3, rsNoTLS, stsNoTLS, zap.S(), util.CAFilePathInContainer, "")
404404
assert.NoError(t, err)
405405
assert.False(t, shouldLockMembers)
406406

407407
// TLS Disabled -> TLS Enabled
408-
shouldLockMembers, err = updateOmDeploymentDisableTLSConfiguration(om.NewMockedOmConnection(deploymentNoTLS), "fake-mongoDBImage", false, 3, rsWithTLS, stsWithTLS, zap.S(), util.CAFilePathInContainer)
408+
shouldLockMembers, err = updateOmDeploymentDisableTLSConfiguration(om.NewMockedOmConnection(deploymentNoTLS), "fake-mongoDBImage", false, 3, rsWithTLS, stsWithTLS, zap.S(), util.CAFilePathInContainer, "")
409409
assert.NoError(t, err)
410410
assert.False(t, shouldLockMembers)
411411

412412
// TLS Enabled -> TLS Enabled
413-
shouldLockMembers, err = updateOmDeploymentDisableTLSConfiguration(om.NewMockedOmConnection(deploymentWithTLS), "fake-mongoDBImage", false, 3, rsWithTLS, stsWithTLS, zap.S(), util.CAFilePathInContainer)
413+
shouldLockMembers, err = updateOmDeploymentDisableTLSConfiguration(om.NewMockedOmConnection(deploymentWithTLS), "fake-mongoDBImage", false, 3, rsWithTLS, stsWithTLS, zap.S(), util.CAFilePathInContainer, "")
414414
assert.NoError(t, err)
415415
assert.False(t, shouldLockMembers)
416416

417417
// TLS Enabled -> TLS Disabled
418-
shouldLockMembers, err = updateOmDeploymentDisableTLSConfiguration(om.NewMockedOmConnection(deploymentWithTLS), "fake-mongoDBImage", false, 3, rsNoTLS, stsNoTLS, zap.S(), util.CAFilePathInContainer)
418+
shouldLockMembers, err = updateOmDeploymentDisableTLSConfiguration(om.NewMockedOmConnection(deploymentWithTLS), "fake-mongoDBImage", false, 3, rsNoTLS, stsNoTLS, zap.S(), util.CAFilePathInContainer, "")
419419
assert.NoError(t, err)
420420
assert.True(t, shouldLockMembers)
421421
}

0 commit comments

Comments
 (0)