Home

Awesome

Welcome to the KubeBlocks project!

Documentation status OpenSSF Best Practices CICD Push CodeQL Releases Release LICENSE Go Report Card Docker Pulls Codecov maturity Artifact Hub

image

Motivation

If you are a developer using multiple types of databases in your application and are considering deploying both your application and databases on K8s for cost or efficiency reasons, you will need to find suitable operators for each database. Learning the different operators and their APIs will introduce a significant learning curve and time costs, not to mention the effort required to maintain them.

We aim to use a unified set of APIs (CRDs) and code to manage various databases on K8s. For example, we can use the Cluster resource to create a PostgreSQL cluster, a Redis cluster, or a Kafka cluster. This abstraction and unified API allow us to further use a single set of operator code to manage multiple types of databases, as well as handle day-2 operations, theoretically extending to any type of database engine.

What is KubeBlocks

KubeBlocks is an open-source control plane software that runs and manages multiple popular database engines on K8s through a unified set of code and APIs. The core of KubeBlocks is a K8s operator, which defines a set of CRDs to abstract the common attributes of various database engines and uses these abstractions to manage the engine's lifecycle and day-2 operations.

KubeBlocks could manage various type of stateful engines, including RDBMSs (MySQL, PostgreSQL), Caches(Redis), NoSQLs (MongoDB), MQs(Kafka, Pulsar), vector databases(Milvus, Qdrant, Weaviate), and data warehouses(ClickHouse, ElasticSearch, OpenSearch, Doris, StarRocks). Adding support for a new engine to KubeBlocks can be achieved by writing a KubeBlocks Addon. The community is actively integrating more types of engines into KubeBlocks, and it currently supports 35 types of engines.

The name KubeBlocks is inspired by Kubernetes and LEGO blocks, signifying that through the KubeBlocks API, adding, composing and managing database engines on K8s can be easy, standard and productive, like playing with LEGO blocks.

Why you need KubeBlocks

KubeBlocks integrates the most popular database engines and provides rich management functions, along with declarative APIs, on various environments. Furthermore, KubeBlocks offers the following benefits:

Goals

Key features

Get started with KubeBlocks

Quick Start shows you the quickest way to get started with KubeBlocks.

Resources

API Reference

How to write a KubeBlocks Addon?

KubeBlocks: Cloud-Native Data Infrastructure for Kubernetes (A Video made by Viktor Farcic)

Dashboard Demo

KubeBlocks at KubeCon

KubeCon 2024 in HongKong from 21-23 August 2024: How to Manage Database Clusters Without a Dedicated Operator, By Shanshan Ying, ApeCloud & Shun Ding, China Mobile Cloud

KubeCon 2024 in HongKong from 21-23 August 2024: KuaiShou's 100% Resource Utilization Boost: 100K Redis Migration from Bare Metal to Kubernetes, By XueQiang Wu, ApeCloud & YuXing Liu, Kuaishou

Community

Contributing to KubeBlocks

Your contributions are welcomed and appreciated.

Report Vulnerability

We consider security is a top priority issue. If you come across a related issue, please create a Report a security vulnerability issue.

License

KubeBlocks is under the GNU Affero General Public License v3.0. See the LICENSE file for details.