メインコンテンツへスキップ
メインコンテンツへスキップ

ClickHouse Operator API リファレンス

このドキュメントでは、ClickHouse Operator のカスタムリソース用の詳細な API リファレンスを提供します。

ClickHouseCluster

ClickHouseCluster は、ClickHouse クラスター API のスキーマです。

API バージョンと Kind

apiVersion: clickhouse.com/v1alpha1
kind: ClickHouseCluster

ClickHouseClusterSpec

ClickHouseClusterSpec は、ClickHouse クラスターの望ましい状態を定義します。

FieldTypeRequiredDefaultDescription
replicas*int32No3単一の分片内のレプリカ数。0 以上である必要があります。
shards*int32No1クラスター内の分片数。0 以上である必要があります。
keeperClusterRefLocalObjectReferenceYes-調整に使用される KeeperCluster への参照。
podTemplatePodTemplateSpecNo-Pod Spec のパラメーター。
containerTemplateContainerTemplateSpecNoSee defaultsClickHouse コンテナー Spec のパラメーター。
dataVolumeClaimSpecPersistentVolumeClaimSpecYes-データボリューム用のストレージ構成。
labelsmap[string]stringNo-すべてのリソースに付与されるラベル。
annotationsmap[string]stringNo-すべてのリソースに付与されるアノテーション。
settingsClickHouseConfigNo-ClickHouse の構成パラメーター。

apiVersion: clickhouse.com/v1alpha1
kind: ClickHouseCluster
metadata:
  name: example-cluster
spec:
  replicas: 3
  shards: 2
  keeperClusterRef:
    name: example-keeper
  dataVolumeClaimSpec:
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 100Gi
  containerTemplate:
    image:
      repository: clickhouse/clickhouse-server
      tag: "25.12"
    resources:
      requests:
        cpu: "2"
        memory: "8Gi"
      limits:
        cpu: "4"
        memory: "16Gi"
  settings:
    defaultUserPassword:
      secret:
        name: clickhouse-password
        key: password
    tls:
      enabled: true
      required: true
      serverCertSecret:
        name: clickhouse-cert

ClickHouseConfig

ClickHouse の構成パラメータ。

FieldTypeRequiredDefaultDescription
defaultUserPassword*DefaultPasswordSelectorNo-Secret または ConfigMap から取得する default ユーザーのパスワード。
loggerLoggerConfigNoSee defaultsロガーの構成。
tlsClusterTLSSpecNo-ClickHouse 用の TLS 設定。
enableDatabaseSyncboolNotrueデータベースを新しいレプリカに同期するかどうかを有効化する。
extraConfigruntime.RawExtensionNo-追加の ClickHouse 構成(デフォルト構成とマージされる)。
extraUsersConfigruntime.RawExtensionNo-追加の ClickHouse ユーザー構成(デフォルト構成とマージされる)。

ClickHouseClusterStatus

ClickHouseClusterStatus は、ClickHouse クラスターの観測された状態を定義します。

FieldTypeDescription
conditions[]metav1.Conditionクラスターの現在の Condition 一覧。
observedGenerationint64直近で観測された generation。
replicasint32現在稼働中のレプリカ数。
readyReplicasint32Ready 状態のレプリカ数。
configurationRevisionstringOperator によって適用されたターゲット設定リビジョン。
statefulSetRevisionstring対象となる StatefulSet コントローラーのリビジョン。
currentRevisionstring最後に適用されたクラスター spec のリビジョン。
updateRevisionstring最後に要求されたクラスター spec のリビジョン。

KeeperCluster

KeeperCluster は、ClickHouse Keeper クラスター API 用のスキーマです。

API バージョンとKind

apiVersion: clickhouse.com/v1alpha1
kind: KeeperCluster

KeeperClusterSpec

KeeperClusterSpec は、Keeper クラスターの望ましい状態を定義します。

FieldTypeRequiredDefaultDescription
replicas*int32No3レプリカ数。必ず奇数である必要があります。0、1、3、5、7、9、11、13、15 のいずれかです。
podTemplatePodTemplateSpecNo-ポッドの Spec に対するパラメータ。
containerTemplateContainerTemplateSpecNoSee defaultsKeeper コンテナの Spec に対するパラメータ。
dataVolumeClaimSpecPersistentVolumeClaimSpecYes-データボリューム用のストレージ構成。
labelsmap[string]stringNo-すべてのリソースに付与される追加ラベル。
annotationsmap[string]stringNo-すべてのリソースに付与される追加アノテーション。
settingsKeeperConfigNo-Keeper の設定パラメータ。

