ClickHouseをK8sで建てて みた話

805 Views

September 25, 25

スライド概要

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

ClickHouseをK8s上で 建ててみた話 2025/9/25 Kubernetes Novice Tokyo #38

2.

自己紹介 氏名:竹田 舜(たけだ しゅん) 所属:株式会社ラクス AIエージェント課(元SRE課) 2023年新卒入社 3年目 仕事内容:インフラ寄り〜アプリ寄りまでなんでも! K8s歴は1年半くらい(ただ、マニフェスト書く方がメイン) 開発・インフラ等各種エンジニア募集中!(ラクス 中途採用とかで調べても出てくるかも) https://career-recruit.rakus.co.jp/jobs/development/

3.

今日話すこと ClickHouseをk8s上で建てたい! という人向け

4.

ClickHouseとは ※公式サイトより ClickHouseは非常に高速でリソース効率の高いリアルタイムデータウェアハウスであ り、オープンソースのデータベース — LangfuseやOpenLIT等のLLM Observabilityのソフトウェアでも使われてる Clickhouse Exporterがあるので、Otel-Collectorからの接続も可能

5.

なんでK8s上で建てようと思った? LLM監視系ツールのミドルウェアとして必要だから - Langfuse OpenLIT 上記ツールを使うときにClickhouseが必要、運用も見越してK8s上で動かす必要があっ た 現在検証中で、LangfuseとOpenLITを両方動かして使ってもらってる

6.

ClickHouseの建て方 - 自分でmanifestを書く - ネット上にあるHelm Chartを使う - - 例えば、bitnami/clickhouse Operatorを使う - Altinity/clickhouse-operator https://github.com/Altinity/helm-charts/tree/main/charts/clickhouse

7.

ClickHouseの建て方 - 自分でmanifestを書く - ネット上にあるHelm Chartを使う - - 例えば、bitnami/clickhouse ◯ Operatorを使う - 今回これ Keeperとか色々コ ンポーネントが 多そうだったから Altinity/clickhouse-operator https://github.com/Altinity/helm-charts/tree/main/charts/clickhouse Operatorを入れ、helm Chartを参考にしつつリソース定義を書いた

8.

Altinity/clickhouse-operator https://github.com/Altinity/clickhouse-operator Kubernetes 上で実行される ClickHouse クラスターを作成、構成、管理 ALTINITY(アルティニティ??読み方間違ってたら申し訳ありません !!) という会社が作ってるらしい

9.

参考にしたHelm Chart Operatorを出してる会社のHelm Chart https://github.com/Altinity/helm-charts/tree/main/charts/clickhouse 上記にある、templates/とvalues.yamlを参考に作成しました。 ● ● ● credentials.yamlでシークレットがベタ書き 会社の環境で建てる際は、vaultからシークレットを環境変数経由で設定、 config.xml内に環境変数を参照するよう設定 マニフェスト上に直接シークレットを記載しないようにした

10.

動かすのに定義が必要なもの - ClickHouseInstallation PodやServiceなど一連のリソースの定義、ここにTemplateを読み込ませる - PodやServiceなどのTemplate Helm Chartでは、_helpers.tplに定義されてる - ClickHouseKeeperInstallation" Keeperというマルチノードのときに整合性を取るコンポーネントを使うなら必要

11.

CRの関係性 Pod Templates ClickHouse Installation ClickHouse InstallationTemplate Service Templates volumeClaim Templates ※マルチノード構成にする場合追加で定義 Pod Templates ClickHouse KeeperInstallation Service Templates ClickHouse InstallationTemplate volumeClaim Templates

12.

Templateの 読み込み部分 Template部分

13.

工夫点 ● _helpers.tplからのInstallationTemplateのCR定義の記述をyamlに移動 ○ ○ ● サンプルのリポジトリはほぼ helperに書かれててどんなリソースがあるか把握にしにくい 挙動が変わってバグっても困るので templateの作成部分の処理は移動せずそのまま残した シークレットをvault・環境変数経由で注入 ○ ○ clickhouseの設定ファイルで環境変数からシークレットを読み込むようにした 例)<endpoint form_env=”CLICKHOUSE_S3_ACCESS_KEY”>

14.

書き換えポイント ● clickhouse.extraConfigにxmlを記述することで設定の追加が可能 ○ ○ ○ ● シークレット類を環境変数から読み込むように記述 form_envを指定すると環境変数から読み込み可能 デフォルト設定とぶつかる場合は、 replace=1とするとPodの起動が失敗せず設定を置き換え起動 ができた _helper.tpl全載せの元Chartは少々可読性が低いので書き換え推奨 ○ 完全に挙動把握して分割移植はできてないので、そのうちやりたい

15.

まとめ Operatorで構築するのが便利! シークレット系はClickHouseの設定を書き換えて、環境変数経由で渡すのがおすす め! kind上で建てる例を作りたかったが間に合わず...すみません