> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

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

<h2 id="additionalport">
  AdditionalPort
</h2>

AdditionalPort задаёт один дополнительный TCP-порт, который будет открыт на поде ClickHouse и в публичном headless Service.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `name` | string | Имя однозначно идентифицирует порт в списке. Используется и как имя порта контейнера, и как имя порта сервиса.<br />Должно быть значением DNS\_LABEL. | true | |
| `port` | integer | Порт — это номер TCP-порта, который будет открыт. | true | |

Встречается в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)

<h2 id="cabundleselector">
  CABundleSelector
</h2>

CABundleSelector выбирает ключ, содержащий набор CA, из объекта Secret в пространстве имен кластера.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `name` | string | Имя Secret в пространстве имен кластера, из которого выбирается значение. | true | |
| `key` | string | Ключ Secret, который нужно выбрать. Должен быть допустимым ключом Secret. | false | ca.crt |

Встречается в:

* [ClusterTLSSpec](#clustertlsspec)

<h2 id="clickhousecluster">
  ClickHouseCluster
</h2>

ClickHouseCluster — это схема для API `clickhouseclusters`.

<h3 id="clickhousecluster-api-version-and-kind">
  Версия API и Kind
</h3>

```yaml theme={null}
apiVersion: clickhouse.com/v1alpha1
kind: ClickHouseCluster
```

| Поле | Тип | Описание | Обязательное | По умолчанию |
| - | - | - | - | - |
| `spec` | [ClickHouseClusterSpec](#clickhouseclusterspec) | | true | |
| `status` | [ClickHouseClusterStatus](#clickhouseclusterstatus) | | true | |

Входит в:

* [ClickHouseClusterList](#clickhouseclusterlist)

<h2 id="clickhouseclusterlist">
  ClickHouseClusterList
</h2>

ClickHouseClusterList содержит список объектов ClickHouseCluster.

<h3 id="clickhouseclusterlist-api-version-and-kind">
  Версия API и Kind
</h3>

```yaml theme={null}
apiVersion: clickhouse.com/v1alpha1
kind: ClickHouseClusterList
```

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `items` | массив [ClickHouseCluster](#clickhousecluster) | | true | |

<h2 id="clickhouseclusterspec">
  ClickHouseClusterSpec
</h2>

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

| Поле | Тип | Описание | Обязательное | По умолчанию |
| - | - | - | - | - |
| `replicas` | integer | Количество реплик в одном шарде. | false | 3 |
| `shards` | integer | Количество шардов в кластере. | false | 1 |
| `keeperClusterRef` | [KeeperClusterReference](#keeperclusterreference) | Ссылка на KeeperCluster, используемый для координации ClickHouse.<br />Если пространство имён не указано, используется пространство имён ClickHouseCluster. | true | |
| `podTemplate` | [PodTemplateSpec](#podtemplatespec) | Параметры, передаваемые в спецификацию пода ClickHouse. | false | |
| `containerTemplate` | [ContainerTemplateSpec](#containertemplatespec) | Параметры, передаваемые в спецификацию контейнера ClickHouse. | false | |
| `dataVolumeClaimSpec` | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaimspec-v1-core) | Спецификация постоянного хранилища для данных ClickHouse. | false | |
| `additionalVolumeClaimTemplates` | [PersistentVolumeClaimTemplate](#persistentvolumeclaimtemplate) array | Дополнительные шаблоны PVC для каждого пода для хранилища JBOD / с несколькими дисками.<br />Каждая запись распространяется в volumeClaimTemplate StatefulSet, монтируется по пути `/var/lib/clickhouse/disks/<name>` и<br />добавляется в сгенерированную политику хранилища JBOD.<br />Набор дисков фиксируется при создании. | false | |
| `labels` | object (keys:string, values:string) | Дополнительные метки, добавляемые к ресурсам. | false | |
| `annotations` | object (keys:string, values:string) | Дополнительные annotations, добавляемые к ресурсам. | false | |
| `podDisruptionBudget` | [PodDisruptionBudgetSpec](#poddisruptionbudgetspec) | PodDisruptionBudget настраивает PDB, создаваемый для каждого шарда.<br />Если не задано, оператор по умолчанию использует maxUnavailable=1 для шардов с одной репликой<br />и minAvailable=1 для шардов с несколькими репликами. | false | |
| `networkPolicy` | [ClickHouseNetworkPolicySpec](#clickhousenetworkpolicyspec) | NetworkPolicy настраивает NetworkPolicy, управляемую для кластера. | false | |
| `settings` | [ClickHouseSettings](#clickhousesettings) | Параметры конфигурации сервера ClickHouse. | false | \{  } |
| `clusterDomain` | string | ClusterDomain — суффикс домена кластера Kubernetes, используемый для DNS-разрешения. | false | cluster.local |
| `upgradeChannel` | string | канал релизов указывает канал релизов для проверки обновлений мажорной версии.<br />Если не задано, будут предлагаться только минорные обновления. Допустимые значения: stable, lts или конкретная версия major.minor (например, 25.8). | false | |
| `versionProbeTemplate` | [VersionProbeTemplate](#versionprobetemplate) | VersionProbeTemplate — переопределения для задачи определения версии. | false | |
| `externalSecret` | [ExternalSecret](#externalsecret) | ExternalSecret — необязательная ссылка на управляемый извне Secret, содержащий секреты кластера.<br />Secret должен находиться в том же пространстве имён, что и кластер. | false | |
| `additionalPorts` | [AdditionalPort](#additionalport) array | AdditionalPorts объявляет дополнительные TCP-порты для открытия на поде ClickHouse и публичном headless Service.<br />Оператор только добавляет порты в ресурсы Kubernetes, но не настраивает сервер ClickHouse для прослушивания на них. | false | |

Встречается в:

* [ClickHouseCluster](#clickhousecluster)

<h2 id="clickhouseclusterstatus">
  ClickHouseClusterStatus
</h2>

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

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `conditions` | [Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#condition-v1-meta) массив | | false | |
| `readyReplicas` | integer | ReadyReplicas — общее количество реплик, готовых обслуживать запросы. | false | |
| `configurationRevision` | string | ConfigurationRevision указывает целевую ревизию конфигурации для каждой реплики. | true | |
| `statefulSetRevision` | string | StatefulSetRevision указывает целевую ревизию StatefulSet для каждой реплики. | true | |
| `currentRevision` | string | CurrentRevision указывает последнюю применённую ревизию спецификации ClickHouseCluster. | true | |
| `updateRevision` | string | UpdateRevision указывает последнюю запрошенную ревизию спецификации ClickHouseCluster. | true | |
| `observedGeneration` | integer | ObservedGeneration указывает последнее поколение, зафиксированное контроллером. | true | |
| `version` | string | Version указывает версию, указанную в образе контейнера. | false | |
| `versionProbeRevision` | string | VersionProbeRevision — хэш образа последней успешной проверки версии.<br />Когда он совпадает с текущим хэшем образа, кэшированная Version используется напрямую. | false | |

Встречается в:

* [ClickHouseCluster](#clickhousecluster)

<h2 id="clickhousenetworkpolicyspec">
  ClickHouseNetworkPolicySpec
</h2>

ClickHouseNetworkPolicySpec настраивает NetworkPolicy, которой управляет оператор для кластера ClickHouse.
Управляемая политика распространяется на внутренний трафик кластера:

* Связь между репликами
* Доступ оператора к кластеру
  Для любого другого входящего трафика, включая клиентские подключения и сбор метрик, требуются заданные пользователем NetworkPolicy.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `policy` | [NetworkPolicyPolicy](#networkpolicypolicy) | Политика определяет, управляет ли оператор NetworkPolicy, ограничивающей входящий трафик к подам кластера.<br />Если не задана, по умолчанию используется «Disabled». | false | Disabled |

Используется в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)

<h2 id="clickhousesettings">
  ClickHouseSettings
</h2>

ClickHouseSettings определяет параметры настройки сервера ClickHouse.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `defaultUserPassword` | [DefaultPasswordSelector](#defaultpasswordselector) | Указывает источник и тип пароля для пользователя `default` в ClickHouse. | false | |
| `logger` | [LoggerConfig](#loggerconfig) | Конфигурация логирования сервера ClickHouse. | false | |
| `tls` | [ClusterTLSSpec](#clustertlsspec) | Настройки TLS, позволяющие настроить защищенные конечные точки и проверку сертификатов для сервера ClickHouse. | false | |
| `encryption` | [EncryptionSettings](#encryptionsettings) | Шифрование: если задано, включает шифрование данных таблиц при хранении с помощью выделенной политики хранения.<br />Включается для каждой таблицы с помощью `SETTINGS storage_policy = '<policyName>'`. | false | |
| `enableDatabaseSync` | boolean | Включает синхронизацию баз данных ClickHouse с вновь созданными репликами и очистку устаревших реплик<br />после уменьшения числа реплик.<br />Поддерживаются только базы данных Replicated и базы данных интеграций. | false | true |
| `extraConfig` | [RawExtension](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#rawextension-runtime-pkg) | Дополнительная конфигурация ClickHouse, которая будет объединена с конфигурацией по умолчанию. | false | |
| `extraUsersConfig` | [RawExtension](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#rawextension-runtime-pkg) | Дополнительная конфигурация пользователей ClickHouse, которая будет объединена с конфигурацией по умолчанию. | false | |

Используется в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)

<h2 id="clustertlsspec">
  ClusterTLSSpec
</h2>

ClusterTLSSpec определяет настройки TLS для кластера.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `enabled` | boolean | Enabled указывает, включен ли TLS, и определяет, нужно ли открывать защищённые порты. | false | false |
| `required` | boolean | Required указывает, должен ли TLS быть обязательным для всех соединений. Отключает незащищённые порты. | false | false |
| `serverCertSecret` | [LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#localobjectreference-v1-core) | ServerCertSecret — ссылка на TLS Secret, содержащий сертификат сервера.<br />Ожидается, что Secret имеет ту же структуру, что и сертификаты, сгенерированные cert-manager,<br />при этом сертификат и приватный ключ хранятся под ключами "tls.crt" и "tls.key" соответственно. | false | |
| `caBundle` | [CABundleSelector](#cabundleselector) | CABundle — ссылка на ключ Secret, содержащий набор CA, используемый для проверки сертификатов peer.<br />Если значение пустое, используется системный набор доверенных сертификатов CA.<br />Если ключ не указан, по умолчанию используется "ca.crt". | false | |

Используется в:

* [ClickHouseSettings](#clickhousesettings)
* [KeeperSettings](#keepersettings)

<h2 id="configmapkeyselector">
  ConfigMapKeySelector
</h2>

ConfigMapKeySelector выбирает ключ в ConfigMap.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `name` | string | Имя ConfigMap в пространстве имен кластера, из которой выполняется выбор. | true | |
| `key` | string | Ключ ConfigMap, который нужно выбрать. Должен быть допустимым ключом. | true | |

Встречается в:

* [DefaultPasswordSelector](#defaultpasswordselector)

<h2 id="containerimage">
  ContainerImage
</h2>

ContainerImage задаёт образ контейнера с указанием repository, tag или hash.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `repository` | string | Имя реестра образа контейнера<br />Пример: docker.io/clickhouse/clickhouse | false | |
| `tag` | string | Тег образа контейнера; взаимоисключается с 'hash'.<br />Пример: 25.3 | false | |
| `hash` | string | Хэш образа контейнера; взаимоисключается с 'tag'. | false | |

Встречается в:

* [ContainerTemplateSpec](#containertemplatespec)

<h2 id="containertemplatespec">
  ContainerTemplateSpec
</h2>

ContainerTemplateSpec описывает переопределения конфигурации контейнеров кластера.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `image` | [ContainerImage](#containerimage) | `Image` — образ контейнера, который будет развернут. | true | |
| `imagePullPolicy` | [PullPolicy](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#pullpolicy-v1-core) | `ImagePullPolicy` для образа; по умолчанию используется `IfNotPresent`. | false | |
| `resources` | [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core) | `Resources` — требования к ресурсам для контейнера сервера.<br />Применяются как единое целое: значения оператора по умолчанию используются только тогда, когда все поля ресурсов пусты. | false | |
| `volumeMounts` | [VolumeMount](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#volumemount-v1-core) array | `VolumeMounts` — список монтирований томов для контейнера.<br />Конкатенируется с монтированиями, сгенерированными оператором. Записи с тем же `mountPath`, что и у монтирования<br />оператора, объединяются в projected volume. | false | |
| `env` | [EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core) array | `Env` — список переменных окружения, задаваемых в контейнере.<br />Объединяется со значениями оператора по умолчанию по имени. | false | |
| `securityContext` | [SecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core) | `SecurityContext` определяет параметры безопасности, с которыми должен запускаться контейнер.<br />Ненулевой `SecurityContext` полностью заменяет значения оператора по умолчанию; пользователь управляет<br />всей структурой целиком. Если значение `nil`, сохраняются значения оператора по умолчанию.<br />Подробнее: [https://kubernetes.io/docs/tasks/configure-pod-container/security-context/](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) | false | |
| `livenessProbe` | [Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#probe-v1-core) | `LivenessProbe` переопределяет стандартную проверку работоспособности оператора. | false | |
| `readinessProbe` | [Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#probe-v1-core) | `ReadinessProbe` переопределяет стандартную проверку готовности оператора. | false | |

Встречается в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)
* [KeeperClusterSpec](#keeperclusterspec)

<h2 id="defaultpasswordselector">
  DefaultPasswordSelector
</h2>

DefaultPasswordSelector задает источник пароля пользователя по умолчанию.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `passwordType` | string | Тип заданного пароля. Возможные значения см. в документации: [https://clickhouse.com/docs/operations/settings/settings-users#user-namepassword](https://clickhouse.com/docs/operations/settings/settings-users#user-namepassword) | true | password |
| `secret` | [SecretKeySelector](#secretkeyselector) | Выбор значения пароля из ключа Secret | false | |
| `configMap` | [ConfigMapKeySelector](#configmapkeyselector) | Выбор значения пароля из ключа ConfigMap | false | |

Используется в:

* [ClickHouseSettings](#clickhousesettings)

<h2 id="encryptionsettings">
  EncryptionSettings
</h2>

EncryptionSettings включает шифрование данных таблиц при хранении. Если этот параметр задан, оператор создает
зашифрованную политику хранения ClickHouse для каждого диска с данными; таблицы включают ее с помощью `SETTINGS storage_policy`.
После включения шифрование отключить нельзя.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `policyName` | string | PolicyName — имя созданной зашифрованной политики хранения. | false | encrypted |

Встречается в:

* [ClickHouseSettings](#clickhousesettings)

<h2 id="externalsecret">
  ExternalSecret
</h2>

ExternalSecret — это ссылка на Secret в том же пространстве имен.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `name` | string | Имя Secret. | true | |
| `policy` | [ExternalSecretPolicy](#externalsecretpolicy) | Политика определяет, как оператор обращается с содержимым секрета.<br />Observe (по умолчанию): блокирует реконсиляцию, если отсутствует любой обязательный ключ.<br />Manage: добавляет отсутствующие обязательные ключи в существующий секрет. | false | Observe |

Встречается в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)

<h2 id="externalsecretpolicy">
  ExternalSecretPolicy
</h2>

ExternalSecretPolicy определяет, как оператор обрабатывает содержимое внешнего Secret.

| Поле | Описание |
| - | - |
| `Observe` | ExternalSecretPolicyObserve — политика по умолчанию: оператор считывает и проверяет Secret;<br />реконсиляция блокируется, если отсутствует какой-либо обязательный ключ.<br />Отсутствующие обязательные ключи и ожидаемые для них форматы указываются через условие состояния ExternalSecretValid в процессе работы.<br /> |
| `Manage` | ExternalSecretPolicyManage — политика, при которой оператор добавляет недостающие обязательные ключи, генерируя<br />для них значения. Secret обновляется, но оператор никогда не становится его владельцем и не удаляет его.<br /> |

Встречается в:

* [ExternalSecret](#externalsecret)

<h2 id="keepercluster">
  KeeperCluster
</h2>

KeeperCluster — это схема для API `keeperclusters`.

<h3 id="keepercluster-api-version-and-kind">
  Версия API и kind
</h3>

```yaml theme={null}
apiVersion: clickhouse.com/v1alpha1
kind: KeeperCluster
```

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `spec` | [KeeperClusterSpec](#keeperclusterspec) | | true | |
| `status` | [KeeperClusterStatus](#keeperclusterstatus) | | true | |

Встречается в:

* [KeeperClusterList](#keeperclusterlist)

<h2 id="keeperclusterlist">
  KeeperClusterList
</h2>

KeeperClusterList содержит список KeeperCluster.

<h3 id="keeperclusterlist-api-version-and-kind">
  Версия API и Kind
</h3>

```yaml theme={null}
apiVersion: clickhouse.com/v1alpha1
kind: KeeperClusterList
```

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `items` | массив [KeeperCluster](#keepercluster) | | true | |

<h2 id="keeperclusterreference">
  KeeperClusterReference
</h2>

KeeperClusterReference указывает на KeeperCluster, используемый в ClickHouseCluster.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `name` | string | Имя ресурса KeeperCluster. | true | |
| `namespace` | string | Пространство имен ресурса KeeperCluster.<br />Если не указано, используется пространство имен ClickHouseCluster. | false | |

Встречается в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)

<h2 id="keeperclusterspec">
  KeeperClusterSpec
</h2>

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

| Поле | Тип | Описание | Обязательное | По умолчанию |
| - | - | - | - | - |
| `replicas` | integer | Количество реплик в кластере | false | 3 |
| `podTemplate` | [PodTemplateSpec](#podtemplatespec) | Параметры, передаваемые в спецификацию пода Keeper. | false | |
| `containerTemplate` | [ContainerTemplateSpec](#containertemplatespec) | Параметры, передаваемые в спецификацию контейнера Keeper. | false | |
| `dataVolumeClaimSpec` | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaimspec-v1-core) | Спецификация постоянного хранилища для данных ClickHouse Keeper. | false | |
| `labels` | object (keys:string, values:string) | Дополнительные метки, добавляемые к ресурсам. | false | |
| `annotations` | object (keys:string, values:string) | Дополнительные annotations, добавляемые к ресурсам. | false | |
| `podDisruptionBudget` | [PodDisruptionBudgetSpec](#poddisruptionbudgetspec) | PodDisruptionBudget настраивает PDB, создаваемый для кластера Keeper.<br />Если не задан, оператор по умолчанию использует maxUnavailable=replicas/2<br />(сохраняя кворум для кластера 2F+1); для кластеров с одной репликой используется maxUnavailable=1. | false | |
| `networkPolicy` | [KeeperNetworkPolicySpec](#keepernetworkpolicyspec) | NetworkPolicy настраивает NetworkPolicy, управляемую для кластера Keeper. | false | |
| `settings` | [KeeperSettings](#keepersettings) | Параметры конфигурации для сервера ClickHouse Keeper. | false | |
| `clusterDomain` | string | ClusterDomain — это суффикс домена кластера Kubernetes, используемый для DNS-разрешения. | false | cluster.local |
| `upgradeChannel` | string | канал релизов задаёт канал релизов для проверки обновлений мажорной версии.<br />Если значение пустое, будут предлагаться только минорные обновления. Допустимые значения: stable, lts или конкретная версия major.minor (например, 25.8). | false | |
| `versionProbeTemplate` | [VersionProbeTemplate](#versionprobetemplate) | Переопределения VersionProbeTemplate для задачи определения версии.<br />Устарело: задачи проверки версии Keeper не используются; это поле сохранено для обратной совместимости. | false | |

Встречается в:

* [KeeperCluster](#keepercluster)

<h2 id="keeperclusterstatus">
  KeeperClusterStatus
</h2>

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

| Поле | Тип | Описание | Обязательное | По умолчанию |
| - | - | - | - | - |
| `conditions` | [Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#condition-v1-meta) массив | | false | |
| `readyReplicas` | integer | ReadyReplicas — общее число реплик, готовых обслуживать запросы. | false | |
| `configurationRevision` | string | ConfigurationRevision указывает целевую ревизию конфигурации для каждой реплики. | true | |
| `statefulSetRevision` | string | StatefulSetRevision указывает целевую ревизию StatefulSet для каждой реплики. | true | |
| `currentRevision` | string | CurrentRevision указывает последнюю применённую ревизию спецификации KeeperCluster. | true | |
| `updateRevision` | string | UpdateRevision указывает последнюю запрошенную ревизию спецификации KeeperCluster. | true | |
| `observedGeneration` | integer | ObservedGeneration указывает последнее поколение, зафиксированное контроллером. | true | |
| `version` | string | Version указывает версию, о которой сообщает Keeper server. | false | |
| `versionProbeRevision` | string | VersionProbeRevision — хэш образа последней успешной проверки версии.<br />Устарело: задачи проверки версии Keeper не используются; это поле сохранено для обратной совместимости. | false | |

Встречается в:

* [KeeperCluster](#keepercluster)

<h2 id="keepernetworkpolicyspec">
  KeeperNetworkPolicySpec
</h2>

KeeperNetworkPolicySpec настраивает NetworkPolicy, управляемую для кластера Keeper.
Управляемая политика распространяется на внутрикластерный трафик:

* Связь между репликами
* Доступ оператора к кластеру
* Доступ из кластеров ClickHouse, ссылающихся на этот кластер Keeper
  Для любого другого входящего трафика, включая сбор метрик, требуются определяемые пользователем NetworkPolicy.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `policy` | [NetworkPolicyPolicy](#networkpolicypolicy) | Политика определяет, управляет ли оператор NetworkPolicy, ограничивающей входящий трафик к подам Keeper.<br />Если параметр не задан, по умолчанию используется «Disabled». | false | Disabled |

Встречается в:

* [KeeperClusterSpec](#keeperclusterspec)

<h2 id="keepersettings">
  KeeperSettings
</h2>

KeeperSettings определяет конфигурацию сервера ClickHouse Keeper.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `logger` | [LoggerConfig](#loggerconfig) | Конфигурация логирования сервера ClickHouse Keeper. | false | |
| `tls` | [ClusterTLSSpec](#clustertlsspec) | Настройки TLS, позволяющие настроить защищённые конечные точки и проверку сертификатов для сервера ClickHouse Keeper. | false | |
| `extraConfig` | [RawExtension](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#rawextension-runtime-pkg) | Дополнительная конфигурация ClickHouse Keeper, которая будет объединена с конфигурацией по умолчанию. | false | |

Встречается в:

* [KeeperClusterSpec](#keeperclusterspec)

<h2 id="loggerconfig">
  LoggerConfig
</h2>

LoggerConfig задаёт конфигурацию логирования сервера.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `logToFile` | boolean | Если false, отключает запись журналов в файл. | false | true |
| `jsonLogs` | boolean | Если true, журналы записываются в формате JSON. | false | false |
| `level` | string | Уровень детализации логгера сервера. | false | trace |
| `size` | string | Максимальный размер файла журнала. | false | 1000M |
| `count` | integer | Максимальное количество сохраняемых файлов журнала. | false | 50 |

Встречается в:

* [ClickHouseSettings](#clickhousesettings)
* [KeeperSettings](#keepersettings)

<h2 id="namedtemplatemeta">
  NamedTemplateMeta
</h2>

NamedTemplateMeta определяет поддерживаемые параметры метаданных для объектов шаблона, которым требуется имя.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `name` | string | Имя — это идентификатор ресурса. | true | |
| `labels` | object (keys:string, values:string) | Метки, применяемые к объектам шаблона. | false | |
| `annotations` | object (keys:string, values:string) | annotations, применяемые к объектам шаблона. | false | |

Используется в:

* [PersistentVolumeClaimTemplate](#persistentvolumeclaimtemplate)

<h2 id="networkpolicypolicy">
  NetworkPolicyPolicy
</h2>

NetworkPolicyPolicy определяет, управляет ли оператор ресурсом NetworkPolicy для кластера.

| Поле | Описание |
| - | - |
| `Enabled` | NetworkPolicyEnabled указывает оператору управлять ресурсом NetworkPolicy, ограничивающим входящий трафик к подам кластера.<br /> |
| `Disabled` | NetworkPolicyDisabled отключает управляемый NetworkPolicy; оператор удаляет его при наличии.<br /> |

Используется в:

* [ClickHouseNetworkPolicySpec](#clickhousenetworkpolicyspec)
* [KeeperNetworkPolicySpec](#keepernetworkpolicyspec)

<h2 id="pdbpolicy">
  PDBPolicy
</h2>

PDBPolicy определяет, будут ли создаваться объекты PodDisruptionBudget.

| Поле | Описание |
| - | - |
| `Enabled` | PDBPolicyEnabled включает создание объектов PodDisruptionBudget оператором.<br /> |
| `Disabled` | PDBPolicyDisabled отключает объекты PodDisruptionBudget; оператор удалит ресурс с соответствующими метками.<br /> |
| `Ignored` | PDBPolicyIgnored игнорирует объекты PodDisruptionBudget; оператор не будет создавать или удалять PDB, а существующие PDB останутся без изменений.<br /> |

Встречается в:

* [PodDisruptionBudgetSpec](#poddisruptionbudgetspec)

<h2 id="persistentvolumeclaimtemplate">
  PersistentVolumeClaimTemplate
</h2>

PersistentVolumeClaimTemplate — это именованный шаблон для PersistentVolumeClaim для каждой реплики.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `metadata` | [NamedTemplateMeta](#namedtemplatemeta) | См. документацию Kubernetes API по полям `metadata`. | true | |
| `spec` | [PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaimspec-v1-core) | `spec` определяет требуемые характеристики тома, запрашиваемого автором пода.<br />Дополнительная информация: [https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims) | true | |

Встречается в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)

<h2 id="poddisruptionbudgetspec">
  PodDisruptionBudgetSpec
</h2>

PodDisruptionBudgetSpec настраивает PDB, создаваемый для кластера.
Можно задать только один из параметров: MinAvailable или MaxUnavailable.
Если не задан ни один из них, оператор выбирает безопасное значение по умолчанию на основе количества реплик.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `policy` | [PDBPolicy](#pdbpolicy) | Политика определяет, будет ли оператор создавать PodDisruptionBudget.<br />Если значение не задано, по умолчанию используется "Enabled". Установите "Disabled", чтобы не создавать PDB (например, в средах разработки). | false | Enabled |
| `minAvailable` | [IntOrString](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#intorstring-intstr-util) | MinAvailable — минимальное количество подов, которые должны оставаться доступными при нарушении работы. | false | |
| `maxUnavailable` | [IntOrString](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#intorstring-intstr-util) | MaxUnavailable — максимальное количество подов, которые могут быть недоступны при нарушении работы. | false | |
| `unhealthyPodEvictionPolicy` | [UnhealthyPodEvictionPolicyType](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#unhealthypodevictionpolicytype-v1-policy) | UnhealthyPodEvictionPolicy определяет критерии, по которым неработоспособные поды<br />следует рассматривать для выселения.<br />Допустимые значения: "IfReady" и "AlwaysAllow". | false | |

Встречается в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)
* [KeeperClusterSpec](#keeperclusterspec)

<h2 id="podtemplatespec">
  PodTemplateSpec
</h2>

PodTemplateSpec описывает переопределения конфигурации подов кластера.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `terminationGracePeriodSeconds` | целое число | Необязательная длительность в секундах, необходимая поду для корректного завершения работы. Может быть уменьшена в запросе на удаление.<br />Значение должно быть неотрицательным целым числом. Значение 0 означает немедленную остановку с помощью<br />сигнала kill (без возможности штатного завершения работы).<br />Если это значение равно nil, вместо него будет использоваться период ожидания по умолчанию.<br />Период ожидания — это длительность в секундах между отправкой процессам, выполняющимся в поде,<br />сигнала завершения и моментом, когда процессы будут принудительно остановлены сигналом kill.<br />Установите это значение больше ожидаемого времени очистки для процесса.<br />По умолчанию — 30 секунд. | false | |
| `topologySpreadConstraints` | [TopologySpreadConstraint](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#topologyspreadconstraint-v1-core) массив | TopologySpreadConstraints описывает, как группа подов должна быть распределена между доменами<br />топологии. Планировщик будет размещать поды в соответствии с этими ограничениями.<br />Все topologySpreadConstraints объединяются логическим И.<br />Объединяется со значениями по умолчанию оператора по `topologyKey`. | false | |
| `imagePullSecrets` | [LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#localobjectreference-v1-core) массив | ImagePullSecrets — это необязательный список ссылок на секреты в том же пространстве имен, используемый для загрузки любых образов, применяемых в этом PodSpec.<br />Если указано, эти секреты будут переданы отдельным реализациям загрузки для использования.<br />Подробнее: [https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod](https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod)<br />Объединяется со значениями оператора по умолчанию по имени. | false | |
| `nodeSelector` | объект (ключи:string, значения:string) | NodeSelector — это селектор, условия которого должны выполняться, чтобы под можно было разместить на узле.<br />Селектор, который должен соответствовать меткам узла, чтобы под был назначен на этот узел.<br />Подробнее: [https://kubernetes.io/docs/concepts/configuration/assign-pod-node/](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/) | false | |
| `affinity` | [Аффинность](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#affinity-v1-core) | Если указано, задаёт ограничения на планирование пода.<br />Добавляется к значениям по умолчанию оператора: списки условий планирования объединяются. | false | |
| `tolerations` | [Toleration](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core) массив | Если указано, задает допуски пода. | false | |
| `schedulerName` | string | Если указано, для пода будет использоваться указанный планировщик.<br />Если не указано, для пода будет использоваться планировщик по умолчанию. | false | |
| `serviceAccountName` | string | ServiceAccountName — это имя ServiceAccount, используемое для запуска этого пода.<br />Подробнее: [https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) | false | |
| `priorityClassName` | string | PriorityClassName — имя PriorityClass, используемого для пода. | false | |
| `runtimeClassName` | string | RuntimeClassName — имя RuntimeClass, используемого для пода. | false | |
| `volumes` | массив [Volume](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#volume-v1-core) | Volumes определяет список томов, которые могут быть смонтированы в контейнерах, входящих в под.<br />Подробнее: [https://kubernetes.io/docs/concepts/storage/volumes](https://kubernetes.io/docs/concepts/storage/volumes)<br />Объединяется с томами оператора по имени; пользовательский том заменяет любой том оператора с тем же именем. | false | |
| `securityContext` | [PodSecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podsecuritycontext-v1-core) | SecurityContext содержит атрибуты безопасности на уровне пода и общие настройки контейнеров.<br />Если SecurityContext не равен nil, он полностью заменяет значения по умолчанию, заданные оператором; пользователь отвечает за всю<br />структуру целиком. Если значение равно nil, сохраняются значения по умолчанию оператора. | false | |
| `topologyZoneKey` | string | TopologyZoneKey — это ключ меток узлов.<br />Узлы с меткой с этим ключом и одинаковыми значениями считаются находящимися в одном и том же топологическом домене,<br />например, в одной и той же зоне доступности для "topology.kubernetes.io/zone" или на одном и том же узле для "kubernetes.io/hostname".<br />Укажите его, чтобы равномерно распределить поды, содержащие одни и те же данные (реплики одного сегмента для ClickHouse, все реплики для Keeper),<br />по доменам: обязательное ограничение TopologySpreadConstraint (maxSkew 1, DoNotSchedule) и предпочтительное правило PodAntiAffinity.<br />Поды разных сегментов могут находиться в одном домене, поэтому допускается несколько подов в одном домене.<br />Если доменов меньше, чем реплик, несколько реплик будут находиться в одном домене, но распределение всё равно останется равномерным.<br />Поды ClickHouse также предпочитают домены, в которых размещены используемые ими поды Keeper.<br />Рекомендуется установить значение "topology.kubernetes.io/zone". | false | |
| `topologyMinDomains` | целое число | TopologyMinDomains задаёт поле minDomains в ограничении TopologySpreadConstraint, генерируемом на основе TopologyZoneKey.<br />Планировщик Kubernetes учитывает в качестве топологических доменов только те зоны, в которых уже есть подходящие узлы.<br />При использовании автомасштабировщиков, работающих по запросу (например, Karpenter, Cluster Autoscaler), это означает, что если на момент планирования<br />узлы существуют только в двух зонах доступности, ограничение maxSkew:1/DoNotSchedule считается выполненным при<br />распределении 2/1, и автомасштабировщик так и не создаст узел в третьей зоне доступности.<br />Если задать TopologyMinDomains равным ожидаемому количеству зон (обычно 3), планировщик будет<br />рассматривать такое количество зон как домены независимо от того, есть ли узлы во всех из них, что вынудит<br />автомасштабировщик создать узел в отсутствующей зоне.<br />Требует, чтобы был задан TopologyZoneKey. Не указывайте (nil), чтобы сохранить поведение по умолчанию,<br />при котором планировщик учитывает только зоны с уже существующими подходящими узлами. | false | |
| `nodeHostnameKey` | string | NodeHostnameKey — это ключ меток узла.<br />Узлы с меткой с этим ключом и одинаковыми значениями считаются находящимися на одном и том же узле.<br />Задайте его, чтобы обеспечить эксклюзивное размещение на узлах: обязательное правило PodAntiAffinity для всех подов кластера,<br />не более одного пода на узел независимо от сегмента. Для этого требуется как минимум столько же узлов, сколько подов;<br />если узлов меньше, лишние поды останутся в состоянии Pending.<br />Чтобы распределять реплики одного и того же сегмента по узлам, при этом размещая несколько подов на одном узле,<br />вместо этого задайте TopologyZoneKey значение "kubernetes.io/hostname".<br />Рекомендуется установить значение "kubernetes.io/hostname". | false | |
| `initContainers` | массив [Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#container-v1-core) | InitContainers — это список init-контейнеров, запускаемых до запуска основного контейнера сервера.<br />Объединяется со значениями по умолчанию оператора по имени.<br />для контейнеров с тем же именем. | false | |

Встречается в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)
* [KeeperClusterSpec](#keeperclusterspec)

<h2 id="secretkeyselector">
  SecretKeySelector
</h2>

SecretKeySelector выбирает ключ объекта Secret.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `name` | string | Имя Secret в пространстве имен кластера, из которого выбирается значение. | true | |
| `key` | string | Ключ Secret, который нужно выбрать. Должен быть допустимым ключом Secret. | true | |

Встречается в:

* [DefaultPasswordSelector](#defaultpasswordselector)

<h2 id="templatemeta">
  TemplateMeta
</h2>

TemplateMeta определяет поддерживаемые параметры метаданных для объектов шаблона.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `labels` | object (keys:string, values:string) | Метки, применяемые к объектам шаблона. | false | |
| `annotations` | object (keys:string, values:string) | annotations, применяемые к объектам шаблона. | false | |

Используется в:

* [VersionProbePodTemplate](#versionprobepodtemplate)
* [VersionProbeTemplate](#versionprobetemplate)

<h2 id="versionprobecontainer">
  VersionProbeContainer
</h2>

VersionProbeContainer задаёт переопределения для проверки версии на уровне контейнера.
Имена полей и JSON-теги соответствуют corev1.Container, чтобы SMP выполнял слияние по имени.

| Поле | Тип | Описание | Обязательное | По умолчанию |
| - | - | - | - | - |
| `name` | string | Имя контейнера. Если поле пустое, оператор задаёт имя контейнера проверки версии. | true | version-probe |
| `resources` | [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core) | Ресурсы, необходимые контейнеру проверки версии для вычислений.<br />Объединяются со значениями оператора по умолчанию через глубокое слияние SMP. | false | |
| `securityContext` | [SecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core) | SecurityContext определяет параметры безопасности для контейнера проверки версии.<br />Объединяется со значениями оператора по умолчанию через глубокое слияние SMP. | false | |

Встречается в:

* [VersionProbePodSpec](#versionprobepodspec)

<h2 id="versionprobejobspec">
  VersionProbeJobSpec
</h2>

VersionProbeJobSpec задаёт переопределения на уровне задачи для проверки версии.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `ttlSecondsAfterFinished` | integer | TTLSecondsAfterFinished ограничивает время существования завершённой задачи. | false | |
| `template` | [VersionProbePodTemplate](#versionprobepodtemplate) | Шаблон описывает под, который будет создан для задачи проверки версии. | false | |

Встречается в:

* [VersionProbeTemplate](#versionprobetemplate)

<h2 id="versionprobepodspec">
  VersionProbePodSpec
</h2>

VersionProbePodSpec задаёт переопределения на уровне пода для проверки версии.
Имена полей и JSON-теги соответствуют corev1.PodSpec для совместимости со strategic merge patch.

| Поле | Тип | Описание | Обязательное | По умолчанию |
| - | - | - | - | - |
| `nodeSelector` | object (keys:string, values:string) | NodeSelector ограничивает запуск пода проверки версии узлами с соответствующими метками. | false | |
| `tolerations` | [Toleration](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core) array | Tolerations для пода проверки версии. | false | |
| `securityContext` | [PodSecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podsecuritycontext-v1-core) | SecurityContext содержит атрибуты безопасности на уровне пода для пода проверки версии. | false | |
| `containers` | [VersionProbeContainer](#versionprobecontainer) array | Переопределения контейнеров для пода проверки версии.<br />Поле name необязательно — оператор заполняет его именем контейнера по умолчанию.<br />Также можно указать дополнительный контейнер с другим именем. | false | |

Используется в:

* [VersionProbePodTemplate](#versionprobepodtemplate)

<h2 id="versionprobepodtemplate">
  VersionProbePodTemplate
</h2>

VersionProbePodTemplate описывает переопределения для пода проверки версии.

| Поле | Тип | Описание | Обязательно | По умолчанию |
| - | - | - | - | - |
| `metadata` | [TemplateMeta](#templatemeta) | Описание полей `metadata` см. в документации Kubernetes API. | false | |
| `spec` | [VersionProbePodSpec](#versionprobepodspec) | Спецификация требуемого поведения пода проверки версии. | false | |

Встречается в:

* [VersionProbeJobSpec](#versionprobejobspec)

<h2 id="versionprobetemplate">
  VersionProbeTemplate
</h2>

VersionProbeTemplate задает переопределения для задачи определения версии.
Структура повторяет batchv1.JobTemplateSpec и содержит только поддерживаемые поля.

| Поле | Тип | Описание | Обязательное | По умолчанию |
| - | - | - | - | - |
| `metadata` | [TemplateMeta](#templatemeta) | Описание полей `metadata` см. в документации Kubernetes API. | false | |
| `spec` | [VersionProbeJobSpec](#versionprobejobspec) | Спецификация требуемого поведения задачи проверки версии. | false | |

Встречается в:

* [ClickHouseClusterSpec](#clickhouseclusterspec)
* [KeeperClusterSpec](#keeperclusterspec)
