Files
tf_provider/provider/resources_yaml/120_clickhouse.yaml
T
“Naeel” 5da22335ae refactor: rename universal_rebuild/ → provider/
- Rename directory
- Update all 9 devops scripts
- Update 4 generator source files
- Rebuild all binaries
2026-07-05 10:20:04 +04:00

212 lines
12 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: clickhouse
service_id: 120
service_display_name: ClickHouse
service_short_name: clickhouse
service_man: '# Инструкция по управлению кластерами и пользователями ClickHouse<br/><br/>---<br/><br/>## Общая информация<br/><br/>ClickHouse — это колоночная система управления базами данных, предназначенная для обработки аналитических запросов в реальном времени. Платформа позволяет создавать, удалять, приостанавливать и возобновлять кластеры ClickHouse, а также управлять базами данных и пользователями.<br/><br/>Кластер создаётся через оператор Altinity (`https://github.com/Altinity/clickhouse-operator`) в ресурсной платформе типа `k8s`<br/><br/>Кластеры могут создаваться шардированными с произвольным количеством реплик. Для обеспечения отказоустойчивости и координации обязательно включение параметра `Создать ClickHouse-Keeper`.<br/><br/>Кластера создаются с обязательным бекапом. Для этого необходимо предварительно создать услугу `S3 Object Storage`.<br/>---<br/><br/>## Доступные операции<br/><br/>* **create** — Создание кластера<br/>* **delete** — Удаление кластера<br/>* **suspend** — Приостановка работы кластера<br/>* **resume** — Возобновление работы кластера<br/>* **create_database** — Создание базы данных<br/>* **delete_database** — Удаление базы данных<br/>* **create_user** — Создание пользователя и настройка прав доступа к базе данных<br/>* **delete_user** — Удаление пользователя<br/><br/>## Процесс создания и первого подключения<br/><br/>1. Выполнить операцию `create` - будет создан кластер<br/>2. Выполнить операцию `create_database` - будет создана база данных<br/>3. Выполнить операцию `create_user` - будет создан пользователь (выбрать доступ подключения к БД, созданной в п.2)<br/><br/>## Примеры подключения<br/><br/>### Подключение через HTTP-интерфейс<br/><br/>```bash<br/># Проверка доступности кластера<br/>curl &quot;http://&lt;username&gt;:&lt;password&gt;@&lt;host&gt;:8123/&quot; -d &quot;SELECT 1&quot;<br/><br/># Выполнение запроса<br/>curl &quot;http://&lt;username&gt;:&lt;password&gt;@&lt;host&gt;:8123/&quot; -d &quot;SHOW DATABASES&quot;<br/>```<br/><br/>## Простые кейсы<br/>*Создать БД и обычной таблицы*<br/>```clickhouse<br/>CREATE TABLE database.table<br/>(<br/> id UInt64,<br/> value String<br/>)<br/>ENGINE = MergeTree()<br/>ORDER BY id;<br/><br/>INSERT INTO database.table SELECT number, toString(number) FROM numbers(10000000);<br/><br/>SELECT count() FROM database.table;<br/>```<br/>Базы и таблицы не реплицируются без специального ключа (`ON CLUSTER ''clickhousek8s''`)<br/>В случае создания в стиле, описанным выше, необходимо будет выполнять действия на всех шардах/репликах<br/><br/><br/>*Создание БД и шардированной таблицы*<br/>```clickhouse<br/>CREATE TABLE database.localUsers<br/>(<br/> id UInt64,<br/> value String<br/>)<br/>ENGINE = MergeTree()<br/>ORDER BY id;<br/><br/>CREATE TABLE database.shardedTable<br/>AS localUsers<br/>ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', id);<br/><br/>INSERT INTO shardedTable SELECT number, toString(number) FROM numbers(10000000);<br/><br/>SELECT count() FROM shardedTable;<br/>```<br/>Важный момент - в данном примере таблицы придётся также выполнять на всех нодах ClickHouse<br/><br/>*Создание реплицируемой и шардированной таблицы*<br/>```clickhouse<br/>CREATE TABLE IF NOT EXISTS database.localUsers ON cluster ''clickhousek8s''<br/>(<br/> user_id UInt64,<br/> name String,<br/> email String<br/>)<br/>ENGINE = ReplicatedMergeTree(<br/> ''/clickhouse/tables/{shard}/localUsers'',<br/> ''{replica}''<br/>)<br/>ORDER BY user_id;<br/><br/>CREATE TABLE IF NOT EXISTS database.users ON cluster ''clickhousek8s''<br/>AS database.localUsers<br/>ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', rand());<br/><br/>INSERT INTO database.users VALUES (1, ''Alice'', ''alice@example.com'');<br/>INSERT INTO database.users VALUES (2, ''Bob'', ''bob@example.com'');<br/>INSERT INTO database.users VALUES (3, ''Charlie'', ''charlie@example.com'');<br/>INSERT INTO database.users VALUES (4, ''David'', ''david@example.com'');<br/>INSERT INTO database.users VALUES (5, ''Gosha'', ''gosha@example.com'');<br/>INSERT INTO database.users VALUES (6, ''Eve'', ''eve@example.com'');<br/>INSERT INTO database.users VALUES (7, ''Frank'', ''frank@example.com'');<br/>INSERT INTO database.users VALUES (8, ''Grace'', ''grace@example.com'');<br/>INSERT INTO database.users VALUES (9, ''Hannah'', ''hannah@example.com'');<br/>INSERT INTO database.users VALUES (10, ''Ivan'', ''ivan@example.com'');<br/><br/>SELECT * FROM database.localUsers;<br/>SELECT * FROM database.users;<br/><br/>SELECT COUNT(*) AS total_users FROM database.users;<br/>SELECT COUNT(*) AS total_users_local FROM database.localUsers;<br/>```'
lifecycle:
suspend_on_destroy_default: true
adopt_existing_on_create_default: false
outputs:
params:
- code: state_params
type: map
- code: state_out
type: map
- code: state_params_flat
type: map
- code: state_out_flat
type: map
- code: vault_secrets
type: map
sensitive: true
- code: vault_url
type: string
- code: vault_user_path
type: string
- code: vault_fields
type: list
operations:
- name: create
id: 181
kind: instance
action: create
man: Операция создания кластера ClickHouse<br/><br/>Для подключения к кластеру также необходимо создать базу данных через операцию `create_database` и создание пользователя через операцию `create_user`
params:
- id: 837
code: startupConfiguration
data_type: map-fixed
required: true
sort: 10
- id: 838
code: clusterConfiguration
data_type: map-fixed
required: true
sort: 20
is_modifiable: true
- id: 839
code: accessConfiguration
data_type: map-fixed
required: true
sort: 40
is_modifiable: true
- id: 840
code: clickhouseKeeperConfiguration
data_type: map-fixed
required: true
sort: 30
is_modifiable: true
- id: 841
code: clickhouseConfiguration
data_type: map-fixed
required: true
sort: 50
is_modifiable: true
- id: 842
code: backupConfiguration
data_type: map-fixed
required: true
sort: 70
is_modifiable: true
- id: 843
code: autoscaleConfiguration
data_type: map-fixed
required: true
sort: 80
is_modifiable: true
- id: 851
code: clickhouseFilesConfiguration
data_type: array-map-fixed
required: false
man: 'Формат:<br/> - path: somethings3.xml<br/> xmlConfig: ''&lt;clickhouse&gt;......&lt;/clickhouse&gt;'''
sort: 60
is_modifiable: true
- name: create_database
id: 186
kind: subresource
action: create
subresource: database
man: База данных создаётся на всех репликах кластера ClickHouse
params:
- id: 600
code: dbName
data_type: string
required: true
default: db01
regex: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
descr: 'Пример: `db01`'
sort: 10
- name: create_user
id: 185
kind: subresource
action: create
subresource: user
params:
- id: 596
code: username
data_type: string
required: true
default: myusername
regex: ^(?![0-9_])[a-zA-Z_][a-zA-Z0-9_]{0,62}$
maxlength: 62
minlength: 2
descr: 'Пример: `myusername`'
sort: 10
- id: 598
code: dbName
data_type: array-map-fixed
required: true
default: '[{}]'
sort: 30
- id: 599
code: accessHosts
data_type: string
required: true
default: ::/0
descr: 'Пример: `::/0`'
sort: 40
- name: delete
id: 184
kind: instance
action: delete
man: Удаление возможно только после остановки сервиса через операцию `suspend`<br/>После выполнения операции необходимо выждать определенное кол-во времени
params: []
- name: delete_database
id: 188
kind: subresource
action: delete
subresource: database
man: Необратимое действие!!!<br/>Трижды подумай, заблокируй телефон тимлида и не выполняй это действие
params:
- id: 602
code: dbName
data_type: string
required: true
descr: ВСЕ ДАННЫЕ ВНУТРИ БД БУДУТ УДАЛЕНЫ
- name: delete_user
id: 187
kind: subresource
action: delete
subresource: user
params:
- id: 601
code: username
required: true
descr: Имя пользователя, созданное через операцию `create_user`
- name: modify
id: 189
kind: instance
action: modify
params:
- id: 844
code: clusterConfiguration
data_type: map-fixed
required: true
sort: 10
- id: 845
code: clickhouseKeeperConfiguration
data_type: map-fixed
required: true
sort: 20
- id: 846
code: accessConfiguration
data_type: map-fixed
required: true
sort: 30
- id: 847
code: clickhouseConfiguration
data_type: map-fixed
required: true
sort: 40
- id: 848
code: backupConfiguration
data_type: map-fixed
required: true
sort: 60
- id: 849
code: autoscaleConfiguration
data_type: map-fixed
required: true
sort: 70
- id: 850
code: clickhouseFilesConfiguration
data_type: array-map-fixed
required: false
man: 'Формат:<br/> - path: somethings3.xml<br/> xmlConfig: ''&lt;clickhouse&gt;......&lt;/clickhouse&gt;'''
sort: 50
- name: reconcile
id: 276
kind: action
action: reconcile
params: []
- name: resume
id: 183
kind: instance
action: resume
params: []
- name: suspend
id: 182
kind: instance
action: suspend
man: Операция приводит к удалению всех подов<br/>Persistent Volume остаются нетронутыми
params: []