apiVersion: clickhouse.com/v1alpha1
kind: KeeperCluster
metadata:
  name: example-keeper
spec:
  replicas: 3
  dataVolumeClaimSpec:
    storageClassName: fast-ssd
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 10Gi
  containerTemplate:
    resources:
      requests:
        cpu: "500m"
        memory: "512Mi"
      limits:
        cpu: "1"
        memory: "1Gi"
  podTemplate:
    topologyZoneKey: topology.kubernetes.io/zone
  settings:
    tls:
      enabled: true
      required: true
      serverCertSecret:
        name: keeper-cert

KeeperConfig

Keeper の設定パラメータ。

FieldTypeRequiredDefaultDescription
loggerLoggerConfigNoSee defaultsロガー設定。
tlsClusterTLSSpecNo-Keeper 用の TLS 設定。
extraConfigruntime.RawExtensionNo-デフォルト設定とマージされる追加の Keeper 設定。

KeeperClusterStatus

KeeperClusterStatus は、Keeper クラスターの観測された状態を定義します。

FieldTypeDescription
conditions[]metav1.Conditionクラスターの現在の Condition。
observedGenerationint64直近で観測された generation。
replicasint32現在実行中のレプリカの数。
readyReplicasint32Ready 状態のレプリカの数。
configurationRevisionstringオペレーターによって適用された対象の構成リビジョン。
statefulSetRevisionstring対象となる StatefulSet コントローラーのリビジョン。
currentRevisionstring最後に適用されたクラスター spec のリビジョン。
updateRevisionstring最後に要求されたクラスター spec のリビジョン。

共通型

PodTemplateSpec

ポッドを設定するためのパラメーター。

FieldTypeRequiredDescription
topologyZoneKeystringNoゾーン分散のための Kubernetes トポロジーキー(例: topology.kubernetes.io/zone)。
nodeHostnameKeystringNoノードのホスト名用の Kubernetes ラベルキー(例: kubernetes.io/hostname)。
nodeSelectormap[string]stringNoポッド配置用のノードセレクター。
affinitycorev1.AffinityNoポッドの affinity/anti-affinity ルール。
tolerations[]corev1.TolerationNoテイントされたノードに対するトレランス(toleration)の設定。
securityContext*corev1.PodSecurityContextNoポッドのセキュリティコンテキスト。

podTemplate:
  topologyZoneKey: topology.kubernetes.io/zone
  nodeHostnameKey: kubernetes.io/hostname
  nodeSelector:
    disktype: ssd
  tolerations:
  - key: "dedicated"
    operator: "Equal"
    value: "clickhouse"
    effect: "NoSchedule"
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchLabels:
            app.kubernetes.io/name: clickhouse
        topologyKey: kubernetes.io/hostname

ContainerTemplateSpec

コンテナ設定用のパラメーター。

FieldTypeRequiredDescription
imageContainerImageNoコンテナイメージの設定。
imagePullPolicycorev1.PullPolicyNoイメージのプルポリシー (Always, IfNotPresent, Never)。
resourcescorev1.ResourceRequirementsNoCPU およびメモリのリソース要求。
env[]corev1.EnvVarNo環境変数。
volumeMounts[]corev1.VolumeMountNo追加のボリュームマウント。
securityContext*corev1.SecurityContextNoコンテナのセキュリティコンテキスト。

containerTemplate:
  image:
    repository: clickhouse/clickhouse-server
    tag: "25.12"
  imagePullPolicy: IfNotPresent
  resources:
    requests:
      cpu: "2"
      memory: "8Gi"
    limits:
      cpu: "4"
      memory: "16Gi"
  env:
  - name: TZ
    value: "UTC"

ContainerImage

コンテナイメージ仕様。

FieldTypeRequiredDefaultDescription
repositorystringNoClickHouse: clickhouse/clickhouse-server
Keeper: clickhouse/clickhouse-keeper
コンテナイメージのリポジトリ。
tagstringNolatestイメージタグ。

ClusterTLSSpec

クラスターの TLS 構成。

