Вы просматриваете документацию для Cozystack v1.5. Документация последней версии доступна по ссылке: v1.6.

Управляемый сервис ClickHouse

ClickHouse — высокопроизводительная колоночная система управления базами данных (СУБД) с открытым исходным кодом и поддержкой SQL. Она используется для оперативной аналитической обработки (OLAP).

Оркестрация резервного копирования

Чарт поддерживает два варианта резервного копирования; для каждого Helm-релиза выберите один из них.

Рекомендуемый вариант: BackupClass + Plan со стратегией Altinity

Стратегия Altinity уровня кластера (strategy.backups.cozystack.io/v1alpha1) запускает утилиту Altinity clickhouse-backup в отдельном разовом задании batch/v1.Job для каждого BackupJob / RestoreJob. Она учитывает особенности движка (FREEZE + выгрузка), поддерживает как восстановление на месте, так и восстановление в копию с targetApplicationRef, и не требует встроенного в чарт CronJob.

Настройка каждого Helm-релиза:

  1. Задайте backup.enabled: true, а также поля s3* (или s3CredentialsSecret.name) в значениях чарта. Чарт создает Secret с именем <release>-backup-s3, содержащий параметры подключения к бакету и учетные данные. Этот Secret используется создаваемым чартом sidecar-контейнером clickhouse-backup (он добавляется в под ClickHouseInstallation с помощью templates/clickhouse.yaml); сам под стратегии представляет собой клиент curl/jq, который обращается к HTTP API sidecar-контейнера на порту 7171 и никогда не считывает Secret напрямую.
  2. Администратор кластера однократно устанавливает стратегию Altinity и BackupClass, который связывает apps.cozystack.io/ClickHouse с этой стратегией (см. examples/backups/clickhouse/01-create-strategy.sh и 02-create-backupclass.sh).
  3. Tenant создает Plan (расписание cron) или отправляет разовый BackupJob, ссылающийся на BackupClass. Восстановление выполняется с помощью RestoreJob, который ссылается на полученный Backup: не задавайте targetApplicationRef при восстановлении на месте, а для восстановления в копию укажите в нем ссылку на второй экземпляр ClickHouse.

Использование собственного Secret с учетными данными S3

Если задать backup.s3CredentialsSecret.name, чарт не создает <release>-backup-s3, а sidecar-контейнер вместо него использует указанный Secret. Secret должен содержать пять полей S3 в виде отдельных строковых ключей, а не JSON-объекта; по умолчанию используются имена bucketName / endpoint / region / accessKey / secretKey, которые можно переопределить с помощью backup.s3CredentialsSecret.{bucketKey,endpointKey,…}.

Пример:

apiVersion: v1
kind: Secret
metadata:
  name: my-s3-creds
  namespace: tenant-test
type: Opaque
stringData:
  bucketName: my-clickhouse-archive
  endpoint:   https://s3.example.org
  region:     us-east-1
  accessKey:  AKIAIOSFODNN7EXAMPLE
  secretKey:  wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
---
# В values.yaml ClickHouse:
backup:
  enabled: true
  s3CredentialsSecret:
    name: my-s3-creds

Secret приложения Cozystack Bucket (bucket-<name>-<user>) с единственным ключом BucketInfo, содержащим JSON-объект, нельзя напрямую использовать как s3CredentialsSecret. Либо передайте чарту исходные значения через backup.s3* (как это сделано в examples/backups/clickhouse/03-create-bucket.sh: извлеките параметры подключения из BucketInfo и передайте их в значения чарта), либо создайте промежуточный Secret с пятью указанными выше строковыми ключами.

Устаревший вариант: Restic CronJob, создаваемый чартом

Чарт по-прежнему включает CronJob, который для каждой таблицы потоково передает результаты SHOW CREATE TABLE

  • SELECT * FORMAT TabSeparated в репозиторий Restic. Этот вариант сохранен для обратной совместимости; в новых установках используйте описанный выше сценарий с BackupClass.

Чтобы включить этот вариант:

  1. Задайте backup.enabled: true, backup.schedule: "0 2 * * *" (или другое непустое расписание cron), backup.s3* и backup.resticPassword.

  2. Чтобы восстановить данные вручную:

    restic -r s3:s3.example.org/clickhouse-backups/table_name snapshots
    restic -r s3:s3.example.org/clickhouse-backups/table_name restore latest --target /tmp/
    

    Подробнее см. в статье Restic: эффективное резервное копирование из stdin.

Прежние значения backup.schedule, backup.cleanupStrategy и backup.resticPassword объявлены устаревшими и будут удалены после того, как стратегия Altinity станет вариантом по умолчанию во всех эталонных развертываниях. Создаваемый чартом CronJob формируется только при непустом значении backup.schedule.

Параметр storageClass помечен в схеме чарта как неизменяемый. Описание контракта и список компонентов, обеспечивающих его соблюдение, приведены в docs/storage-immutability.md.

Параметры

Общие параметры

ИмяОписаниеТипЗначение
replicasКоличество реплик ClickHouse.int2
shardsКоличество шардов ClickHouse.int1
resourcesЯвная конфигурация CPU и памяти для каждой реплики ClickHouse. Если параметр не задан, применяется пресет, указанный в resourcesPreset.object{}
resources.cpuCPU, доступный каждой реплике.quantity""
resources.memoryПамять (RAM), доступная каждой реплике.quantity""
resourcesPresetПресет ресурсов по умолчанию, используемый, если параметр resources не задан.stringt1.small
sizeРазмер PVC для данных приложения.quantity10Gi
storageClassStorageClass для хранения данных.string""

