kubeblocks

module
v0.8.0-alpha.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 16, 2023 License: AGPL-3.0

README

KubeBlocks

Documentation status OpenSSF Best Practices Releases LICENSE Go Report Card Docker Pulls codecov Build status maturity Artifact Hub

image

What is KubeBlocks

KubeBlocks is an open source system software that runs and manages data infrastructure on Kubernetes. It could manage various data/database engines, including RDBMSs (MySQL, PostgreSQL), Caches(Redis), NoSQLs (MongoDB), MQs(Kafka, Pulsar), and vector databases(Milvus, Qdrant, Weaviate), and the community is actively integrating more types of data/database engines into KubeBlocks. KubeBlocks helps developers, SREs, and platform engineers deploy and maintain dedicated DBPaaS, and supports a variety of public clouds and on-premise environments.

KubeBlocks is designed for production purposes, providing secure, cost-effective, high-available and extensible DBPaaS solution for enterprise. The name KubeBlocks is inspired by Kubernetes and LEGO blocks, signifying that integrating data infrastructure on K8s can be standard and productive, like playing with LEGO blocks. The core of KubeBlocks is a K8s operator, which defines a set of CRDs to abstract the common attributes of various data/database engines, thereby supporting the rapid integration of a new data/database system into KubeBlocks while keeping the same operating experience and expected behaviors.

Why you need KubeBlocks

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

  • Cost-effective

    KubeBlocks optimizes the kernel and parameters of MySQL and PostgreSQL databases for containerized and cloud environments, and its performance exceeds that of RDS with the same hardware (see our blogs for test reports).

  • Reliability

    KubeBlocks supports high-availability cluster configurations for multiple database engines, and supports Raft replication cluster for MySQL to achieve enhanced availability with durability guarantees.

  • Observability

    KubeBlocks collects monitoring metrics from richful data sources, integrates with the Prometheus stack, and provides insightful Grafana templates. In addition, troubleshooting tools such as slow logs are also provided.

  • Extensibility

    KubeBlocks provides the addon mechanism for integrating new data/database engines. So it can be extended to run the databases your project needs.

Goals
  • Being open and cloud-neutral
  • Promoting the containerization of database workloads
  • Promoting IaC and GitOps in the field of databases
  • Reducing the cost of using databases
  • Smoothing the learning curve of managing databases
Key features
  • Be compatible with AWS, GCP, Azure, and more
  • Supports various data infrastructure systems, including MySQL, PostgreSQL, Redis, MongoDB, Kafka, Pulsar and more
  • Provides production-level performance, resilience, scalability, and observability
  • Simplifies day-2 operations, such as upgrading, scaling, monitoring, backup, and restore
  • Contains a powerful and intuitive command line tool

Get started with KubeBlocks

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

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.

Directories

Path Synopsis
apis
apps/v1alpha1
+k8s:deepcopy-gen=package,register +k8s:openapi-gen=true +groupName=apps.kubeblocks.io
+k8s:deepcopy-gen=package,register +k8s:openapi-gen=true +groupName=apps.kubeblocks.io
dataprotection/v1alpha1
+k8s:deepcopy-gen=package,register +k8s:openapi-gen=true +groupName=dataprotection.kubeblocks.io
+k8s:deepcopy-gen=package,register +k8s:openapi-gen=true +groupName=dataprotection.kubeblocks.io
extensions/v1alpha1
+k8s:deepcopy-gen=package,register +k8s:openapi-gen=true +groupName=extensions.kubeblocks.io
+k8s:deepcopy-gen=package,register +k8s:openapi-gen=true +groupName=extensions.kubeblocks.io
storage/v1alpha1
+k8s:deepcopy-gen=package,register +k8s:openapi-gen=true +groupName=storage.kubeblocks.io
+k8s:deepcopy-gen=package,register +k8s:openapi-gen=true +groupName=storage.kubeblocks.io
workloads/v1alpha1
Package v1alpha1 contains API Schema definitions for the workloads v1alpha1 API group +kubebuilder:object:generate=true +groupName=workloads.kubeblocks.io
Package v1alpha1 contains API Schema definitions for the workloads v1alpha1 API group +kubebuilder:object:generate=true +groupName=workloads.kubeblocks.io
cmd
controllers
externalapis
preflight/v1beta2
Package v1beta2 contains API Schema definitions for the preflight v1beta2 API group +kubebuilder:object:generate=true +groupName=troubleshoot.sh
Package v1beta2 contains API Schema definitions for the preflight v1beta2 API group +kubebuilder:object:generate=true +groupName=troubleshoot.sh
hack
docgen/api/template
Package template Placeholder file to make Go vendor this directory properly.
Package template Placeholder file to make Go vendor this directory properly.
pkg
client/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
client/clientset/versioned/typed/apps/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/versioned/typed/apps/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset/versioned/typed/dataprotection/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/versioned/typed/dataprotection/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset/versioned/typed/extensions/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/versioned/typed/extensions/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset/versioned/typed/storage/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/versioned/typed/storage/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
client/clientset/versioned/typed/workloads/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/versioned/typed/workloads/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
common
Package common provides types and utils shared by all KubeBlocks components: KubeBlocks Core, KBCLI, Lorry etc.
Package common provides types and utils shared by all KubeBlocks components: KubeBlocks Core, KBCLI, Lorry etc.
controller/graph
Package graph tries to model the controller reconciliation loop in a more structured way.
Package graph tries to model the controller reconciliation loop in a more structured way.
controller/handler
Package handler is a more flexible EventHandler builder in a chain fashion.
Package handler is a more flexible EventHandler builder in a chain fashion.
controller/rsm
Package rsm is a general component aims to hold role-based stateful workloads(such as databases).
Package rsm is a general component aims to hold role-based stateful workloads(such as databases).
lorry/client
Package client is a generated GoMock package.
Package client is a generated GoMock package.
lorry/dcs
Package dcs is a generated GoMock package.
Package dcs is a generated GoMock package.
lorry/engines
Package engines is a generated GoMock package.
Package engines is a generated GoMock package.
viperx
Package viperx is a thread-safe extension for the Viper configuration library.
Package viperx is a thread-safe extension for the Viper configuration library.
test
e2e

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL