本記事では、Kubernetes 環境に OceanBase クラスタをデプロイする方法を紹介します。本番環境へのデプロイにおける参考資料としてご利用ください。カスタムデプロイや設定方法の詳細については、OceanBase K8s 運用ツール ドキュメント(ob-operator) を参照してください。
前提条件
デプロイを開始する前に、環境が以下の要件を満たしていることを確認してください。
ハードウェアリソース
本番環境の安定性とパフォーマンスを確保するために、Kubernetes の空きリソースが以下の推奨構成を満たすことを推奨します。
CPU:24 vCPU 以上の利用可能リソース。
メモリ:72 GB 以上の利用可能メモリ。
ストレージ:SSD ストレージを使用し、400 GB 以上の空き容量があること。
ソフトウェアの依存関係
Kubernetes クラスタ:バージョン v1.18 以上が必要です。
helm:ob-operator および OceanBase Dashboard のデプロイに使用します。helm インストールガイド を参照してインストールを完了してください。
cert-manager:ob-operator は証明書管理に cert-manager を使用します。cert-manager インストールガイド を参照してインストールを完了してください。
ストレージ:クラスタ内で利用可能な Storage Class が必要です。一般的なストレージシステムについていくつかテストを行いました。結果は下表の通りです。ストレージの互換性のテスト結果を参考に、要件を満たしているか判断してください。本記事では例として local-path-provisioner を使用します。
ストレージソリューション 検証バージョン 互換性 説明 local-path-provisioner 0.0.23 ✅ 開発およびテスト環境での使用を推奨 Rook CephFS v1.6.7 ❌ CephFS は fallocate システムコールをサポートしていません Rook RBD (Block) v1.6.7 ✅ OpenEBS (cStor) v3.6.0 ✅ GlusterFS v1.2.0 ✅ マシンのカーネルバージョンが 5.14 以上の場合は互換性あり Longhorn v1.6.0 ✅ JuiceFS v1.1.2 ✅ NFS v5.5.0 ❌ NFS プロトコル >= 4.2 の場合クラスタは起動できますが、テナントリソースの回収ができません MySQL クライアントまたは OBClient:OceanBase クラスタへの接続に使用します。
操作手順
説明
本記事では、ob-operator V2.3.3、OceanBase Dashboard V0.5.0 を例として操作手順を紹介します。他のバージョンの場合、手順が若干異なる可能性があります。
ステップ 1:ob-operator のデプロイ
ob-operator は、Kubernetes における OceanBase の中核となる管理コンポーネントです。Helm を使用したデプロイを推奨します。
ob-operator リポジトリの追加
helm repo add ob-operator https://oceanbase.github.io/ob-operator/ helm repo update ob-operatorob-operator のインストール
helm install ob-operator ob-operator/ob-operator --namespace=oceanbase-system --create-namespace--namespaceはインストールする名前空間(Namespace)の設定に使用します。必要に応じてカスタマイズ可能ですが、oceanbase-systemの使用を推奨します。インストールの成功確認
kubectl get pod -n oceanbase-system期待される出力結果は以下の通りです。Pod の
STATUSがRunningになっていることを確認してください。NAME READY STATUS RESTARTS AGE oceanbase-controller-manager-644b489fcc-6hlwf 2/2 Running 0 1m
ステップ 2:OceanBase Dashboard のデプロイ
OceanBase Dashboard は、可視化されたクラスタ管理および監視機能を提供します。
OceanBase Dashboard のインストール
helm install oceanbase-dashboard ob-operator/oceanbase-dashboard --namespace=oceanbase-system --set service.type=NodePort説明
service.typeのデフォルト値はNodePortです。環境が LoadBalancer をサポートしている場合は、service.typeをLoadBalancerに設定して外部 IP を取得することも可能です。アクセスアドレスの取得
# サービスポートの確認 kubectl get svc -n oceanbase-system oceanbase-dashboard-oceanbase-dashboardOceanBase Dashboard へのログイン
前の手順で確認したサービスポートを使用し、ブラウザから OceanBase Dashboard にアクセスします。デフォルトのアカウントとパスワードはどちらも
adminです。初回ログイン時にパスワードを変更する必要があります。service.typeを NodePort タイプに指定した場合、http://<任意のノードIP>:<NodePortポート>でアクセスできます。service.typeを LoadBalancer タイプに指定した場合、http://<External-IP>:<ポート>でアクセスできます。
ステップ 3:OceanBase クラスタのデプロイ
OceanBase Dashboard にログイン後、左側のナビゲーションバーの クラスタ をクリックし、クラスタページの クラスタリスト 右上にある クラスタ作成 をクリックして、クラスタ作成 ページに入ります。
基本情報の設定
このページでは、クラスタの 名前空間、クラスタ名、クラスタモード、rootパスワード などの情報を設定できます。
パラメータ 説明 名前空間 (Namespace) ドロップダウンリストから OceanBase クラスタを作成する名前空間を選択します。ドロップダウンリスト内の + 新規名前空間 をクリックして新しい名前空間を作成することも可能です。新規作成する場合、名前空間名は英小文字で始まり、英小文字または数字で終わる必要があります。英小文字、数字、ハイフン -が使用可能で、長さは 63 文字以内である必要があります。リソース名 Kubernetes 内の OceanBase クラスタのカスタムリソース名です。同じ名前空間内の既存の OceanBase クラスタリソース名と重複させることはできません。カスタムリソース名は英小文字で始まり、英小文字または数字で終わる必要があります。英小文字、数字、ハイフン -が使用可能で、長さは 63 文字以内である必要があります。クラスタ名 OceanBase クラスタ名を設定します。クラスタ名は英文字で始まり、英文字または数字で終わる必要があります。英文字、数字、アンダースコア _が使用可能で、長さは 2 〜 32 文字の間である必要があります。クラスタモード ドロップダウンリストからクラスタのデプロイモードを選択します。モードによって OceanBase データベースのバージョン要件が異なり、障害時の復旧ポリシーにも影響するため、実際の環境とクラスタバージョンに応じて選択してください。 - 通常モード (Normal Mode):特別な処理を行わず、Pod の IP アドレスを直接使用してブートストラップを行います。現在、Calico および kube-ovn プラグインを認識でき、障害による Pod 再構築時には障害発生前の IP アドレスを使用します。他の Pod に占有されないよう、OceanBase クラスタ専用のネットワークセグメントを割り当てることを推奨します。K8s クラスタが他のネットワークプラグインを使用している場合、スケールアウト後にスケールインする障害復旧ポリシーが実行されますが、これには大量のデータコピーが必要となり時間がかかる場合があり、過半数のノード障害シナリオからは復旧できません。
- 単体モード (Single Mode):
127.0.0.1を使用してブートストラップを行います。これは単一ノードクラスタのデプロイにのみ使用されます。OBServer のサービスアドレスとして127.0.0.1を指定するため、Pod 再構築時に元のデータを再利用して迅速に復旧できます。 - Service モード:各 OBServer サービスに対して Service を作成し、Service の Cluster IP アドレスを使用してブートストラップを行います。Pod 再構築時にも元のデータを再利用して迅速に復旧できるため、通常はこのモードの使用を推奨します。
最適化シナリオ よく使われる OceanBase クラスタの利用シナリオに応じたパラメータテンプレートを提供しています。利用シナリオを選択すると、自動的にパラメータが設定されます。最適化シナリオの詳細は 設定のベストプラクティス を参照してください。 root パスワード sys テナントの root ユーザーパスワードです。ランダム生成 をクリックして Dashboard にランダムな文字列を生成させるか、手動で設定できます。手動で設定する場合、パスワードは以下の要件を満たす必要があります: - 長さは 8 〜 32 文字
- 英文字、数字、特殊文字(
~!@#%^&*_-+=|()[]:;,.?/)のみ使用可能 - 英大文字、英小文字、数字、特殊文字のうち、少なくとも2種類を含む必要がある
削除保護 チェックを入れることで削除保護を有効にするか制御できます。有効にすると、この OceanBase クラスタを削除する操作は Webhook によってブロックされ、解除するまで削除できなくなります。 詳細設定 詳細設定 の展開アイコンをクリックすると proxyro パスワード を設定できます。詳細設定 を開かない場合、Dashboard は自動的にランダムな文字列を proxyro パスワードとして生成します。
proxyro パスワードは sys テナントの proxyro ユーザーのパスワードです。OceanBase クラスタ内の proxyro パスワードと ODP 内の proxyro パスワードが一致している場合のみ、ODP は対応する OceanBase クラスタにアクセスできます。ランダム生成 をクリックして Dashboard に生成させるか、手動で設定できます。手動設定の要件は root パスワードと同様です:- 長さは 8 〜 32 文字
- 英文字、数字、特殊文字(
~!@#%^&*_-+=|()[]:;,.?/)のみ使用可能 - 英大文字、英小文字、数字、特殊文字のうち、少なくとも2種類を含む必要がある
クラスタのトポロジー設定
クラスタトポロジーでは主にクラスタの全 Zone 情報を設定します。通常は少なくとも 3 つの Zone を設定する必要があります。+ Zone 追加 をクリックするか、対応する Zone の後ろにある削除アイコンをクリックして Zone を追加または削除できます。
パラメータ 説明 Zone 名称 OceanBase データベース内の Zone 名を設定します(カスタマイズ可能)。Zone 名は英文字で始まり、英文字または数字で終わる必要があります。英文字、数字、アンダースコア _が使用可能で、長さは 2 〜 32 文字の間である必要があります。Server 数 現在の Zone に含める OBServer サービスの数を設定します。 K8s クラスタ このパラメータはマルチ K8s クラスタデプロイのシナリオでのみ使用され、この Zone をどの K8s クラスタにデプロイするかを設定します。単一 K8s クラスタデプロイの場合は空欄のままで構いません。マルチ K8s クラスタデプロイについては マルチ K8s クラスタデプロイ を参照してください。 Topology Topology の前の展開ボタンをクリックして、アフィニティ(Affinity)設定を行えます。Node Selector、Pod Affinity、Toleration の設定をサポートしています。設定は現在の Zone 下の OBServer サービスの Pod に対してのみ有効です。 OBServer リソースの設定

パラメータ 説明 イメージ OceanBase クラスタのデプロイに使用するイメージを設定します。イメージリスト をクリックしてすべてのイメージを確認できます。イメージのタグ(tag)は OceanBase データベースのバージョン番号に対応しており、LTS バージョンのイメージの使用を推奨します。イメージは registry/image:tagの形式で完全に入力してください(例:oceanbase/oceanbase-cloud-native:4.2.0.0-101000032023091319)。リソース CPU、メモリ、ストレージリソースを含みます。ストレージについては、データ、実行ログ、redo log を保存するために 3 つの独立した PVC が作成されます。データ、実行ログ、redo log の設定は、少なくとも メモリ 設定の 3 倍以上である必要があります。PVC の独立ライフサイクルの有効化をサポートしており、PVC 独立ライフサイクル にチェックを入れると、OBServer リソースを削除しても PVC は連鎖的に削除されず、手動で削除する必要があります。
OBserver モジュール右上の 最小仕様構成 ボタンをクリックすると、Dashboard が自動的に最小仕様に合わせてリソースを入力します。オプション設定
監視、パラメータ設定、NFSバックアップボリュームのマウント の後ろにあるボタンをクリックして、対応する設定を行えます。
モジュール パラメータ 説明 監視 イメージ 監視を有効にすると、obagent をサイドカーコンテナとして設定し、監視機能を提供できます。ここでは obagent のデプロイに使用するイメージを設定します。イメージリスト をクリックしてすべてのイメージを確認できます。イメージのタグは obagent のバージョン番号に対応します。イメージは registry/image:tagの形式で完全に入力してください(例:oceanbase/obagent:4.2.0-100000062023080210)。リソース obagent のデプロイに必要な CPU 数とメモリを設定します。正の整数を入力してください。 パラメータ設定 パラメータ名 obagent のパラメータ名を入力します。 パラメータ値 パラメータに対応する適切な値を設定します。設定された値はすべての OBServer サービスに対して有効になります。 操作 削除 をクリックして対応するパラメータを削除できます。 説明
+ パラメータ追加 をクリックしてパラメータ設定用の行を追加できます。
NFSバックアップボリュームのマウント アドレス NFS を使用してバックアップと復元を行う場合、ここで NFS サービスのアドレスを設定します。 パス バックアップパスを入力します。NFS のパスは OBServer サービスのコンテナにマウントされます。 送信して作成完了を待機
上記の設定完了後、送信 (Submit) をクリックし、クラスタリスト の ステータス が 正常実行中 (Running) に変わるのを待ちます。これが表示されれば、クラスタの作成は成功です。
説明
通常、作成完了までには 2 〜 3 分程度かかります。
ステップ 4:テナントの作成
クラスタのデプロイ完了後、アプリケーションで使用するための業務テナントを作成することを推奨します。左側のナビゲーションバーの テナント をクリックし、テナントページの テナントリスト 右上にある テナント作成 をクリックして、テナント作成 ページに入ります。
テナント基本情報の入力
パラメータ 説明 OBクラスタ ドロップダウンリストから、テナントを作成する OceanBase クラスタを選択します。 リソース名 Kubernetes 内のテナントカスタムリソースの名称です。テナントはクラスタと同じ namespace 下に作成されます。 テナント名 作成するテナント名です。 パスワード テナントの root アカウントのパスワードです。ランダム生成 をクリックして Dashboard に生成させるか、手動で設定できます。手動設定の要件は以下の通りです: - 長さは 8 〜 32 文字
- 英文字、数字、特殊文字(
~!@#%^&*_-+=|()[]:;,.?/)のみ使用可能 - 英大文字、英小文字、数字、特殊文字のうち、少なくとも2種類を含む必要がある
最適化シナリオ よく使われる OceanBase データベースの利用シナリオに応じたパラメータテンプレートを提供しています。利用シナリオを選択すると、自動的にパラメータが設定されます。 接続ホワイトリスト テナントに接続可能なホワイトリストアドレスです。デフォルトの %は任意のアドレスを意味します。削除保護 チェックを入れることで削除保護を有効にするか制御できます。有効にすると、このテナントを削除する操作は Webhook によってブロックされ、解除するまで削除できなくなります。 テナントリソースプール設定の入力
パラメータ 説明 レプリカ分布 各 Zone の前のチェックボックスをクリックして、テナントをどの Zone に分散させるかを設定します。また、対応する Zone における優先度、レプリカタイプ、ユニット数を設定します。 リソースユニット規格 テナントの各ユニットのリソースを設定します。レプリカ分布 モジュールに表示される 利用可能リソース の状況に応じて適切に設定することを推奨します。 送信して作成完了を待機
設定完了後、送信 をクリックし、テナントリスト の ステータス が 正常実行中 に変わるのを待ちます。これが表示されれば、テナントの作成は成功です。
ステップ 5:ODP のデプロイ
ODP(別名 OBProxy)は、アプリケーションが分散型 OceanBase クラスタに接続するために必要なコンポーネントであり、リクエストを適切な OBServer ノードにルーティングします。左側のナビゲーションバーの OBProxy をクリックし、OBProxy ページの クラスタリスト 右上にある OBProxy クラスタ作成 をクリックして、OBProxy クラスタ作成 ページに入ります。
基本情報の設定
パラメータ 説明 リソース名 Kubernetes 内で作成される Deployment の名称です。設定する名称は英小文字で始まり、英小文字または数字で終わる必要があります。英小文字、数字、ハイフン -が使用可能で、長さは 63 文字以内である必要があります。OBProxy クラスタ名 ODP のアプリケーション名です。 OB クラスタ接続 ドロップダウンリストから接続する OceanBase クラスタを選択できます。デフォルトでは、選択した OceanBase クラスタに rs_list 方式で接続します。 名前空間 Kubernetes 内で ODP をデプロイする名前空間です。OceanBase クラスタを選択すると、デフォルトでその OceanBase クラスタの namespace が自動的に入力されます。 OBProxy root パスワード ODP 管理テナント( proxysys)のrootユーザーパスワードです。ランダム生成 をクリックして Dashboard に生成させるか、手動で設定できます。手動設定の要件は以下の通りです:- 長さは 8 〜 32 文字
- 英文字、数字、特殊文字(
~!@#%^&*_-+=|()[]:;,.?/)のみ使用可能 - 英大文字、英小文字、数字、特殊文字のうち、少なくとも2種類を含む必要がある
その他の設定
パラメータ 説明 イメージ ODP のデプロイに使用するイメージを設定します。イメージリスト をクリックしてすべてのイメージを確認できます。最新バージョンのデプロイを推奨します。イメージのタグは ODP のバージョン番号に対応しており、 registry/image:tagの形式で完全に入力してください(例:oceanbase/obproxy-ce:4.3.3.0-5)。サービスタイプ ドロップダウンリストから ODP 用に作成する Service のタイプを選択します。Kubernetes クラスタ内でのみアクセスする場合は ClusterIP を選択できます。クラスタ外からアクセスする必要がある場合は、状況に応じて NodePort または LoadBalancer を選択できます。 レプリカ数 ODP のレプリカ数を設定します。 CPU コア数 ODP に割り当てる CPU コア数を設定します。 メモリサイズ ODP に割り当てるメモリリソースを設定します。 パラメータ設定 + 追加 をクリックして、KV 形式で ODP のパラメータを設定できます。 送信して作成完了を待機
上記の設定完了後、送信 をクリックし、クラスタリスト の ステータス が Running に変わるのを待ちます。これが表示されれば、ODP の作成は成功です。
ステップ 6:接続の検証
デプロイ完了後、OBProxy の詳細ページで サービスアドレス を確認し、そのアドレスを使用してクラスタに接続できます。
以下のコマンドを実行して、ODP 経由で obcluster クラスタの obtenant2 テナントに接続します。テナントへの接続方法の詳細については 接続方法の概要 を参照してください。
mysql -h10.10.10.1 -P2883 -uroot@obtenant2#obcluster -p****** oceanbase
出力結果は以下のようになります:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.25 OceanBase_CE 4.3.5.3 (r103000092025080818-e8da5f0afb288ed0add0613740c6ccf2a3c6830b) (Built Aug 8 2025 18:43:02)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [oceanbase]>
関連ドキュメント
本記事では最も基本的なデプロイ方法のみを取り上げており、初期環境の構築に適しています。この他にも、包括的な運用・監視機能や、より高い可用性が求められるマルチ K8s クラスタへのデプロイモードなどもサポートしています。これらの機能については、Dashboard ページでさらに探索するか、以下のリンクを参照してください。