Summary / use case
We operate a fleet of self-managed MongoDB Enterprise deployments that run on
VMs/bare-metal and are registered in Ops Manager, with process lifecycle handled
by OM automation + our configuration management. We'd like to manage these
deployments declaratively through MCK CRs — users, roles, auth, TLS, backup, and
topology/config — as a permanent steady state, with the operator NOT creating
StatefulSets. This is the inverse of a migration: the mongod processes are meant
to stay off-Kubernetes.
What we found (and really like)
The VM-to-Kubernetes migration epic (#800, with #1042 merged and #1133 open)
already introduces almost everything needed:
spec.externalMembers + replicaSetNameOverride
- external-aware merge logic (MergeReplicaSet keeps external processes,
GetNumberOfExcessProcesses ignores them, limitVotingMembers no-ops,
externalAgentVersion read from OM)
- the
kubectl mongodb migrate import tool that generates zero-diff CRs
The gap for our use case
The epic is intentionally migration-shaped (external members are transitional and
pruned; steady state = all-Kubernetes). For permanent external management we'd
need a "managed external" mode where:
spec.members: 0 is allowed and no StatefulSet/Service is created;
externalMembers can be added/edited (to manage topology), not just removed;
- no migration completion/pruning is required.
Today noExternalMembersAdditionOrChanges, atMostOneMigrationChangeAtATime, and
the always-on StatefulSet build prevent this.
Questions
- Is a permanent managed-external (zero-StatefulSet) mode something you'd consider
in scope for MCK, or is it intentionally out of scope (migration-only)?
- If in scope, would you prefer it layered on
externalMembers (a steady-state /
managed flag) or as a separate API surface?
- Would you accept community PRs for this on top of the epic branch, and how would
you want it sequenced relative to the epic merging to master?
We're prepared to contribute (short design doc + incremental, CLA-signed PRs,
starting with ReplicaSet) and to test against real external OM-managed deployments.
cc @nammn @lucian-tosa @filipcirtog
Summary / use case
We operate a fleet of self-managed MongoDB Enterprise deployments that run on
VMs/bare-metal and are registered in Ops Manager, with process lifecycle handled
by OM automation + our configuration management. We'd like to manage these
deployments declaratively through MCK CRs — users, roles, auth, TLS, backup, and
topology/config — as a permanent steady state, with the operator NOT creating
StatefulSets. This is the inverse of a migration: the mongod processes are meant
to stay off-Kubernetes.
What we found (and really like)
The VM-to-Kubernetes migration epic (#800, with #1042 merged and #1133 open)
already introduces almost everything needed:
spec.externalMembers+replicaSetNameOverrideGetNumberOfExcessProcesses ignores them, limitVotingMembers no-ops,
externalAgentVersion read from OM)
kubectl mongodb migrateimport tool that generates zero-diff CRsThe gap for our use case
The epic is intentionally migration-shaped (external members are transitional and
pruned; steady state = all-Kubernetes). For permanent external management we'd
need a "managed external" mode where:
spec.members: 0is allowed and no StatefulSet/Service is created;externalMemberscan be added/edited (to manage topology), not just removed;Today
noExternalMembersAdditionOrChanges,atMostOneMigrationChangeAtATime, andthe always-on StatefulSet build prevent this.
Questions
in scope for MCK, or is it intentionally out of scope (migration-only)?
externalMembers(a steady-state /managedflag) or as a separate API surface?you want it sequenced relative to the epic merging to
master?We're prepared to contribute (short design doc + incremental, CLA-signed PRs,
starting with ReplicaSet) and to test against real external OM-managed deployments.
cc @nammn @lucian-tosa @filipcirtog