- Altinity ClickHouse Operator: Kubernetes 向けのエンタープライズグレードの ClickHouse 管理
- ClickHouse Keeper: 分散コーディネーションサービス (ZooKeeper の代替)
- ClickHouse Cluster: トレース保存用の高可用性データベースクラスター
- S3-Compatible Storage: ClickHouse データを永続化するためのオブジェクトストレージ
重要なセットアップ上の注意
- Security & Compliance: 組織のセキュリティポリシーおよび Kubernetes/OpenShift の要件に合わせて、セキュリティコンテキスト、
runAsUser/fsGroupの値、その他のセキュリティ設定を調整してください。 - Resource Sizing: ここに示すリソース割り当ては出発点にすぎません。想定されるトレース量とパフォーマンス要件に基づく適切なサイジングについては、W&B Solutions Architect チームに相談してください。
- Infrastructure Specifics: ストレージクラス、ノードセレクター、その他のインフラストラクチャー固有の設定を、使用する環境に合わせて更新してください。
アーキテクチャ
前提条件
- Kubernetes クラスター: バージョン 1.29 以上
- Kubernetes ノード: マルチノードクラスター (高可用性のため、少なくとも 3 ノードを推奨)
- ストレージクラス: 永続ボリューム用の有効な StorageClass (例:
gp3,standard,nfs-csi) - S3 バケット: 適切なアクセス権限が設定された、事前構成済みの S3 または S3 互換バケット
- W&B Platform: すでにインストールおよび稼働していること (W&B Self-Managed デプロイガイドを参照)
- W&B ライセンス: W&B サポートが提供する Weave 対応ライセンス
必須ツール
- クラスターにアクセスできるよう設定された
kubectl helmv3.0+- AWS認証情報 (S3を使用する場合) 、またはS3互換ストレージへのアクセス
ネットワーク要件
clickhousenamespace 内の Pod は、wandbnamespace 内の Pod と通信できる必要があります- ClickHouse ノード同士は、ポート 8123、9000、9009、2181 を介して通信できる必要があります
セルフマネージドWeaveインスタンスをデプロイする
Step 1: Altinity ClickHouse Operator をデプロイする
1.1 Altinity Helmリポジトリを追加する
1.2 Operator の設定を作成
ch-operator.yaml という名前のファイルを作成します。
containerSecurityContext の値は、ほとんどの Kubernetes ディストリビューションで使用できます。OpenShift では、プロジェクトに割り当てられている UID 範囲に合わせて runAsUser と fsGroup を調整する必要がある場合があります。
1.3 operatorをインストールする
1.4 operator がインストールされていることを確認する
Step 2: S3ストレージを準備する
2.1 S3バケットを作成する
2.2 S3認証情報を設定する
オプション A: AWS IAM ロールを使用する (IRSA - AWS では推奨)
オプション B: アクセスキーを使用する
Step 3: ClickHouse Keeper をデプロイする
3.1 Keeper の設定を作成する
ch-keeper.yaml という名前のファイルを作成します。
- StorageClass: クラスターで使用可能な StorageClass に合わせて、
storageClassName: gp3を更新します - セキュリティコンテキスト: 組織のセキュリティポリシーに準拠するよう、
runAsUserとfsGroupの値を調整します - Anti-Affinity: クラスターのトポロジーと HA 要件に応じて、
affinityセクションをカスタマイズするか削除します - リソース: CPU/メモリの値はあくまで例です。適切なサイジングについては、W&B Solutions Architects に相談してください
- 命名:
metadata.nameまたはconfiguration.clusters[0].nameを変更する場合は、それに合わせて ch-server.yaml (Step 4) 内の Keeper ホスト名を必ず更新してください
3.2 ClickHouse Keeperをデプロイする
3.3 Keeper のデプロイを確認する
Step 4: ClickHouse Cluster をデプロイする
4.1 ClickHouse サーバーの設定を作成する
ch-server.yaml という名前のファイルを作成します。
- StorageClass:
storageClassName: gp3を、クラスターの StorageClass に合うよう更新します - S3 Endpoint:
YOUR-BUCKET-NAMEとYOUR-REGIONを実際の値に置き換えます - Cache Size:
<max_size>40Gi</max_size>は永続ボリュームのサイズ (50Gi) より 小さく する必要があります - セキュリティコンテキスト:
runAsUser、fsGroup、およびその他のセキュリティ設定を、組織のポリシーに合わせて調整します - Resource Allocation: CPU/メモリの値はあくまで例です。想定されるトレース量に基づく適切なサイジングについては、W&B Solutions Architect に相談してください
- Anti-Affinity Rules: クラスターのトポロジーと高可用性の要件に応じて、カスタマイズするか削除します
- Keeper Hostnames: Keeper ノードのホスト名は、Step 3 の Keeper デプロイの命名と一致している必要があります (以下の「Understanding Keeper Naming」を参照)
- Cluster Naming: クラスター名
weaveclusterは変更できますが、Step 5 のWF_CLICKHOUSE_REPLICATED_CLUSTERの値と一致している必要があります - Credentials:
- IRSA の場合:
<use_environment_credentials>true</use_environment_credentials>をそのまま使用するか、環境変数にマッピングしたシークレットキーを使用してください。
- IRSA の場合:
4.2 S3 の設定を更新する
ch-server.yaml の storage_configuration.xml セクションを編集します。
AWS S3 の設定例:
4.3 認証情報を設定する (Option B のみ)
ch-server.yaml の env セクションでそのシークレットを参照していることを確認してください。
envセクション全体を削除してください。
4.4 Keeper の命名規則を理解する
zookeeper.nodes セクションの Keeper ノードのホスト名は、Step 3 で行った Keeper のデプロイに応じて、特定のパターンに従います。
ホスト名パターン: chk-{installation-name}-{cluster-name}-{cluster-index}-{replica-index}.{namespace}.svc.cluster.local
各要素:
chk= ClickHouseKeeperInstallation のプレフィックス (固定){installation-name}= ch-keeper.yaml のmetadata.name(例:wandb){cluster-name}= ch-keeper.yaml のconfiguration.clusters[0].name(例:keeper){cluster-index}= クラスターのインデックス。単一クラスターでは通常0{replica-index}= レプリカ番号。3 レプリカの場合は0、1、2{namespace}= Kubernetes の名前空間 (例:clickhouse)
metadata.name: myweave) :
clusters[0].name: coordination) :
ch-server.yaml 内の Keeper ホスト名は、Keeper のデプロイで実際に作成されるサービス名と完全に一致している必要があります。一致していないと、ClickHouse サーバーはコーディネーションサービスに接続できません。4.5 ClickHouse クラスターをデプロイする
4.6 ClickHouse のデプロイを確認する
Step 5: W&B Platform で Weave を有効にする
5.1 ClickHouse の接続情報を確認する
- ホスト:
clickhouse-wandb.clickhouse.svc.cluster.local - ポート:
8123 - ユーザー:
weave(ch-server.yamlで設定) - パスワード:
weave123(ch-server.yamlで設定) - データベース:
weave(自動的に作成されます) - クラスタ名:
weavecluster(ch-server.yamlで設定)
clickhouse-{installation-name}.{namespace}.svc.cluster.local
5.2 W&B Custom Resource を更新する
clickhouse.replicated: true- 3 レプリカを使用する場合は 必須WF_CLICKHOUSE_REPLICATED: "true"- レプリケーション構成では 必須WF_CLICKHOUSE_REPLICATED_CLUSTER: "weavecluster"-ch-server.yamlのクラスター名と 一致する必要があります
上記のセキュリティコンテキスト、リソース割り当て、およびその他の Kubernetes 固有の設定は参考例です。組織の要件に合わせて適宜カスタマイズし、適切なリソースサイジングについては W&B Solutions Architect チームに相談してください。
5.3 更新した設定を適用する
5.4 Weave Trace のデプロイを確認する
Step 6: Weave データベースを初期化する
6.1 データベースの移行を監視する
6.2 データベースが作成されたことを確認する
Step 7: Weave が有効であることを確認する
7.1 W&B Console にアクセスする
7.2 Weave ライセンスの状態を確認する
- Top Right Menu → Organization Dashboard に移動します
- Weave access が有効になっていることを確認します
7.3 Weave の機能をテストする
トラブルシューティング
ClickHouse Keeper の問題
Pending 状態のままになっている
解決策: 考えられる複数の原因を確認します。
- PVC と StorageClass の問題:
- アンチアフィニティとノードの可用性:
- アンチアフィニティでは 3 つの別々のノードが必要ですが、クラスター内のノード数が不足している
- ノードに、pod の要求を満たすのに十分な CPU / メモリがない
- ノードの taint によって pod をスケジュールできない
- ノード数が 3 未満の場合は、アンチアフィニティルールを削除または調整する
- より緩やかなアンチアフィニティにするには、
requiredDuringSchedulingIgnoredDuringExecutionではなくpreferredDuringSchedulingIgnoredDuringExecutionを使用する - ノードのリソースが不足している場合は、リソース要求を減らす
- クラスターにノードを追加する
問題: Keeper pod が
CrashLoopBackOff になる
解決策: ログを確認し、設定を検証する:
- セキュリティコンテキストの誤り (runAsUser、fsGroup を確認)
- ボリュームの権限に関する問題
- ポートの競合
- ch-keeper.yaml の設定エラー
ClickHouse Server の問題
問題: ClickHouse が Keeper に接続できない 解決策: Keeper のエンドポイントと命名設定を確認してください。
Weave Trace の問題
weave-trace pod が起動しない
解決策: ClickHouse への接続を確認してください:
問題: Console で Weave が有効と表示されない 解決策: 設定を確認します。
-
ライセンスに Weave が含まれていることを確認します。
-
wandb-cr.yaml で
weave-trace.enabled: trueとclickhouse.replicated: trueが設定されていることを確認します -
W&B operator のログを確認します。
問題: データベースの移行に失敗する 解決策: クラスター名が一致していることを確認します。
WF_CLICKHOUSE_REPLICATED_CLUSTER 環境変数は、ch-server.yaml 内のクラスター名と必ず一致している必要があります:
リソース要件
最小本番構成
適した用途: 開発、テスト、または低負荷の本番環境
推奨される本番構成
適した環境: 高トレース量の本番環境
超高ボリュームのデプロイについては、トレース量やパフォーマンス要件に応じたカスタムのサイジング推奨事項について、W&B Solutions Architect チームにお問い合わせください。
高度な設定
ClickHouse のスケーリング
-
垂直スケーリング: pod ごとのリソースを増やします (より簡単な方法)
推奨事項: 実際のリソース使用量を監視し、それに応じてスケールしてください。非常に大規模なデプロイを行う場合は、W&B Solutions Architect チームにお問い合わせください。
-
水平スケーリング: レプリカを追加します (慎重な計画が必要です)
- レプリカを増やすには、データの再分散が必要です
- シャード管理については ClickHouse のドキュメントを参照してください
- 本番環境で水平スケーリングを実施する前に、W&B Solutions Architect にお問い合わせください
異なるバージョンの ClickHouse を使用する
ClickHouse の監視
バックアップとリカバリ
セキュリティに関する考慮事項
- 認証情報: ClickHouse のパスワードはプレーンテキストではなく、Kubernetes シークレットに保存します
- ネットワークポリシー: ClickHouse へのアクセスを制限するため、NetworkPolicies の実装を検討してください
- RBAC: サービスアカウントには、必要最小限の権限のみを付与してください
- S3 Bucket: 保存時の暗号化を有効にし、S3 バケットへのアクセスを必要な IAM ロールのみに制限してください
- TLS (オプション): 本番環境では、ClickHouse クライアント接続で TLS を有効にしてください
アップグレード
ClickHouse Operator のアップグレード
ClickHouse Server のアップグレード
ch-server.yaml のイメージのバージョンを更新して、適用します:
Weave Trace のアップグレード
wandb-cr.yaml のイメージタグを更新して、適用します。
参考資料
サポート
- W&B サポート:
support@wandb.com - ソリューションアーキテクト: 超大規模デプロイ、カスタムサイジング、デプロイ計画について
- サポートへの問い合わせに含める内容:
- weave-trace、ClickHouse pod、operator のログ
- W&B バージョン、ClickHouse バージョン、Kubernetes バージョン
- クラスター情報とトレースのボリューム
よくある質問
replicasCount: 1 に更新し、wandb-cr.yaml で clickhouse.replicated: false を設定してください。
Q: ClickHouse の代わりに別のデータベースを使用できますか?
A: いいえ。Weave Trace では、高パフォーマンスなカラム指向ストレージを実現するために ClickHouse が必要です。
Q: S3 ストレージはどのくらい必要ですか?
A: S3 ストレージの必要量は、トレース量、保持期間、データ圧縮によって異なります。デプロイ後に実際の使用量を監視し、それに応じて調整してください。ClickHouse のカラム指向フォーマットは、Trace Data を高い圧縮率で保存できます。
Q: ClickHouse で database 名を設定する必要がありますか?
A: いいえ。weave データベースは、初回起動時に weave-trace サービスによって自動的に作成されます。
Q: クラスター名が weavecluster ではない場合はどうなりますか?
A: WF_CLICKHOUSE_REPLICATED_CLUSTER 環境変数を、実際のクラスター名に合わせて設定する必要があります。そうしないと、データベース移行が失敗します。
Q: 例に示されているセキュリティコンテキストをそのまま使うべきですか?
A: いいえ。このガイドに記載しているセキュリティコンテキスト (runAsUser、fsGroup など) は参考例です。特に OpenShift クラスターでは UID/GID の範囲に関する固有の要件があるため、組織のセキュリティポリシーに準拠するよう調整する必要があります。
Q: ClickHouse クラスターのサイジングが適切かどうかは、どうすれば判断できますか?
A: 想定しているトレース量と使用パターンを W&B Solutions Architect チームに共有してください。具体的なサイジング推奨を受けられます。デプロイのリソース使用量を監視し、必要に応じて調整してください。
Q: 例で使用されている命名規則はカスタマイズできますか?
A: はい。ただし、すべてのコンポーネントで一貫性を保つ必要があります。
- ClickHouse Keeper 名 → ch-server.yaml の
zookeeper.nodesセクションにある Keeper ノードのホスト名と一致している必要があります - ClickHouse クラスター名 (
weavecluster) → wandb-cr.yaml のWF_CLICKHOUSE_REPLICATED_CLUSTERと一致している必要があります - ClickHouse インストール名 → weave-trace が使用するサービスのホスト名に影響します