A open source mongo orchestration tool with high hopes.
Automate the creation, modification, or deletion of everything required to run a highly available scalable mongo cluster.
Reliability Highly available, self healing, resistant to failure, scalable leveraging existing orchestration tools (eg k8s)
Developer Experience Infra as code, simple to get started, easy to scale down for local development and experimentation.
At unu we run large mongo clusters. We use homegrown tools to manage these clusters. These tools were originally built in bash and have become hard to maintain.
Mongo-hydra is an attempt to open source all that learning in a proper reuseable maintainable tool that we will use internally too.
$ npm install -g mongo-hydra
+ mongo-hydra@latest
hydra replication -f examples/replication/hydra.yaml
docker pull unumotors/mongo-hydra
A full set of examples is available in /examples directory.
Version | Component / Feature | Github Milestone |
---|---|---|
v0.1.0 |
Basic scaffolding + connection logic | v0.0.1 |
v0.2.0 |
Manage replication | v0.2.0 |
v0.3.0 |
Sharding | v0.3.0 |
v0.4.0 |
User and roles | v0.4.0 |
v0.5.0 |
Authentication | v0.5.0 |
v0.6.0 |
K8s Operator + CRDs | v0.6.0 |
Similar tools like KubeDB and Percona Kubernetes Operator exist. This lists their current feature set.
Hydra | KubeDB | Percona | ||
---|---|---|---|---|
Interface | CLI | ✅ | ⛔ | ⛔ |
Raw Machines | ✅ | ⛔ | ⛔ | |
Docker Standalone | ✅ | ⛔ | ⛔ | |
k8s operator | ⛔ | ✅ | ✅ | |
MongoDB support | Replica sets | ✅ | ✅ | ✅ |
Delayed members | ⛔ | ⛔ | ⛔ | |
Arbiter members | ⛔ | ⛔ | ✅ | |
Sharded cluster | ⛔ | ⛔ | ⛔ | |
User management | ⛔ | ⛔ | ⛔ | |
Admin user setup | ⛔ | ✅ (k8s) | ✅(k8s) | |
Mongo version support | ✅ =<4.4 | 🟠 3.6 | ✅ 4.2 | |
Security | Certificates | ⛔ | ⛔ | ✅ |
[Vault][vault] support | ⛔ | ⛔ | ⛔ | |
Keyfiles | ⛔ | ✅ | ⛔ | |
Encryption at rest | ⛔ | ⛔ | ✅ | |
Backups | Automatic backups | ⛔ | ✅ | ✅ |
s3 | ⛔ | ✅ | ✅ | |
gcs | ⛔ | ✅ | ⛔ | |
tarsnap | ⛔ | ⛔ | ⛔ | |
Monitoring | Prometheus | ⛔ | ✅ | ⛔ |
Custom | ⛔ | ⛔ | ✅ | |
Various | Documentation | 🟠 Limited | ✅ | 🟠 Limited |
Right now this project is pre alpha and not recommended for production systems.
This project is supported by unit and integration level tests.
To run the unit-tests you need to provide a mongod instance without auth at localhost and run npm run test-dev
.
To run integration tests you need to run MONGO_VERSION=4.0 docker-compose -f test-integration/docker-compose.yaml up
and npm run test-integration
.
Although we will gladly welcome contributions in the near future we would like to first get our first minimal release as we need to aim to maintain feature parity with our internal tool, before opening it up to external contributions.
Questions and feedback: file an issue.
Follow along: Github Releases.
Copyright 2020 unu GmbH
Licensed under MIT