Skip to content

Support a permanent "managed external" (no-StatefulSet) deployment mode on top of the VM-migration externalMembers #1257

Description

@yuvalgl

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

  1. 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)?
  2. If in scope, would you prefer it layered on externalMembers (a steady-state /
    managed flag) or as a separate API surface?
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions