---
title: ClickHouseをK8sで建てて みた話
tags: 
author: [TKD](https://www.docswell.com/user/7328957)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/2JV2NM5NJQ.jpg?width=480
description: ClickHouseをK8sで建てて みた話 by TKD
published: September 25, 25
canonical: https://www.docswell.com/s/7328957/ZYVLP3-2025-09-25-231756
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/2JV2NM5NJQ.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/5EGRKG65JL.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4JQVNX4L7P.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/K74MG6Q5J1.jpg)

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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LJ18DVP2EG.jpg)

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


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJWZYL22J2.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4EZ1XMD473.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/Y76L4N1GJV.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/G751Q54XE4.jpg)

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


# Page. 10

![Page Image](https://bcdn.docswell.com/page/9J21PNVQ7R.jpg)

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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/DEYZ5P3Y7M.jpg)

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


# Page. 12

![Page Image](https://bcdn.docswell.com/page/VJN3N5VRJ8.jpg)

Templateの
読み込み部分
Template部分


# Page. 13

![Page Image](https://bcdn.docswell.com/page/YE99RY6ZE3.jpg)

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


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GE89W6PY7D.jpg)

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


# Page. 15

![Page Image](https://bcdn.docswell.com/page/LELWN919JR.jpg)

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


