Перейти к основному содержимому
Перейти к основному содержимому

Справочник по API ClickHouse Operator

В этом документе приводится подробная справочная информация об API пользовательских ресурсов ClickHouse Operator.

ClickHouseCluster

ClickHouseCluster — это схема API кластера ClickHouse.

Версия API и тип ресурса

apiVersion: clickhouse.com/v1alpha1
kind: ClickHouseCluster

ClickHouseClusterSpec

ClickHouseClusterSpec определяет желаемое состояние кластера ClickHouse.

ПолеТипОбязательноеПо умолчаниюОписание
replicas*int32No3Количество реплик в одном сегменте. Должно быть >= 0.
shards*int32No1Количество сегментов в кластере. Должно быть >= 0.
keeperClusterRefLocalObjectReferenceYes-Ссылка на KeeperCluster, используемый для координации.
podTemplatePodTemplateSpecNo-Параметры спецификации пода.
containerTemplateContainerTemplateSpecNoСм. значения по умолчаниюПараметры спецификации контейнера ClickHouse.
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.

ПолеТипОбязательноеЗначение по умолчаниюОписание
defaultUserPassword*DefaultPasswordSelectorНет-Пароль для пользователя «default» из Secret или ConfigMap.
loggerLoggerConfigНетСм. значения по умолчаниюКонфигурация логгера.
tlsClusterTLSSpecНет-Настройки TLS для ClickHouse.
enableDatabaseSyncboolНетtrueВключить синхронизацию баз данных на новые реплики.
extraConfigruntime.RawExtensionНет-Дополнительная конфигурация ClickHouse (объединяется с настройками по умолчанию).
extraUsersConfigruntime.RawExtensionНет-Дополнительная конфигурация пользователей ClickHouse (объединяется с настройками по умолчанию).

ClickHouseClusterStatus

ClickHouseClusterStatus определяет наблюдаемое состояние кластера ClickHouse.

FieldTypeDescription
conditions[]metav1.ConditionТекущие состояния кластера.
observedGenerationint64Последнее наблюдаемое поколение.
replicasint32Количество реплик, в данный момент запущенных.
readyReplicasint32Количество готовых реплик.
configurationRevisionstringЦелевая ревизия конфигурации, применённая оператором.
statefulSetRevisionstringЦелевая ревизия контроллера StatefulSet.
currentRevisionstringПоследняя применённая ревизия спецификации кластера.
updateRevisionstringПоследняя запрошенная ревизия спецификации кластера.

KeeperCluster

KeeperCluster — это схема API для кластера ClickHouse Keeper.

Версия API и тип ресурса

apiVersion: clickhouse.com/v1alpha1
kind: KeeperCluster

KeeperClusterSpec

KeeperClusterSpec определяет желаемое состояние кластера Keeper.

FieldTypeRequiredDefaultDescription
replicas*int32No3Количество реплик. Должно быть нечётным числом: 0, 1, 3, 5, 7, 9, 11, 13 или 15.
podTemplatePodTemplateSpecNo-Параметры спецификации пода.
containerTemplateContainerTemplateSpecNoSee defaultsПараметры спецификации контейнера Keeper.
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.

ПолеТипОбязательноЗначение по умолчаниюОписание
loggerLoggerConfigНетСм. значения по умолчаниюКонфигурация логгера.
tlsClusterTLSSpecНет-Настройки TLS для Keeper.
extraConfigruntime.RawExtensionНет-Дополнительная конфигурация Keeper (объединяется с настройками по умолчанию).

KeeperClusterStatus

KeeperClusterStatus определяет наблюдаемое состояние кластера Keeper.

FieldTypeDescription
conditions[]metav1.ConditionТекущие состояния кластера.
observedGenerationint64Последнее наблюдаемое поколение.
replicasint32Число реплик, запущенных в данный момент.
readyReplicasint32Число готовых реплик.
configurationRevisionstringЦелевая ревизия конфигурации, применённая оператором.
statefulSetRevisionstringЦелевая ревизия контроллера StatefulSet.
currentRevisionstringПоследняя применённая ревизия спецификации кластера.
updateRevisionstringПоследняя запрошенная ревизия спецификации кластера.

Общие типы

PodTemplateSpec

Параметры конфигурации пода.

