Перейти к основному содержимому
Перейти к основному содержимому

Helm

Миграция чарта

Если вы сейчас используете чарт hdx-oss-v2, перейдите на чарт clickstack. Чарт hdx-oss-v2 находится в режиме сопровождения и больше не будет получать новый функционал. Вся новая разработка сосредоточена на чарте clickstack, который предоставляет тот же функционал с улучшёнными именами и более удобной структурой.

Helm-чарт для ClickStack можно найти здесь; это рекомендуемый способ продакшн-развертываний.

По умолчанию Helm-чарт развёртывает все основные компоненты, включая:

  • ClickHouse
  • HyperDX
  • коллектор OpenTelemetry (OTel)
  • MongoDB (для хранения состояния приложения)

Однако его можно легко настроить для интеграции с уже существующим развёртыванием ClickHouse — например, размещённым в ClickHouse Cloud.

Чарт поддерживает стандартные лучшие практики Kubernetes, включая:

  • Конфигурацию для разных окружений через values.yaml
  • Лимиты ресурсов и масштабирование подов
  • Настройку TLS и Входного шлюза
  • Управление секретами и настройку аутентификации

Подходит для

  • пилотных проектов (Proof of Concept, PoC)
  • продуктивной эксплуатации

Шаги развертывания


Предварительные условия

  • 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
Настройка входного шлюза для production-окружения

Для production-развертываний настройте входной шлюз с TLS вместо проброса портов. Подробные инструкции по настройке см. в руководстве по настройке входного шлюза.

Перейдите к пользовательскому интерфейсу

Откройте http://localhost:8080 для доступа к интерфейсу HyperDX.

Создайте пользователя, указав имя пользователя и пароль, которые соответствуют требованиям.

Интерфейс HyperDX

После нажатия Create будут созданы источники данных для экземпляра ClickHouse, развернутого с помощью Helm-чарта.

Переопределение подключения по умолчанию

Вы можете переопределить стандартное подключение к интегрированному экземпляру ClickHouse. Подробнее см. в разделе "Использование ClickHouse Cloud".

Пример использования альтернативного экземпляра ClickHouse см. в разделе "Создание подключения ClickHouse Cloud".

Настройка параметров (необязательно)

Настроить параметры можно с помощью флагов --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: ImplementationSpecific
helm 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
Управление API-ключами

Подробные инструкции по настройке API-ключей, включая различные методы конфигурации и процедуры перезапуска подов, см. в руководстве по настройке API-ключей.

Использование ClickHouse Cloud

Если вы используете ClickHouse Cloud, отключите экземпляр ClickHouse, развернутый с помощью Helm-чарта, и укажите учетные данные ClickHouse Cloud:

# specify ClickHouse Cloud credentials
export CLICKHOUSE_URL=<CLICKHOUSE_CLOUD_URL> # full https url
export CLICKHOUSE_USER=<CLICKHOUSE_USER>
export CLICKHOUSE_PASSWORD=<CLICKHOUSE_PASSWORD>

# how to overwrite default connection
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
# or if installed...
# helm upgrade my-clickstack clickstack/clickstack -f values.yaml
Расширенные варианты внешней конфигурации

Для production-развертываний с конфигурацией на основе секретов, внешними OTel collectors или минимальными конфигурациями см. руководство по вариантам развертывания.

Примечания по эксплуатации

По умолчанию этот чарт также устанавливает 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
Рекомендации для production-среды

Для production-развертываний, включая настройку высокой доступности, управление ресурсами, конфигурацию Входного шлюза/TLS и параметры, специфичные для облачных провайдеров (GKE, EKS, AKS), см.:

Конфигурация задач

По умолчанию в чарте настроена одна задача в виде CronJob, которая отвечает за проверку необходимости срабатывания алертов. Ниже приведены её параметры конфигурации:

ПараметрОписаниеЗначение по умолчанию
tasks.enabledВключить/выключить cron-задачи в кластере. По умолчанию образ HyperDX будет запускать cron-задачи в процессе. Измените на true, если вы предпочитаете использовать отдельную cron-задачу в кластере.false
tasks.checkAlerts.scheduleCron-расписание для задачи check-alerts*/1 * * * *
tasks.checkAlerts.resourcesЗапросы и лимиты ресурсов для задачи check-alertsСм. values.yaml

Обновление чарта

Чтобы обновить чарт до более новой версии:

helm upgrade my-clickstack clickstack/clickstack -f values.yaml

Чтобы просмотреть доступные версии Helm‑чарта:

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
Дополнительные ресурсы по устранению неполадок

Для проблем, связанных с входным шлюзом, TLS или устранением неполадок облачных развертываний, см.:

Поддержка типа JSON

Beta feature. Learn more.
Beta Feature - not production ready

Поддержка типа JSON в ClickStack находится в статусе бета-версии. Хотя сам тип JSON готов к промышленной эксплуатации в ClickHouse 25.3+, его интеграция в ClickStack всё ещё активно разрабатывается и может иметь ограничения, изменяться в будущем или содержать ошибки.

Поддержка типа JSON в ClickStack доступна в статусе бета-версии, начиная с версии 2.0.4.

О преимуществах этого типа см. раздел Преимущества типа JSON.

Чтобы включить поддержку типа JSON, вам необходимо задать следующие переменные окружения:

  • OTEL_AGENT_FEATURE_GATE_ARG='--feature-gates=clickhouse.json' — включает поддержку в OTel collector, гарантируя, что схемы создаются с использованием типа JSON.
  • BETA_CH_OTEL_JSON_SCHEMA_ENABLED=true (только ClickStack Open Source) — включает поддержку в приложении ClickStack UI, позволяя выполнять запросы к данным JSON.

Вы можете задать эти переменные окружения либо через параметры, либо в values.yaml, например:

values.yaml

hyperdx:
  ...
  env:
    - name: BETA_CH_OTEL_JSON_SCHEMA_ENABLED
      value: "true"

otel:
  ...
  env:
    - name: OTEL_AGENT_FEATURE_GATE_ARG
      value: "--feature-gates=clickhouse.json"

или через --set:

helm install my-clickstack clickstack/clickstack \
  --set "hyperdx.env[0].name=BETA_CH_OTEL_JSON_SCHEMA_ENABLED" \
  --set "hyperdx.env[0].value=true" \
  --set "otel.env[0].name=OTEL_AGENT_FEATURE_GATE_ARG" \
  --set "otel.env[0].value=--feature-gates=clickhouse.json"

Руководства по развертыванию

Дополнительные ресурсы