Automating MongoDB Replica set configuration on Kubernetes

1/25/2017

I am creating a MongoDB cluster on Kubernetes using Stateful sets. I have 3 mongo replicas configured in my Stateful set.

Now I create Stateful set and service using just one command

kubectl create -f mongo-stateful.yaml

Then I use the mongo client to initiate mongo replica set members.

rs.initiate(
   {
      _id: "replicaset1",
      version: 1,
      members: [
         { _id: 0, host:port1 },
         { _id: 1, host : host:port1 },
         { _id: 2, host : host:port1  }
      ]
   }
)

All of this works except I would like to automate this step of configuring replica set members.

My questions is whether this step can be automated and if we can add this to the yaml file?

-- Jyothi
kubernetes
mongodb
replicaset

2 Answers

5/4/2018

Yes, it is possible, you have several choices:

  1. Use the sidecar approach as specified by @tzik, then you don't need to do much in your code
  2. Use the kubernetes lifecycle.postInstall feature to implement the clustering on your own (this is a bit tricky, because postInstall runs on each statefulset member)
  3. Use if you decide to use helm to manage your k8s deployments, then you can use helm post-install hooks to initiate your mongodb cluster.
-- BostonHiker
Source: StackOverflow

1/31/2017
-- tzik
Source: StackOverflow