FieldTypeRequiredDescription
topologyZoneKeystringNoКлюч топологии Kubernetes для распределения по зонам (например, topology.kubernetes.io/zone).
nodeHostnameKeystringNoКлюч метки Kubernetes для имени хоста узла (например, kubernetes.io/hostname).
nodeSelectormap[string]stringNoСелектор узла для размещения пода.
affinitycorev1.AffinityNoПравила аффинности/антиаффинности для пода.
tolerations[]corev1.TolerationNoДопуски для помеченных (tainted) узлов.
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

Параметры конфигурации контейнера.

ПолеТипОбязательноеОписание
imageContainerImageНетКонфигурация образа контейнера.
imagePullPolicycorev1.PullPolicyНетПолитика получения образа (Always, IfNotPresent, Never).
resourcescorev1.ResourceRequirementsНетТребования к ресурсам CPU и памяти.
env[]corev1.EnvVarНетПеременные окружения.
volumeMounts[]corev1.VolumeMountНетДополнительные точки монтирования томов.
securityContext*corev1.SecurityContextНетКонтекст безопасности контейнера.

Пример

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

Спецификация образа контейнера.

ПолеТипОбязательноеЗначение по умолчаниюОписание
repositorystringНетClickHouse: clickhouse/clickhouse-server
Keeper: clickhouse/clickhouse-keeper
Репозиторий образа контейнера.
tagstringНетlatestТег образа.

ClusterTLSSpec

Конфигурация TLS для кластеров.

ПолеТипОбязательноеОписание
enabledboolНетВключить TLS.
requiredboolНетТребовать TLS для всех подключений (отключает небезопасные конечные точки).
serverCertSecretcorev1.LocalObjectReferenceНетSecret, содержащий серверный сертификат (tls.crt, tls.key).
caBundle*SecretKeySelectorНетSecret, содержащий набор CA-сертификатов для проверки.

Пример

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.
secret*SecretKeySelectorNo-Выбор пароля из ключа объекта Secret. Взаимоисключим с configMap.
configMap*ConfigMapKeySelectorNo-Выбор пароля из ключа объекта ConfigMap. Взаимоисключим с secret.
Примечание

Необходимо указать либо secret, либо configMap, но не оба одновременно.

Пример с Secret (рекомендуемый)

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

Пример с SHA-256

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
Политика загрузки образаIfNotPresent
Запрос CPU2
Лимит CPU4
Запрос памяти4Gi
Лимит памяти8Gi
Уровень логированияtrace
Логирование в файлtrue
Размер журнала1000M
Количество файлов журнала50
Включить синхронизацию базы данныхtrue

Параметры Keeper по умолчанию

ПараметрЗначение по умолчанию
Реплики3
Репозиторий образаclickhouse/clickhouse-keeper
Тег образаlatest
Политика извлечения образаIfNotPresent
Запрос на CPU500m
Лимит CPU1
Запрос памяти512Mi
Лимит памяти1Gi
Уровень логированияtrace
Логирование в файлtrue
Размер файла лога1000M
Количество файлов лога50

Состояния

Состояния ClickHouseCluster

TypeDescription
SpecValidПроходит ли CustomResource ClickHouseCluster валидацию. Полезно при развертывании без webhooks
ReconcileSucceededУспешность последнего цикла согласования
ReplicaStartupSucceededМогут ли все реплики ClickHouseCluster успешно запускаться
HealthyГотовность всех запрошенных реплик
ClusterSizeAlignedВ кластере столько же реплик/сегментов, сколько запрошено
ConfigurationInSyncОтражает состояние развертывания конфигурации
ReadyClickHouseCluster готов обслуживать клиентские запросы. Как минимум одна реплика в каждом сегменте находится в состоянии Ready
SchemaInSyncВсе реплики имеют одинаковую схему базы данных после операций масштабирования

Условия KeeperCluster

ТипОписание
SpecValidПроходит ли пользовательский ресурс KeeperCluster проверку. Полезно в развертываниях без вебхуков.
ReconcileSucceededУспешность последнего цикла согласования.
ReplicaStartupSucceededУспешный запуск всех реплик KeeperCluster.
HealthyГотовность всех запрошенных реплик.
ClusterSizeAlignedРазмер кластера соответствует запрошенному числу реплик.
ConfigurationInSyncОтражает состояние развертывания конфигурации.
ReadyKeeperCluster готов обслуживать клиентские запросы. Лидер выбран.