Вы просматриваете документацию для 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-релиза:
- Задайте
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 напрямую. - Администратор кластера однократно устанавливает стратегию
AltinityиBackupClass, который связываетapps.cozystack.io/ClickHouseс этой стратегией (см.examples/backups/clickhouse/01-create-strategy.shи02-create-backupclass.sh). - 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.
Чтобы включить этот вариант:
Задайте
backup.enabled: true,backup.schedule: "0 2 * * *"(или другое непустое расписание cron),backup.s3*иbackup.resticPassword.Чтобы восстановить данные вручную:
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. | int | 2 |
shards | Количество шардов ClickHouse. | int | 1 |
resources | Явная конфигурация CPU и памяти для каждой реплики ClickHouse. Если параметр не задан, применяется пресет, указанный в resourcesPreset. | object | {} |
resources.cpu | CPU, доступный каждой реплике. | quantity | "" |
resources.memory | Память (RAM), доступная каждой реплике. | quantity | "" |
resourcesPreset | Пресет ресурсов по умолчанию, используемый, если параметр resources не задан. | string | t1.small |
size | Размер PVC для данных приложения. | quantity | 10Gi |
storageClass | StorageClass для хранения данных. | string | "" |
Параметры приложения
| Имя | Описание | Тип | Значение |
|---|---|---|---|
logStorageSize | Размер постоянного тома для журналов. | quantity | 2Gi |
logTTL | TTL (срок хранения) для query_log и query_thread_log. | int | 15 |
users | Карта конфигурации пользователей. | map[string]object | {} |
users[name].password | Пароль пользователя. | string | "" |
users[name].readonly | Доступ пользователя только для чтения (по умолчанию: false). | bool | false |
Параметры резервного копирования
| Имя | Описание | Тип | Значение |
|---|---|---|---|
backup | Конфигурация резервного копирования. | object | {} |
backup.enabled | Включить интеграцию резервного копирования. Чарт создает Secret <release>-backup-s3, используемый стратегией резервного копирования Altinity, а при непустом schedule также формирует устаревший CronJob под управлением чарта. | bool | false |
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* ниже. | bool | false |
backup.s3Region | УСТАРЕЛО. От конфигурации S3 для отдельных tenants постепенно отказываются в пользу управляемого платформой cozy-default BackupClass. Теперь параметр необязателен, поэтому tenants с useSystemBucket: true могут его не указывать. | string | us-east-1 |
backup.s3Bucket | УСТАРЕЛО. Необязательно; см. s3Region. | string | s3.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 для координации кластера. | bool | true |
clickhouseKeeper.size | Размер PVC для данных приложения. | quantity | 1Gi |
clickhouseKeeper.resourcesPreset | Пресет размера по умолчанию. | string | t1.micro |
clickhouseKeeper.replicas | Количество реплик Keeper. | int | 3 |
Примеры параметров и справочник
resources и resourcesPreset
resources задает явную конфигурацию CPU и памяти для каждой реплики.
Если оставить параметр пустым, применяется пресет, указанный в resourcesPreset.
resources:
cpu: 4000m
memory: 4Gi
resourcesPreset задает именованную конфигурацию ресурсов CPU и памяти для каждой реплики.
Этот параметр игнорируется, если задано соответствующее значение resources.
| Имя пресета | CPU | память |
|---|---|---|
nano | 250m | 128Mi |
micro | 500m | 256Mi |
small | 1 | 512Mi |
medium | 1 | 1Gi |
large | 2 | 2Gi |
xlarge | 4 | 4Gi |
2xlarge | 8 | 8Gi |