Skip to main content
このガイドでは、Operatorを使用して ClickHouse および Keeper のクラスターを設定する方法を説明します。

ClickHouseCluster の設定

基本設定

レプリカと分片

  • レプリカ: 各分片あたりの ClickHouse インスタンス数 (高可用性のため)
  • 分片: 水平分割数 (スケーリングのため)
replicas: 3shards: 2 のクラスターでは、ClickHouse ポッドが合計 6 つ作成されます。

Keeper インテグレーション

すべてのClickHouseクラスターで、調整用のKeeperClusterを参照する必要があります。
keeperClusterRef.namespace が設定されている場合、オペレーターは両方のネームスペースを監視する必要があります。WATCH_NAMESPACE が設定されている場合は、その一覧に ClickHouse と Keeper のネームスペースを含めてください。

KeeperCluster の設定

ストレージ構成

永続ストレージを設定します:
Operator が既存の PVC を変更できるのは、使用しているストレージクラスがボリューム拡張に対応している場合のみです。

ポッドの設定

トポロジースプレッドとアフィニティの自動設定

ポッドをアベイラビリティゾーン間に分散します:
Kubernetesクラスターに、分散制約を満たせるだけのノードが異なるゾーンに十分にあることを確認してください。

手動設定

ポッドのアフィニティ/アンチアフィニティ ルールやトポロジースプレッド制約を任意に指定できます。

サポートされているすべてのポッドテンプレートオプションについては、API リファレンスを参照してください。

ポッドの停止予算

オペレーターは、各クラスターに対して PodDisruptionBudget (PDB) を作成します。これにより、自発的な中断 (ノードのドレイン、ローリングアップグレード、オートスケーラーによるエビクション) が発生しても、クォーラムの喪失や可用性の低下につながるほど多くのポッドが停止しないようにできます。 複数の分片を持つ ClickHouse クラスターでは、分片ごとに 1 つの PDB が作成されます。これにより、ある分片での中断が別の分片の許容範囲として扱われることはありません。

デフォルト

オペレーターはクラスターのサイズに応じて安全なデフォルト値を選択するため、新規に apply した時点で、意図しないクォーラムの喪失から保護されます。 replicas: 3 の 3 分片 ClickHouseCluster では、オペレーターは分片ごとに 1 つずつ、合計 3 つの PDB を作成し、それぞれに minAvailable: 1 を設定します。

デフォルト設定の上書き

spec.podDisruptionBudget を使用して、minAvailable または maxUnavailable のいずれか一方のみを上書きできます (必ずどちらか一方のみ) :
または、パーセンテージで指定する maxUnavailable 形式:
minAvailablemaxUnavailable の両方を設定すると、検証 webhook によって拒否されます。どちらか一方を選んでください。Kubernetes 自体も、この 2 つを同時に許可していません。
生成される PDB に unhealthyPodEvictionPolicy フィールドをそのまま渡すこともできます。これは、まだ NotReady 状態のポッドのエビクションを許可する必要がある場合に便利です。

ポリシー

spec.podDisruptionBudget.policy では、オペレーターが PDB をどの程度積極的に管理するかを選択できます。 例 — 開発用クラスターで PDB 管理を完全に無効にする:
例 — 手動で作成した PDB をクラスターと同じ場所に置き、オペレーターがそれを変更しないようにします:

クラスター全体での無効化

PDB の管理は、オペレーターの ENABLE_PDB 環境変数を使用して、クラスター全体で無効にすることもできます。ENABLE_PDB=false の場合、オペレーターは すべての ClickHouseCluster と KeeperCluster について、spec.podDisruptionBudget.policy の設定にかかわらず PDB のリコンサイル手順をスキップし、PodDisruptionBudget リソースを一切監視しません。そのため、オペレーターの ServiceAccount には poddisruptionbudgets.policy/v1 に対する RBAC 権限は不要です。これは、それらの権限を意図的に含めていない制限付きの ServiceAccount でオペレーターを実行する場合に便利です。
これは、独自の中断ポリシー (たとえば Gatekeeper / Kyverno 経由) を備えており、オペレーターを完全に関与させたくない環境を対象としています。

コンテナーの設定

カスタムイメージ

特定のClickHouseイメージを使用します。

コンテナーのリソース

ClickHouse コンテナーの CPU とメモリを設定します。

環境変数

任意の環境変数を追加します:

ボリュームマウント

追加のボリュームマウントを設定します:
同じmountPathに対して複数のボリュームマウントを指定できます。 Operator は、指定されたすべてのマウントを含む projected volume を作成します。

サポートされているすべての コンテナー テンプレートオプションについては、API リファレンスを参照してください。

TLS/SSL 設定

セキュアなエンドポイントを設定する

セキュアなエンドポイントを有効にするには、TLS 証明書を含む Kubernetes Secret への参照を指定します

SSL 証明書 Secret の形式

Secret には、以下のキーが含まれている必要があります。
  • tls.crt - PEM エンコードされたサーバー証明書
  • tls.key - PEM エンコードされた秘密鍵
  • ca.crt - PEM エンコードされた CA 証明書チェーン
この形式は、cert-manager によって生成された証明書と互換性があります。

TLS を介した ClickHouse-Keeper 通信

KeeperCluster で TLS が有効になっている場合、ClickHouseCluster は Keeper ノードへのセキュアな接続を自動的に使用します。 ClickHouseCluster は、Keeper ノードの証明書を検証できる必要があります。 ClickHouseCluster で TLS が有効になっている場合、検証には ca.crt バンドルが使用されます。そうでない場合は、デフォルトの CA バンドルが使用されます。 必要に応じて、カスタム CA バンドルへの参照を指定できます。

ClickHouse の設定

デフォルトユーザーのパスワード

デフォルトユーザーのパスワードを設定します。
平文のパスワードの保存に ConfigMap を使用することは推奨されません。
Secret を作成します:

ユーザーパスワードに ConfigMap を使用する

機密性の低いデフォルトパスワードについては、ConfigMap を使用することもできます。

設定でのカスタムユーザー

設定ファイルで追加ユーザーを設定します。 ユーザー用のConfigMapとSecretを作成します。
ClickHouseCluster にカスタム設定を追加します:

データベース同期

新しいレプリカのデータベース自動同期を有効にします。
有効にすると、オペレーターは Replicated テーブルとインテグレーション テーブルを新しいレプリカに同期します。

カスタム設定

埋め込みの追加設定

カスタムの設定ファイルをマウントする代わりに、追加の ClickHouse 設定オプションを直接指定できます。 extraConfig を使用して、カスタムの ClickHouse 設定を追加します。

埋め込み追加ユーザー設定

extraUsersConfig を使用すると、追加の ClickHouse ユーザー設定を指定することもできます。これは、ユーザー、プロファイル、クォータ、権限をクラスター仕様内で直接定義する場合に便利です。
extraUsersConfig は k8s の ConfigMap オブジェクトに保存されます。平文のシークレットはそこに保存しないでください。

サポートされているすべての ClickHouse ユーザー設定オプションについては、ドキュメントを参照してください。

設定例

設定例全体は次のとおりです:
最終更新日 2026年6月12日