Параметры приложения

ИмяОписаниеТипЗначение
logStorageSizeРазмер постоянного тома для журналов.quantity2Gi
logTTLTTL (срок хранения) для query_log и query_thread_log.int15
usersКарта конфигурации пользователей.map[string]object{}
users[name].passwordПароль пользователя.string""
users[name].readonlyДоступ пользователя только для чтения (по умолчанию: false).boolfalse

Параметры резервного копирования

ИмяОписаниеТипЗначение
backupКонфигурация резервного копирования.object{}
backup.enabledВключить интеграцию резервного копирования. Чарт создает Secret <release>-backup-s3, используемый стратегией резервного копирования Altinity, а при непустом schedule также формирует устаревший CronJob под управлением чарта.boolfalse
backup.useSystemBucketНеобязательная возможность: при значении true чарт не создает Secret <release>-backup-s3, а sidecar-контейнер clickhouse-backup считывает параметры подключения к бакету и учетные данные S3 из предоставляемого платформой Secret cozy-backups-creds. Для изоляции tenants друг от друга S3_PATH получает значение <namespace>/<release>. Используйте вместе с платформенным cozy-default BackupClass; tenants не нужно заполнять поля s3* ниже.boolfalse
backup.s3RegionУСТАРЕЛО. От конфигурации S3 для отдельных tenants постепенно отказываются в пользу управляемого платформой cozy-default BackupClass. Теперь параметр необязателен, поэтому tenants с useSystemBucket: true могут его не указывать.stringus-east-1
backup.s3BucketУСТАРЕЛО. Необязательно; см. s3Region.strings3.example.org/clickhouse-backups
backup.endpointУСТАРЕЛО. URL эндпоинта S3 для прежнего sidecar-контейнера, создаваемого чартом.string""
backup.s3PathOverrideУСТАРЕЛО. Префикс ключей объектов внутри прежнего s3Bucket; в новом платформенном сценарии с BackupClass область действия автоматически ограничивается namespace.string""
backup.scheduleПрежний параметр. Расписание cron для создаваемого чартом CronJob, который выполняет резервное копирование: дамп + Restic. Пустое значение (по умолчанию) отключает прежний CronJob; это рекомендуется, если BackupClass + Plan из backups.cozystack.io уже управляют оркестрацией резервного копирования с помощью стратегии Altinity.string""
backup.cleanupStrategyПрежний параметр. Политика хранения Restic, передаваемая прежнему CronJob (restic forget …). Не используется стратегией Altinity.string--keep-last=3 --keep-daily=3 --keep-within-weekly=1m
backup.s3AccessKeyУСТАРЕЛО. Tenants больше не предоставляют ключи S3; источником достоверных данных служит Secret бакета под управлением платформы. Теперь параметр необязателен, поэтому tenants с useSystemBucket: true могут его не указывать.string<your-access-key>
backup.s3SecretKeyУСТАРЕЛО. Необязательно; см. s3AccessKey.string<your-secret-key>
backup.resticPasswordПрежний параметр. Пароль для шифрования резервных копий Restic, используемый прежним CronJob. Не используется стратегией Altinity.string<password>
backup.s3CredentialsSecretУСТАРЕЛО. Ссылка на существующий Secret для прежнего sidecar-контейнера, создаваемого чартом. Вместо него платформенный механизм предоставляет cozy-backups-creds.object{}
backup.s3CredentialsSecret.nameИмя Secret в namespace приложения. Пустое значение означает, что чарт создает <release>-backup-s3 из прежних полей s3*.string""
backup.s3CredentialsSecret.bucketKeyКлюч в Secret, содержащий имя бакета. По умолчанию используется bucketName.string""
backup.s3CredentialsSecret.endpointKeyКлюч в Secret, содержащий URL эндпоинта S3. По умолчанию используется endpoint.string""
backup.s3CredentialsSecret.regionKeyКлюч в Secret, содержащий регион S3. По умолчанию используется region.string""
backup.s3CredentialsSecret.accessKeyIDKeyКлюч в Secret, содержащий идентификатор ключа доступа. По умолчанию используется accessKey.string""
backup.s3CredentialsSecret.secretAccessKeyKeyКлюч в Secret, содержащий секретный ключ доступа. По умолчанию используется secretKey.string""

Параметры ClickHouse Keeper

ИмяОписаниеТипЗначение
clickhouseKeeperКонфигурация ClickHouse Keeper.object{}
clickhouseKeeper.enabledРазвернуть ClickHouse Keeper для координации кластера.booltrue
clickhouseKeeper.sizeРазмер PVC для данных приложения.quantity1Gi
clickhouseKeeper.resourcesPresetПресет размера по умолчанию.stringt1.micro
clickhouseKeeper.replicasКоличество реплик Keeper.int3

Примеры параметров и справочник

resources и resourcesPreset

resources задает явную конфигурацию CPU и памяти для каждой реплики. Если оставить параметр пустым, применяется пресет, указанный в resourcesPreset.

resources:
  cpu: 4000m
  memory: 4Gi

resourcesPreset задает именованную конфигурацию ресурсов CPU и памяти для каждой реплики. Этот параметр игнорируется, если задано соответствующее значение resources.

Имя пресетаCPUпамять
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi
Last modified 2026-07-19: temp (52ed192)