nubes_clickhouse — ClickHouse
Колоночная СУБД для аналитики в реальном времени. Сервис создаёт кластер ClickHouse
(с опциональным ClickHouse Keeper, автодоскейлом и бэкапами в S3) и отдаёт адреса
подключения по HTTP и TCP.
Инструкция по сервису
Отдельная страница: руководство по сервису.
Специфика Nubes: destroy ≠ удаление
У этого ресурса terraform destroy по умолчанию усыпляет инстанс (suspend),
а не удаляет. Подробности — в разделе «Жизненный цикл» и в общем
руководстве «Как работает провайдер».
Пример использования
Минимальный (обязательные параметры):
resource "nubes_clickhouse" "db" {
resource_name = "my-clickhouse"
startup_configuration = {
resource_realm = "k8s-4-ext-nubes-ru"
}
access_configuration = {
master_ip_space = "no-needed"
}
backup_configuration = {
s3_uid = nubes_s3.storage.id # ⚠️ обязателен
}
}
Типовой (с явными ресурсами и бэкапами):
resource "nubes_clickhouse" "db" {
resource_name = "my-clickhouse"
operation_timeout = "20m"
startup_configuration = {
resource_realm = "k8s-4-ext-nubes-ru"
}
cluster_configuration = {
cpu = 1000 # milicores
memory = 2048 # MB
disk = 10 # GB
replicas = 1 # 1 | 3 | 5 | 7
shards = 1 # 1 | 2 | 3
}
access_configuration = {
master_ip_space = "no-needed"
master_access_list = jsonencode([])
}
clickhouse_keeper_configuration = {
cpu = 500
memory = 512
replicas = 0 # 0 | 1 | 3
}
clickhouse_configuration = {
version = "25.10"
}
backup_configuration = {
s3_uid = nubes_s3.storage.id
retain = 7
schedule = "0 0 * * *"
}
autoscale_configuration = {
enabled = false
percent = 10 # 10 | 15 | 20
quota = 100
schedule = 0 # 0 | 5 | 12 | 23
}
}
Argument Reference
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
resource_name |
string |
да |
— |
Имя инстанса |
startup_configuration
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
resource_realm |
string |
да |
— |
Платформа: k8s-4-ext-nubes-ru, k8s-4-ext-nubes-ru |
cluster_configuration
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
cpu |
integer |
нет |
1000 |
Квота CPU пода (milicores) |
memory |
integer |
нет |
2048 |
Квота памяти пода (MB) |
disk |
integer |
нет |
10 |
Квота диска (GB) |
replicas |
integer |
нет |
1 |
Число реплик: 1, 3, 5, 7 |
shards |
integer |
нет |
1 |
Число шардов: 1, 2, 3 |
access_configuration
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
master_ip_space |
string |
да |
— |
IP-space для доступа |
master_access_list |
string (json) |
нет |
[] |
Список разрешённых адресов (JSON-массив) |
clickhouse_keeper_configuration
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
cpu |
integer |
нет |
500 |
Квота CPU Keeper (milicores) |
memory |
integer |
нет |
512 |
Квота памяти Keeper (MB) |
replicas |
integer |
нет |
0 |
Число реплик Keeper: 0, 1, 3 |
clickhouse_configuration
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
version |
string |
нет |
25.10 |
Версия ClickHouse |
backup_configuration
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
s3_uid |
string (uuid) |
да |
— |
UUID экземпляра S3 (сервис 12) |
retain |
integer |
нет |
7 |
Срок хранения бэкапов |
schedule |
string |
нет |
0 0 * * * |
Cron-расписание бэкапов |
autoscale_configuration
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
enabled |
bool |
нет |
false |
Включить автоскейлинг |
percent |
integer |
нет |
10 |
Порог: 10, 15, 20 |
quota |
integer |
нет |
100 |
Квота автоскейлинга |
schedule |
integer |
нет |
0 |
Час запуска: 0, 5, 12, 23 |
clickhouse_files_configuration (опционально)
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
path |
string |
нет |
something.xml |
Путь к XML-конфигу |
xml_config |
string |
нет |
<clickhouse></clickhouse> |
Содержимое XML-конфига |
Общие атрибуты (есть у всех ресурсов):
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
operation_timeout |
string |
нет |
— |
Максимальное время ожидания операции (напр. 20m) |
log_level |
string |
нет |
none |
Логирование стадий операции: none, info, debug |
suspend_on_destroy |
bool |
нет |
true |
При destroy — усыпить (true) вместо удаления (false) |
keep_on_destroy |
bool |
нет |
false |
При destroy — ничего не делать в облаке (state_only) |
adopt_existing_on_create |
bool |
нет |
false |
Авто-подхват существующего инстанса при apply (=import) |
Attribute Reference
Вычисляемые атрибуты (только чтение):
| Имя |
Тип |
Описание |
id |
string |
UUID инстанса |
state_out.localConnectionUrlHttp |
string |
HTTP-endpoint внутри кластера: http://clickhouse-clickhousek8s.<uid>.svc.cluster.local:8123 |
state_out.localConnectionUrlTcp |
string |
TCP-endpoint внутри кластера: ...:9000 |
state_out.externalConnectionUrlHttp |
string |
Внешний HTTP-endpoint ("" без внешнего доступа) |
state_out.externalConnectionUrlTcp |
string |
Внешний TCP-endpoint ("" без внешнего доступа) |
state_out.databases |
string (json) |
Базы данных ({} пока нет БД) |
state_out.users |
string (json) |
Пользователи ({} пока нет юзеров) |
state_out.instanceUid |
string |
UUID инстанса |
state_out_flat["monitoring.logs"] |
string |
Ссылка на логи (Grafana) |
state_out_flat["monitoring.resourceMetrics"] |
string |
Ссылка на метрики (Grafana) |
state_params / state_params_flat |
map |
Параметры, отправленные в API |
vault_secrets |
map (sensitive) |
Секреты из Vault |
vault_url / vault_user_path |
string |
Адрес/путь Vault |
vault_fields |
list |
["users"] |
output "ch_http" { value = nubes_clickhouse.db.state_out_flat["localConnectionUrlHttp"] }
Жизненный цикл
⚠️ terraform destroy не удаляет инстанс, а усыпляет его
(suspend_on_destroy = true по умолчанию). Данные сохраняются.
| Флаг |
Дефолт |
Поведение при destroy |
suspend_on_destroy |
true |
Инстанс переводится в suspend (не удаляется) |
suspend_on_destroy |
false |
Выполняется операция delete — инстанс удаляется в облаке |
keep_on_destroy |
false |
Если true — облако не трогается, ресурс только убирается из состояния (state_only); приоритетнее suspend_on_destroy |
Возврат из suspend: повторный terraform apply с adopt_existing_on_create = true
— провайдер найдёт инстанс по имени и выполнит resume (тот же id).
Зачем нужно усыпление
suspend — временная остановка: ресурсы высвобождаются, а инстанс можно
вернуть в работу в любой момент повторным apply.
Удаление усыплённого инстанса
Удалить усыплённый инстанс можно, когда он пробыл в suspend 14 дней.
⚠️ Из Terraform это невозможно — операция delete для усыплённого инстанса
недоступна. Удаляйте его вручную в Личном кабинете (ЛК).
- Инстанс в статусе «not created» (после упавшего create) блокирует имя и не удаляется
через API — чистится вручную в Личном кабинете.
reconcile запускается из Terraform ресурсом nubes_service_operation (operation = "reconcile", уникальный run_id).
Подресурсы
nubes_clickhouse_database
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
clickhouse_id |
string (uuid) |
да |
— |
UUID кластера ClickHouse |
db_name |
string |
нет |
db01 |
Имя базы данных |
nubes_clickhouse_user
| Имя |
Тип |
Обязательный |
По умолчанию |
Описание |
Ограничения |
clickhouse_id |
string (uuid) |
да |
— |
UUID кластера ClickHouse |
— |
username |
string |
нет |
myusername |
Имя пользователя |
длина 2…62 |
db_name |
map (список) |
нет |
[{}] |
Базы, к которым даётся доступ |
db_name — да |
access_hosts |
string |
нет |
::/0 |
Разрешённые адреса подключения |
— |
Общие атрибуты подресурсов
adopt_existing_on_create, keep_on_destroy, skip_missing_on_delete,
operation_timeout, log_level. Идентификатор: <clickhouse_uid>:<kind>:<hash>.
Operations
| Операция |
Доступно из Terraform |
Комментарий |
create |
✅ apply |
Создание кластера |
modify |
✅ apply |
Меняются cluster_configuration, clickhouse_keeper_configuration, access_configuration, clickhouse_configuration, backup_configuration, autoscale_configuration, clickhouse_files_configuration |
suspend |
✅ destroy (при suspend_on_destroy=true) |
Усыпление |
resume |
✅ apply (при adopt_existing_on_create=true) |
Пробуждение |
delete |
✅ destroy (suspend_on_destroy=false) |
Удаление инстанса в облаке. Только для работающего (running); усыплённый — вручную в ЛК |
create_database / delete_database |
✅ через nubes_clickhouse_database |
Управление БД |
create_user / delete_user |
✅ через nubes_clickhouse_user |
Управление пользователями |
reconcile |
✅ через nubes_service_operation |
Синхронизация состояния (универсальная операция) |
See the Terraform Registry attribute reference.