kubeblocks

module
v0.6.0-alpha.0 Latest Latest
Warning

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

Go to latest
Published: May 17, 2023 License: AGPL-3.0

README

KubeBlocks

Build status Go Report Card Docker Pulls codecov LICENSE Releases TODOs Artifact HUB

image

What is KubeBlocks

KubeBlocks is an open-source tool designed to help developers and platform engineers build and manage stateful workloads, such as databases and analytics, on Kubernetes. It is cloud-neutral and supports multiple public cloud providers, providing a unified and declarative approach to increase productivity in DevOps practices.

The name KubeBlocks is derived from Kubernetes and building blocks, which indicates that standardizing databases and analytics on Kubernetes can be both productive and enjoyable, like playing with construction toys. KubeBlocks combines the large-scale production experiences of top public cloud providers with enhanced usability and stability.

Why you need KubeBlocks

Kubernetes has become the de facto standard for container orchestration. It manages an ever-increasing number of stateless workloads with the scalability and availability provided by ReplicaSet and the rollout and rollback capabilities provided by Deployment. However, managing stateful workloads poses great challenges for Kubernetes. Although statefulSet provides stable persistent storage and unique network identifiers, these abilities are far from enough for complex stateful workloads.

To address these challenges, and solve the problem of complexity, KubeBlocks introduces ReplicationSet and ConsensusSet, with the following capabilities:

  • Role-based update order reduces downtime caused by upgrading versions, scaling, and rebooting.
  • Latency-based election weight reduces the possibility of related workloads or components being located in different available zones.
  • Maintains the status of data replication and automatically repairs replication errors or delays.
Goals
  • Enhance stateful applications control plane manageability on Kubernetes clusters, being open sourced and cloud neutral
  • Manage data platforms without a high cognitive load of cloud computing, Kubernetes, and database knowledge
  • Be community-driven, embracing extensibility, and providing domain functions without vendor lock-in
  • Reduce costs by only paying for the infrastructure and increasing the utilization of resources with flexible scheduling
  • Support the most popular databases, analytical software, and their bundled tools
  • Provide the most advanced user experience based on the concepts of IaC and GitOps
Key features
  • Kubernetes-native and multi-cloud supported.
  • Supports multiple database engines, including MySQL, PostgreSQL, Redis, MongoDB, and more.
  • Provides production-level performance, resilience, scalability, and observability.
  • Simplifies day-2 operations, such as upgrading, scaling, monitoring, backup, and restore.
  • Declarative configuration is made simple, and imperative commands are made powerful.
  • The learning curve is flat, and you are welcome to submit new issues on GitHub.

For detailed feature information, see Feature list

Documents

Quick start with KubeBlocks

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

Introduction

Introduction is a detailed information on KubeBlocks.

Installation

Installation document for install KubeBlocks, playground, kbctl, and create database clusters.

User documents

User documents for instruction to use KubeBlocks.

Design proposal

Design proposal for design motivation and methodology.

Community

Contributing to KubeBlocks

Your contributions and suggestions are welcomed and appreciated.

License

KubeBlocks is under the Apache 2.0 license. See the LICENSE file for details.

Directories

Path Synopsis
apis
apps/v1alpha1
Package v1alpha1 contains API Schema definitions for the apps v1alpha1 API group +kubebuilder:object:generate=true +groupName=apps.kubeblocks.io
Package v1alpha1 contains API Schema definitions for the apps v1alpha1 API group +kubebuilder:object:generate=true +groupName=apps.kubeblocks.io
dataprotection/v1alpha1
Package v1alpha1 contains API Schema definitions for the dataprotection v1alpha1 API group +kubebuilder:object:generate=true +groupName=dataprotection.kubeblocks.io
Package v1alpha1 contains API Schema definitions for the dataprotection v1alpha1 API group +kubebuilder:object:generate=true +groupName=dataprotection.kubeblocks.io
extensions/v1alpha1
Package v1alpha1 contains API Schema definitions for the extensions v1alpha1 API group +kubebuilder:object:generate=true +groupName=extensions.kubeblocks.io
Package v1alpha1 contains API Schema definitions for the extensions v1alpha1 API group +kubebuilder:object:generate=true +groupName=extensions.kubeblocks.io
cmd
cli
tpl
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
internal
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.
test
e2e

Jump to

Keyboard shortcuts

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