KubeBlocks導入ガイド:Kubernetes上にDBaaSを構築する手順

はじめに

こんにちはSIOS Tech Labアドベントカレンダー11日目になります。私は現在KubeBlocksの調査検証をしており、それについての解説ブログをシリーズとして投稿しています。第1回はKubeBlocksについて解説を行い、第2回ではKubeBlocksでサポートされているDBソリューションについて解説を行いました。

今回からは実際にKubernetes環境にKubeBlocksを導入し、データベースの運用管理を自動化するサービスであるDBaaSを構築していきます。DBaaSについてはこちらの記事で詳しく解説をしているので興味のある方はぜひご覧ください。

また、今後の記事では、構築したDBaaS上でデータベースの作成やスケーリングなどの具体的な操作の解説も行っていく予定です。 今回は、KubeBlocksの導入手順について解説しますので、ぜひ最後までご覧ください。

導入環境構成図

以下の図は今回KubeBlocksを導入する環境の構成図です。今回の記事では赤い丸でマーキングされた範囲を対象としています。
今回の対象範囲は「KubeBlocksオペレーター」です。KubeBlocksオペレーターはKubernetesクラスタ内で、データベースのデプロイ・スケーリング・自己修復などの運用作業を自動的に実行するカスタムオペレーターです。

導入環境構成図

KubeBlocksの導入方法

KubernetesクラスタにKubeBlocksを導入する方法について、公式サイトでは以下の2つの方法が紹介されています

  • Helm :本番環境に推奨されるインストール方法
  • kbcli  :検証や学習環境向きのインストール方法

今回は、この2つの導入方法をそれぞれ実行し、その手順を紹介します。

前提条件

  • Kubernetesクラスタがセットアップ済みであること
  • kubectl コマンドが使用可能であること
  • Helmがインストールされていること (インストールガイド)
  • スナップショットコントローラがインストールされていること(インストールガイド

kbcliインストール

KubeBlocksのバージョンと一致させたバージョンのkbcliをインストールします。

今回はKubeBlocksv1.0.1をインストールするためkbcliも同様にv1.0.1をインストールします。

curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s v1.0.1

HelmによるKubeBlocks導入

HelmによるKubeBlocks導入を実施します。

CRDを追加する

KubeBlocksが使用するカスタムリソース定義 (CRD) をKubernetesクラスタに登録します。これを行うことでKubeBlocksで提供される機能を利用することが出来るようになります。

kubectl create -f 
https://github.com/apecloud/kubeblocks/releases/download/v1.0.1/kubeblocks_crds.yaml

# 出力例
customresourcedefinition.apiextensions.k8s.io/clusterdefinitions.apps.kubeblocks.io created
customresourcedefinition.apiextensions.k8s.io/clusters.apps.kubeblocks.io created
customresourcedefinition.apiextensions.k8s.io/componentdefinitions.apps.kubeblocks.io created
# ~以下省略~

Helmリポジトリを追加する

KubeBlocksのHelmチャートが格納されている外部リポジトリを、ローカルのHelm環境に登録しチャートを取得可能にするコマンドです。

helm repo add kubeblocks https://apecloud.github.io/helm-charts
helm repo update

# 出力例
"kubeblocks" already exists with the same configuration, skipping
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "piraeus-charts" chart repository
...Successfully got an update from the "kubeblocks" chart repository
Update Complete. ⎈Happy Helming!⎈

KubeBlocksインストール

KubeBlocksオペレーターをKubernetesクラスタにデプロイします。

helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version=v1.0.1

# 出力例
NAME: kubeblocks
LAST DEPLOYED: Mon Dec 8 13:46:15 2025
NAMESPACE: kb-system
STATUS: deployed
REVISION: 1
TEST SUITE: None

インストール確認

kubeblocks-xxxxxxxxxx-xxxxx

kubeblocks-dataprotection-xxxxxxxxxx-xxxxx

の二つのPodがRunningになっていることを確認します。

kubectl get pods -n kb-system


# 出力例
NAME                                       READY  STATUS   RESTARTS  AGE
kubeblocks-777d976794-pfwlg                1/1    Running  0         5m16s
kubeblocks-dataprotection-84db8c4c9-dmqx2  1/1    Running  0         5m16s
snapshot-controller-58455ddb79-6nw4c       1/1    Running  0         9m1s

kbcliによるKubeBlocks導入

kbcliによるKubeBlocks導入を実施します。

KubeBlocksインストール

以下のコマンドは、KubeBlocksの導入プロセス全体を自動化する単一のコマンドです。helmでは別コマンドで実行したCRDの適用、Helmリポジトリの追加、オペレーターのデプロイなどをkbcliではまとめて実行します。

kbcli kubeblocks install --version=1.0.1 --create-namespace

# 出力例
KubeBlocks will be installed to namespace "kb-system"
Kubernetes version 1.33.1
kbcli version 1.0.1
Collecting data from cluster                       OK
Kubernetes cluster preflight                       OK

Create CRDs                                        OK
Add and update repo kubeblocks                     OK
Install KubeBlocks 1.0.1                           OK
Wait for addons to be enabled
  apecloud-mysql                                   OK
  etcd                                             OK
  kafka                                            OK
  mongodb                                          OK
  mysql                                            OK
  postgresql                                       OK
  redis                                            OK

KubeBlocks 1.0.1 installed to namespace kb-system SUCCESSFULLY!
-> Basic commands for cluster:
    kbcli cluster create -h     # help information about creating a database
cluster
    kbcli cluster list          # list all database clusters
    kbcli cluster describe <cluster name> # get cluster information

-> Uninstall KubeBlocks:
    kbcli kubeblocks uninstall

インストール確認

kubeblocks-xxxxxxxxxx-xxxxx

kubeblocks-dataprotection-xxxxxxxxxx-xxxxx

の二つのPodがRunningになっていることを確認します。

kubectl get pods -n kb-system


# 出力例
NAME                                       READY  STATUS   RESTARTS  AGE
kubeblocks-777d976794-vbl24                1/1    Running  0         4m40s
kubeblocks-dataprotection-84db8c4c9-ppkcs  1/1    Running  0         4m40s
snapshot-controller-58455ddb79-sks7q       1/1    Running  0         9m59s

おわりに

今回はhelmとkbcliを利用してKubernetes上にKubeBlocksを導入する方法を紹介しました。

次回からは実際にKubeBlocksにデータベースを導入していきます。

参考文献

https://kubeblocks.io/docs/preview/user_docs/references/install-kbcli

https://kubeblocks.io/docs/release-1_0/user_docs/overview/install-kubeblocks

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です