Helm-чарт для ClickStack доступен здесь и является рекомендуемым способом развертывания в продакшн.
По умолчанию Helm-чарт разворачивает все основные компоненты, включая:
- ClickHouse
- HyperDX
- коллектор OpenTelemetry (OTel)
- MongoDB (для постоянного хранения состояния приложения)
Однако его можно легко настроить для интеграции с существующим развертыванием ClickHouse — например, размещённым в ClickHouse Cloud.
Чарт поддерживает стандартные лучшие практики Kubernetes, включая:
- Конфигурацию для конкретной среды через
values.yaml - Ограничения ресурсов и масштабирование на уровне подов
- Настройку TLS и входного шлюза
- Управление секретами и настройку аутентификации
Подходит для
- Пилотных проектов
- Продакшн
Этапы развертывания
Предварительные требования
- Helm v3+
- Кластер Kubernetes (рекомендуется версия v1.20+)
kubectl, настроенный для работы с вашим кластером
Добавьте репозиторий Helm ClickStack
Добавьте репозиторий Helm ClickStack:
helm repo add clickstack https://clickhouse.github.io/ClickStack-helm-charts
helm repo updateУстановка ClickStack
Чтобы установить чарт 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Настройка values (необязательно)
Вы можете изменить параметры с помощью флагов --set. Например:
helm install my-clickstack clickstack/clickstack --set key=valueЛибо измените values.yaml. Чтобы получить значения по умолчанию:
helm show values clickstack/clickstack > values.yamlПример конфигурации:
replicaCount: 2
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- host: hyperdx.example.com
paths:
- path: /
pathType: ImplementationSpecifichelm install my-clickstack clickstack/clickstack -f values.yamlИспользование секретов (необязательно)
Для работы с конфиденциальными данными, такими как ключ API или учетные данные базы данных, используйте секреты Kubernetes. Helm-чарты HyperDX содержат стандартные файлы секретов, которые можно изменить и применить в вашем кластере.
Использование предварительно настроенных секретов
Helm-чарт включает стандартный шаблон секрета, расположенный в charts/clickstack/templates/secrets.yaml. Этот файл служит базовой структурой для управления секретами.
Если вам нужно применить секрет вручную, измените и примените предоставленный шаблон secrets.yaml:
apiVersion: v1
kind: Secret
metadata:
name: hyperdx-secret
annotations:
"helm.sh/resource-policy": keep
type: Opaque
data:
API_KEY: <base64-encoded-api-key>Примените секрет к кластеру:
kubectl apply -f secrets.yamlСоздание пользовательского секрета
При необходимости вы можете вручную создать пользовательский секрет Kubernetes:
kubectl create secret generic hyperdx-secret \
--from-literal=API_KEY=my-secret-api-keyСсылка на секрет
Чтобы сослаться на секрет в values.yaml:
hyperdx:
apiKey:
valueFrom:
secretKeyRef:
name: hyperdx-secret
key: API_KEYИспользование ClickHouse Cloud
Если вы используете ClickHouse Cloud, отключите экземпляр ClickHouse, развернутый с помощью Helm-чарта, и укажите учетные данные Cloud:
# указать учётные данные ClickHouse Cloud
export CLICKHOUSE_URL=<CLICKHOUSE_CLOUD_URL> # полный https url
export CLICKHOUSE_USER=<CLICKHOUSE_USER>
export CLICKHOUSE_PASSWORD=<CLICKHOUSE_PASSWORD>
# как переопределить подключение по умолчанию
helm install my-clickstack clickstack/clickstack \
--set clickhouse.enabled=false \
--set clickhouse.persistence.enabled=false \
--set otel.clickhouseEndpoint=${CLICKHOUSE_URL} \
--set clickhouse.config.users.otelUser=${CLICKHOUSE_USER} \
--set clickhouse.config.users.otelUserPassword=${CLICKHOUSE_PASSWORD}Либо используйте файл values.yaml:
clickhouse:
enabled: false
persistence:
enabled: false
config:
users:
otelUser: ${CLICKHOUSE_USER}
otelUserPassword: ${CLICKHOUSE_PASSWORD}
otel:
clickhouseEndpoint: ${CLICKHOUSE_URL}
hyperdx:
defaultConnections: |
[
{
"name": "External ClickHouse",
"host": "http://your-clickhouse-server:8123",
"port": 8123,
"username": "your-username",
"password": "your-password"
}
]helm install my-clickstack clickstack/clickstack -f values.yaml
# или если уже установлен...
# helm upgrade my-clickstack clickstack/clickstack -f values.yamlПримечания для продакшна
По умолчанию этот чарт также устанавливает ClickHouse и OTel collector. Однако для продакшна рекомендуется управлять ClickHouse и OTel collector отдельно.
Чтобы отключить ClickHouse и OTel collector, задайте следующие значения:
helm install my-clickstack clickstack/clickstack \
--set clickhouse.enabled=false \
--set clickhouse.persistence.enabled=false \
--set otel.enabled=falseКонфигурация задач
По умолчанию в конфигурации chart предусмотрена одна задача в виде cronjob, которая проверяет, должны ли срабатывать оповещения. Ниже приведены её параметры конфигурации:
| Параметр | Описание | По умолчанию |
|---|---|---|
tasks.enabled |
Включить/отключить cron-задачи в кластере. По умолчанию образ HyperDX будет выполнять cron-задачи в этом процессе. Измените значение на true, если предпочитаете использовать отдельную cron-задачу в кластере. | false |
tasks.checkAlerts.schedule |
Cron-расписание для задачи check-alerts | */1 * * * * |
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Это удалит все ресурсы, связанные с этим релизом, но постоянные данные (если они есть) могут остаться.
Устранение неполадок
Просмотр журналов
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.
Руководства по развертыванию v1.x
- Варианты развертывания (v1.x) - внешний ClickHouse, OTel collector и минимальные развертывания
- Руководство по настройке (v1.x) - ключи API, секреты и настройка входного шлюза
- Развертывания в Cloud (v1.x) - конфигурации GKE, EKS, AKS и рекомендации для продакшна
Документация по v2.x
- Helm (v2.x) - руководство по развертыванию v2.x
- Руководство по обновлению - переход с v1.x на v2.x
Дополнительные ресурсы
- Руководство «Начало работы» для ClickStack - Введение в ClickStack
- Репозиторий Helm-чартов ClickStack - Исходный код чартов и справочник по values
- Документация Kubernetes - Справочник по Kubernetes
- Документация Helm - Справочник по Helm
