ClickStack の Helm チャートはこちらにあり、本番環境へのデプロイにはこの方法が推奨されています。
v2.x チャートでは、2 段階のインストールを採用しています。まず clickstack-operators チャートでオペレーターと CRD をインストールし、その後メインの clickstack チャートで、ClickHouse、MongoDB、OpenTelemetry Collector 用のオペレーター管理カスタムリソースを作成します。
デフォルトでは、Helm チャートは次のコアコンポーネントをすべてプロビジョニングします。
- ClickHouse —
ClickHouseClusterおよびKeeperClusterカスタムリソースを通じて ClickHouse Operator により管理 - HyperDX — オブザーバビリティ UI と API
- OpenTelemetry (OTel) collector — サブチャートとして 公式の OpenTelemetry Collector Helm チャート を使用してデプロイ
- MongoDB —
MongoDBCommunityカスタムリソースを通じて MongoDB Kubernetes Operator (MCK) により管理
ただし、既存の ClickHouse デプロイメントと統合できるよう、簡単にカスタマイズすることも可能です。たとえば、ClickHouse Cloud でホストされている環境と統合できます。
このチャートは、以下のような Kubernetes の標準的なベストプラクティスをサポートしています。
values.yamlによる環境別の設定- リソース制限とポッドレベルのスケーリング
- TLS とイングレスの設定
- シークレット管理と認証の設定
- チャートとあわせて任意の Kubernetes オブジェクト (NetworkPolicy、HPA、ALB Ingress など) をデプロイするための追加マニフェスト
適した用途
- 概念実証
- 本番環境
デプロイ手順
前提条件
- Helm v3+
- Kubernetes クラスター (v1.20+ 推奨)
- クラスターに接続できるように設定された
kubectl
ClickStack の Helm リポジトリを追加する
ClickStack の Helm リポジトリを追加します:
helm repo add clickstack https://clickhouse.github.io/ClickStack-helm-charts
helm repo updateOperator をインストールする
まず、Operator のチャートをインストールします。これにより、メインチャートに必要な CRD が登録されます。
helm install clickstack-operators clickstack/clickstack-operators次に進む前に、オペレーターのポッドの準備が完了するまで待ちます:
kubectl get pods -l app.kubernetes.io/instance=clickstack-operatorsClickStack をインストールする
オペレーターが起動したら、メインの Helm チャートをインストールします。
helm install my-clickstack clickstack/clickstackインストールの確認
インストールを確認します。
kubectl get pods -l "app.kubernetes.io/name=clickstack"すべてのポッドの準備が整ったら、次に進んでください。
ポートフォワード
ポートフォワードを使用すると、HyperDX にアクセスしてセットアップできます。本番環境にデプロイする場合は、適切なネットワークアクセス、TLS 終端、スケーラビリティを確保するため、代わりにイングレスまたはロードバランサー経由でサービスを公開してください。ポートフォワードは、ローカル開発や一時的な管理作業には適していますが、長期運用や高可用性が求められる環境には向きません。
kubectl port-forward \
pod/$(kubectl get pod -l app.kubernetes.io/name=clickstack -o jsonpath='{.items[0].metadata.name}') \
8080:3000values のカスタマイズ (任意)
--set フラグを使って設定をカスタマイズできます。たとえば、
helm install my-clickstack clickstack/clickstack --set key=valueまたは、values.yaml を編集します。デフォルト値を取得するには、
helm show values clickstack/clickstack > values.yaml設定例:
hyperdx:
frontendUrl: "https://hyperdx.example.com"
deployment:
replicas: 2
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 500m
memory: 1Gi
ingress:
enabled: true
host: hyperdx.example.com
tls:
enabled: true
tlsSecretName: "hyperdx-tls"helm install my-clickstack clickstack/clickstack -f values.yamlSecret の使用 (任意)
v2.x チャートでは、values の hyperdx.secrets から設定される単一の Secret (clickstack-secret) を使用します。ClickHouse のパスワード、MongoDB のパスワード、HyperDX の API key を含むすべての機密環境変数は、この 1 つの Secret を通じて扱われます。
Secret の値を上書きするには:
hyperdx:
secrets:
HYPERDX_API_KEY: "your-api-key"
CLICKHOUSE_PASSWORD: "your-clickhouse-password"
CLICKHOUSE_APP_PASSWORD: "your-app-password"
MONGODB_PASSWORD: "your-mongodb-password"外部のシークレット管理 (secrets operator の使用など) では、既存の Kubernetes Secret を参照できます:
hyperdx:
useExistingConfigSecret: true
existingConfigSecret: "my-external-secret"
existingConfigConnectionsKey: "connections.json"
existingConfigSourcesKey: "sources.json"Using ClickHouse Cloud
ClickHouse Cloud を使用する場合は、組み込みの ClickHouse インスタンスを無効にし、ClickHouse Cloud の認証情報を指定します。
# values-clickhouse-cloud.yaml
clickhouse:
enabled: false
hyperdx:
secrets:
CLICKHOUSE_PASSWORD: "your-cloud-password"
CLICKHOUSE_APP_PASSWORD: "your-cloud-password"
useExistingConfigSecret: true
existingConfigSecret: "clickhouse-cloud-config"
existingConfigConnectionsKey: "connections.json"
existingConfigSourcesKey: "sources.json"接続用のSecretを別途作成します:
cat <<EOF > connections.json
[
{
"name": "ClickHouse Cloud",
"host": "https://your-cloud-instance.clickhouse.cloud",
"port": 8443,
"username": "default",
"password": "your-cloud-password"
}
]
EOF
kubectl create secret generic clickhouse-cloud-config \
--from-file=connections.json=connections.json
rm connections.jsonhelm install my-clickstack clickstack/clickstack -f values-clickhouse-cloud.yaml本番環境に関する注意事項
デフォルトでは、このチャートによってClickHouse、MongoDB、OTel collectorがインストールされます。本番環境では、ClickHouse と OTel collector は個別に管理することを推奨します。
ClickHouse と OTel collector を無効にするには:
clickhouse:
enabled: false
otel-collector:
enabled: falseタスク設定
デフォルトでは、チャートの設定には CronJob として 1 つのタスクがあり、アラートを発報すべきかどうかを確認します。v2.x では、タスク設定は hyperdx.tasks 配下に移動しました。
| Parameter | Description | Default |
|---|---|---|
hyperdx.tasks.enabled |
クラスター内の cron タスクを有効/無効にします。デフォルトでは、HyperDX イメージがプロセス内で cron タスクを実行します。クラスター内で別の cron タスクを使用したい場合は、true に変更してください。 | false |
hyperdx.tasks.checkAlerts.schedule |
check-alerts タスクの Cron スケジュール | */1 * * * * |
hyperdx.tasks.checkAlerts.resources |
check-alerts タスクのリソースのリクエストと上限 | values.yaml を参照 |
チャートのアップグレード
新しいバージョンにアップグレードするには:
helm upgrade my-clickstack clickstack/clickstack -f values.yaml利用可能なチャートのバージョンを確認するには:
helm search repo clickstackClickStack のアンインストール
逆の順序でアンインストールします。
helm uninstall my-clickstack # アプリとCRを先に削除
helm uninstall clickstack-operators # operatorとCRDを削除注: MongoDB および ClickHouse Operator によって作成された PersistentVolumeClaims は、helm uninstall を実行しても削除されません。これは、意図しないデータ損失を防ぐための仕様です。PVC をクリーンアップするには、以下を参照してください。
トラブルシューティング
ログの確認
kubectl logs -l app.kubernetes.io/name=clickstackインストール失敗時のデバッグ
helm install my-clickstack clickstack/clickstack --debug --dry-runデプロイの確認
kubectl get pods -l app.kubernetes.io/name=clickstackスキーマの選択: Map と JSON
ClickStack は、デフォルトで属性を Map(LowCardinality(String), String) カラムとして保存します。これは、オブザーバビリティのワークロードに推奨されるスキーマです。bucketed map serialization と、Map のキーおよび値に対するテキスト索引を組み合わせることで、動的な JSON サブカラムのようにキーごとの取り込みオーバーヘッドを発生させることなく、必要なルックアップだけを効率的に実行できます。
JSON 型のスキーマは、属性キーの集合が小さく安定しているワークロードで評価するためのベータ機能として利用できます。これはデフォルトとしては推奨されません。詳しい比較と、JSON サポートを有効にするために必要な環境変数については、Map と JSON 型の比較 を参照してください。
デプロイメントガイド
- デプロイメントオプション - 外部 ClickHouse、OTel collector、最小構成のデプロイメント
- 設定ガイド - API keys、シークレット、イングレスの設定
- Cloud デプロイメント - GKE、EKS、AKS の設定と本番環境向けのベストプラクティス
- アップグレードガイド - v1.x から v2.x への移行
- 追加マニフェスト - チャート とあわせてカスタム Kubernetes オブジェクトをデプロイ
v1.x ドキュメント
- Helm (v1.x) - v1.x デプロイメントガイド
- 設定 (v1.x) - v1.x 設定
- デプロイメントオプション (v1.x) - v1.x デプロイメントオプション
- Cloud デプロイメント (v1.x) - v1.x Cloud 設定
参考資料
- ClickStack スタートガイド - ClickStack の紹介
- ClickStack Helm チャート リポジトリ - チャートのソースコードと values のリファレンス
- Kubernetes ドキュメント - Kubernetes リファレンス
- Helm ドキュメント - Helm リファレンス
