Helm-чарт для ClickStack доступен здесь и является рекомендуемым способом развертывания в production.
В чарте v2.x используется двухэтапная установка. Сначала через чарт clickstack-operators устанавливаются операторы и CRD, затем — основной чарт clickstack, который создаёт управляемые операторами пользовательские ресурсы для ClickHouse, MongoDB и OpenTelemetry Collector.
По умолчанию Helm-чарт разворачивает все основные компоненты, включая:
- ClickHouse — управляется ClickHouse Operator через пользовательские ресурсы
ClickHouseClusterиKeeperCluster - HyperDX — интерфейс и API для обсервабилити
- OpenTelemetry (OTel) collector — разворачивается как субчарт через официальный Helm-чарт OpenTelemetry Collector
- MongoDB — управляется MongoDB Kubernetes Operator (MCK) через пользовательский ресурс
MongoDBCommunity
Однако его можно легко настроить для интеграции с существующим развертыванием ClickHouse — например, в ClickHouse Cloud.
Чарт поддерживает стандартные рекомендации Kubernetes, включая:
- Конфигурацию для конкретных сред через
values.yaml - Ограничения ресурсов и масштабирование на уровне подов
- Настройку TLS и входного шлюза
- Управление секретами и настройку аутентификации
- Дополнительные манифесты для развертывания произвольных объектов Kubernetes (NetworkPolicy, HPA, ALB Ingress и т. д.) вместе с чартом
Подходит для
- Пилотных проектов
- Промышленной эксплуатации
Шаги развертывания
Предварительные требования
- Helm v3+
- кластер Kubernetes (рекомендуется v1.20+)
- настроенный
kubectlдля взаимодействия с вашим кластером
Добавьте репозиторий Helm ClickStack
Добавьте репозиторий Helm ClickStack:
helm repo add clickstack https://clickhouse.github.io/ClickStack-helm-charts
helm repo updateУстановите операторы
Сначала установите чарт оператора. При этом будут зарегистрированы CRD, необходимые для основного чарта:
helm install clickstack-operators clickstack/clickstack-operatorsПодождите, пока поды оператора не перейдут в состояние Ready, прежде чем продолжить:
kubectl get pods -l app.kubernetes.io/instance=clickstack-operatorsУстановите ClickStack
После запуска операторов установите основной чарт:
helm install my-clickstack clickstack/clickstackПроверьте установку
Проверьте установку:
kubectl get pods -l "app.kubernetes.io/name=clickstack"После того как все поды будут готовы, продолжайте.
Проброс портов
Проброс портов позволяет получить доступ к HyperDX и настроить его. При развертывании в рабочей среде вместо этого следует открывать доступ к сервису через входной шлюз или балансировщик нагрузки, чтобы обеспечить корректный сетевой доступ, терминацию TLS и масштабируемость. Проброс портов лучше всего подходит для локальной разработки или разовых административных задач, а не для долгосрочного использования или сред с высокой доступностью.
kubectl port-forward \
pod/$(kubectl get pod -l app.kubernetes.io/name=clickstack -o jsonpath='{.items[0].metadata.name}') \
8080:3000Переопределение значений (необязательно)
Вы можете переопределить параметры с помощью флагов --set. Например:
helm install my-clickstack clickstack/clickstack --set key=valueИли отредактируйте values.yaml. Чтобы получить значения по умолчанию:
helm show values clickstack/clickstack > values.yamlПример конфигурации:
hyperdx:
frontendUrl: "https://hyperdx.example.com"
deployment:
replicas: 2
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 500m
memory: 1Gi
ingress:
enabled: true
host: hyperdx.example.com
tls:
enabled: true
tlsSecretName: "hyperdx-tls"helm install my-clickstack clickstack/clickstack -f values.yamlИспользование секретов (необязательно)
Чарт v2.x использует единый secret (clickstack-secret), который заполняется из hyperdx.secrets в ваших values. Все конфиденциальные переменные окружения — включая пароли ClickHouse, пароли MongoDB и API key HyperDX — передаются через этот единый secret.
Чтобы переопределить значения secret:
hyperdx:
secrets:
HYPERDX_API_KEY: "your-api-key"
CLICKHOUSE_PASSWORD: "your-clickhouse-password"
CLICKHOUSE_APP_PASSWORD: "your-app-password"
MONGODB_PASSWORD: "your-mongodb-password"Для внешнего управления секретами (например, с помощью оператора для secrets) можно сослаться на уже существующий секрет Kubernetes:
hyperdx:
useExistingConfigSecret: true
existingConfigSecret: "my-external-secret"
existingConfigConnectionsKey: "connections.json"
existingConfigSourcesKey: "sources.json"Использование ClickHouse Cloud
Если вы используете ClickHouse Cloud, отключите встроенный экземпляр ClickHouse и укажите учетные данные Cloud:
# values-clickhouse-cloud.yaml
clickhouse:
enabled: false
hyperdx:
secrets:
CLICKHOUSE_PASSWORD: "your-cloud-password"
CLICKHOUSE_APP_PASSWORD: "your-cloud-password"
useExistingConfigSecret: true
existingConfigSecret: "clickhouse-cloud-config"
existingConfigConnectionsKey: "connections.json"
existingConfigSourcesKey: "sources.json"Создайте секрет подключения отдельно:
cat <<EOF > connections.json
[
{
"name": "ClickHouse Cloud",
"host": "https://your-cloud-instance.clickhouse.cloud",
"port": 8443,
"username": "default",
"password": "your-cloud-password"
}
]
EOF
kubectl create secret generic clickhouse-cloud-config \
--from-file=connections.json=connections.json
rm connections.jsonhelm install my-clickstack clickstack/clickstack -f values-clickhouse-cloud.yamlПримечания для продакшена
По умолчанию этот чарт устанавливает ClickHouse, MongoDB и OTel collector. Для продакшена рекомендуется управлять ClickHouse и OTel collector отдельно.
Чтобы отключить ClickHouse и OTel collector:
clickhouse:
enabled: false
otel-collector:
enabled: falseКонфигурация задач
По умолчанию в конфигурации чарта предусмотрена одна задача в виде CronJob, которая проверяет, должны ли срабатывать оповещения. В v2.x конфигурация задач перенесена в hyperdx.tasks:
| Параметр | Описание | По умолчанию |
|---|---|---|
hyperdx.tasks.enabled |
Включает/отключает cron-задачи в кластере. По умолчанию образ HyperDX выполняет cron-задачи в рамках основного процесса. Установите значение true, если хотите использовать отдельную cron-задачу в кластере. |
false |
hyperdx.tasks.checkAlerts.schedule |
Расписание cron для задачи check-alerts | */1 * * * * |
hyperdx.tasks.checkAlerts.resources |
Запросы и лимиты ресурсов для задачи check-alerts | См. values.yaml |
Обновление чарта
Чтобы обновить чарт до новой версии:
helm upgrade my-clickstack clickstack/clickstack -f values.yamlЧтобы проверить доступные версии чарта:
helm search repo clickstackУдаление ClickStack
Удаляйте в обратном порядке:
helm uninstall my-clickstack # Сначала удалить приложение и CR
helm uninstall clickstack-operators # Удалить операторы и CRDПримечание: PersistentVolumeClaims, созданные операторами MongoDB и ClickHouse, не удаляются при выполнении helm uninstall. Это сделано намеренно, чтобы предотвратить случайную потерю данных. Инструкции по очистке PVC см. здесь:
Устранение неполадок
Проверка журналов
kubectl logs -l app.kubernetes.io/name=clickstackОтладка сбоя при установке
helm install my-clickstack clickstack/clickstack --debug --dry-runПроверка развертывания
kubectl get pods -l app.kubernetes.io/name=clickstackВыбор схемы: Map или JSON
По умолчанию ClickStack хранит атрибуты в столбцах Map(LowCardinality(String), String). Это рекомендуемая схема для рабочих нагрузок обсервабилити. В сочетании с сериализацией Map по бакетам и текстовыми индексами по ключам и значениям в Map она обеспечивает точечные lookup-операции без накладных расходов на приём для каждого ключа, характерных для динамических подстолбцов JSON.
Схема с типом JSON доступна в статусе бета для оценки на рабочих нагрузках с небольшим стабильным набором ключей атрибутов. Использовать её по умолчанию не рекомендуется. Полное сравнение и переменные окружения, необходимые для включения поддержки JSON, см. в разделе Map vs JSON type.
Руководства по развертыванию
- Варианты развертывания - внешний ClickHouse, OTel collector и минимальные развертывания
- Руководство по настройке - ключ API, секреты и настройка входного шлюза
- Развертывания в Cloud - конфигурации GKE, EKS, AKS и рекомендации для production
- Руководство по обновлению - переход с v1.x на v2.x
- Дополнительные манифесты - развертывание пользовательских объектов Kubernetes вместе с чартом
Документация v1.x
- Helm (v1.x) - руководство по развертыванию v1.x
- Конфигурация (v1.x) - конфигурация v1.x
- Варианты развертывания (v1.x) - варианты развертывания v1.x
- Развертывания в Cloud (v1.x) - конфигурации Cloud для v1.x
Дополнительные ресурсы
- Руководство по началу работы с ClickStack - Введение в ClickStack
- Репозиторий Helm-чартов ClickStack - Исходный код чартов и справочник по values
- Документация Kubernetes - Справочник по Kubernetes
- Документация Helm - Справочник по Helm