FieldTypeRequiredDescription
enabledboolNoTLS を有効にします。
requiredboolNoすべての接続に TLS を必須にします(非セキュアなエンドポイントを無効化)。
serverCertSecretcorev1.LocalObjectReferenceNoサーバー証明書(tls.crt, tls.key)を含む Secret。
caBundle*SecretKeySelectorNo検証用の CA バンドルを含む Secret。

tls:
  enabled: true
  required: true
  serverCertSecret:
    name: clickhouse-cert
  caBundle:
    secretKeyRef:
      name: ca-cert-secret
      key: ca.crt

LoggerConfig

ClickHouse および Keeper のロギング設定。

FieldTypeRequiredDefaultDescription
logToFileboolNotrueログをファイルに書き込みます。
levelstringNo"trace"ログレベル。trace、debug、information、warning、error を指定します。
sizestringNo"1000M"ログファイルサイズの上限。
countintNo50保持するログファイル数。

logger:
  logToFile: true
  level: "information"
  size: "1000M"
  count: 50

DefaultPasswordSelector

パスワードを格納した Secret または ConfigMap のキーを参照します。

FieldTypeRequiredDefaultDescription
passwordTypestringNoplaintextパスワードのエンコード方式。指定可能な値: plaintext, sha256_password, sha256_hash, double_sha1_password, double_sha1_hash。詳細は ClickHouse documentation を参照してください。
secret*SecretKeySelectorNo-Secret のキーからパスワードを選択します。configMap と同時には指定できません。
configMap*ConfigMapKeySelectorNo-ConfigMap のキーからパスワードを選択します。secret と同時には指定できません。
注記

secretconfigMap のいずれか一方を指定する必要があり、両方を同時に指定することはできません。

Secret を使った例(推奨)

defaultUserPassword:
  passwordType: plaintext  # Optional, default
  secret:
    name: clickhouse-password
    key: password

SHA256 を使用した例

defaultUserPassword:
  passwordType: sha256_password
  secret:
    name: clickhouse-password
    key: password_hash

ConfigMap を使用した例

defaultUserPassword:
  passwordType: plaintext
  configMap:
    name: clickhouse-config
    key: default_password

デフォルト値

ClickHouse のデフォルト設定

設定デフォルト値
レプリカ数3
分片数1
イメージリポジトリclickhouse/clickhouse-server
イメージタグlatest
イメージのPullポリシーIfNotPresent
CPU リクエスト2
CPU 制限4
メモリリクエスト4Gi
メモリ制限8Gi
ロガーレベルtrace
ログをファイルに出力true
ロガーサイズ1000M
ロガー数50
データベース同期を有効化true

Keeper のデフォルト

設定項目デフォルト値
レプリカ3
イメージリポジトリclickhouse/clickhouse-keeper
イメージタグlatest
イメージのPullポリシーIfNotPresent
CPU 要求500m
CPU 制限1
メモリ要求512Mi
メモリ制限1Gi
ログレベルtrace
ファイルへのログ出力true
ログサイズ1000M
ログファイル数50

条件

ClickHouseCluster の条件

TypeDescription
SpecValidClickHouseCluster CustomResource が検証に合格しているかどうか。Webhook を使用しないデプロイメントで有用です
ReconcileSucceeded直近のリコンシリエーションサイクルが成功したかどうか
ReplicaStartupSucceededClickHouseCluster のすべてのレプリカが起動可能かどうか
Healthy要求されたすべてのレプリカの Readiness
ClusterSizeAlignedクラスターが要求されたレプリカ/分片の数と一致している状態
ConfigurationInSync設定のデプロイ状態を表します
ReadyClickHouseCluster がクライアント要求を処理可能な状態。各分片で少なくとも 1 つのレプリカが Ready 状態です
SchemaInSyncスケーリング操作完了後、すべてのレプリカが同一のデータベーススキーマを保持している状態

KeeperCluster conditions

TypeDescription
SpecValidKeeperCluster CustomResource が検証に合格しているかどうか。webhook を使用しないデプロイメントで有用です。
ReconcileSucceeded直近の Reconcile サイクルが成功したかどうか。
ReplicaStartupSucceededKeeperCluster のすべてのレプリカが起動可能かどうか。
Healthy要求されたすべてのレプリカの Readiness 状態。
ClusterSizeAlignedクラスターが要求された数と同じ数のレプリカを持っているかどうか。
ConfigurationInSyncConfiguration のデプロイメント状態を表します。
ReadyKeeperCluster がクライアントリクエストを処理する準備ができている状態。リーダー選出済み。