Making running production-grade databases easy on Kubernetes
Running production quality database in Kubernetes can be tricky to say the least. In the early days of Kubernetes, replication controllers were used to run a single pod for a database. With the introduction of StatefulSet, it became easy to run a docker container for any database. But what about monitoring, taking periodic backups, restoring from backups or cloning from an existing database? KubeDB is a framework for writing operators for any database that support the following operational requirements:
- Create a database declaratively using CRD.
- Take one-off backups or periodic backups to various cloud stores, eg, S3, GCS, Azure etc.
- Restore from backup or clone any database.
- Native integration with Prometheus for monitoring via CoreOS Prometheus Operator.
- Apply deletion lock to avoid accidental deletion of database.
- Keep track of deleted databases, cleanup prior snapshots with a single command.
- Use cli to manage databases like kubectl for Kubernetes.
KubeDB is developed at AppsCode to run their SAAS platform on Kubernetes. Currently KubeDB includes support for following datastores:
- Postgres
- Elasticsearch
- Etcd
- MySQL / MariaDB / Percona Server for MySQL
- MongoDB
- Redis
- Memcached
Please pick a version of KubeDB that matches your Kubernetes installation.
KubeDB Version | Docs | Kubernetes Version |
---|---|---|
0.9.0 (uses CRD) | User Guide | 1.9.x + (for qa) |
0.8.0 (uses CRD) | User Guide | 1.9.x + |
0.6.0 (uses TPR) | User Guide | 1.5.x - 1.7.x |
To install KubeDB, please follow the guide here.
Want to learn how to use KubeDB? Please start here.
You can use KubeDB api clients to programmatically access its CRD objects. Here are the supported clients:
- Go: https://github.com/kubedb/apimachinery
- Java: https://github.com/kubedb-client/java
Want to help improve KubeDB? Please start here.
KubeDB binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false
.
We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the Kubernetes Slack team channel #kubedb
. To sign up, use our Slack inviter.
To receive product announcements, please join our mailing list or follow us on Twitter. Our mailing list is also used to share design docs shared via Google docs.
If you have found a bug with KubeDB or want to request for new features, please file an issue.