mongo-hydra
v0.2.0
Published
A open source mongo orchestration tool with high hopes
Downloads
4
Readme
mongo-hydra
A open source mongo orchestration tool with high hopes.
Vision
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.
Installation
CLI
$ npm install -g mongo-hydra
+ mongo-hydra@latest
hydra replication -f examples/replication/hydra.yaml
Docker Image
docker pull unumotors/mongo-hydra
Release Schedule
| 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 |
Comparison
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.2 | 🟠 3.6 | ✅ 4.2 | | Security | Certificates | ⛔ | ⛔ | ✅ | | | Keyfiles | ⛔ | ✅ | ⛔ | | | Encryption at rest | ⛔ | ⛔ | ✅ | | Backups | Automatic backups | ⛔ | ✅ | ✅ | | | s3 | ⛔ | ✅ | ✅ | | | gcs | ⛔ | ✅ | ⛔ | | | tarsnap | ⛔ | ⛔ | ⛔ | | Monitoring | Prometheus | ⛔ | ✅ | ⛔ | | | Custom | ⛔ | ⛔ | ✅ | | Various | Documentation | 🟠 Limited| ✅ | 🟠 Limited |
Warning
Right now this project is pre alpha and not recommended for production systems.
Tests
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
.
Community & Contributions
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.
License
Copyright 2020 unu GmbH
Licensed under MIT