Установка для промышленной эксплуатации
- Структура дистрибутива и конфигурационный файл values.yaml
- Обзор сервисов дистрибутива и их сетевого взаимодействия
- Развертывание с внешним кластером PostgreSQL
- Использование собственных TLS-сертификатов
- Особенности развертывания библиотеки Highcharts в закрытом контуре
- Рекомендации по проектированию отказоустойчивой архитектуры
- Практика: настройка values.yamlдля production
- Итоги
Структура дистрибутива и конфигурационный файл values.yaml
Совет
Скрипт init.sh — это единая точка входа для развертывания дистрибутива и выполнения вспомогательных скриптов.
Внутри скрипта используются стандартные команды утилит kubectl и helm (менеджер пакетов для Kubernetes). Все доступные параметры конфигурации развертывания описаны в файле helm/values.yaml.
Структура дистрибутива
-
CHANGELOG.md— список изменений всех версий релизов. -
EULA.md— лицензионное соглашение конечного пользователя. Описывает условия использования программного обеспечения. -
README.md— основная документация по установке и настройке. -
datalens-enterprise-images.txt— список Docker-образов и их версий, которые используются в дистрибутиве. -
datalens-enterprise-images.tar.gz— архив Docker-образов. -
init.sh— главный скрипт для развертывания и администрирования дистрибутива. -
meta.json— метаданные о текущем релизе, включая версии ключевых компонентов и контрольные суммы релиза. -
bin/— содержит исполняемые файлы утилит:kubectl— инструменты для взаимодействия с кластером Kubernetes.helm— пакетный менеджер для управления Helm-чартами.helm-diff— вспомогательная утилита для управления Helm-релизами, помогает отображать список изменений при обновлении.stern— утилита для просмотра логов в Kubernetes-кластере.k9s— утилита для администрирования Kubernetes-кластера с визуальным интерфейсом внутри терминала.prgz— утилита для отображения прогресса распаковки архивов внутри дистрибутива. Необходима для поддержания SSH-сессии в рабочем состоянии в процессе распаковки.yq— инструмент для обработки и парсинга файлов JSON и YAML.
-
helm/— содержит Helm-чарты и шаблоны для развертывания:Chart.yaml— основная информация о Helm-чарте.values.yaml— файл конфигурации со значениями по умолчанию.templates/— шаблоны Kubernetes-манифестов (deployment,service,volumeи т. д.).
-
help/— содержит вспомогательные инструкции и примеры конфигураций:docs/id-sync.md/pdf/html— инструкция по настройке скрипта для синхронизации групп пользователей с внешними провайдерами.docs/ldap.md/pdf/html— инструкция по настройке интеграции с LDAP.docs/oidc.md/pdf/html— инструкция по настройке интеграции с OpenID, который совместим с внешним провайдером аутентификации на примере Keycloak.auth-provider-config.example.json— пример конфигурации для провайдеров аутентификации.docker-config.example.json— пример конфигурации для доступа к приватному реестру Docker-образов.idp-sync.js— пример синхронизации групп пользователей из внешней IdP-системы (Identity Provider).values.example.yaml— пример заполненного файла конфигурации с правильным экранированием значений. Значения указаны для примера и не могут быть использованы в таком виде для развертывания.
-
k3s/— содержит ресурсы для установки K3s-кластера полностью в офлайн-режиме:install.sh— скрипт установки и настройки K3s-кластера.k3s— утилита управления K3s-кластером.k3s-images.tar.zst— архив с системными образами для K3s-кластера.
Гибкая настройка конфигурации через файл values.yaml
Важно
Никогда не редактируйте ./helm/values.yaml напрямую! Иначе при ошибке в файле нарушится работа сервиса.
Для редактирования скопируйте файл ./helm/values.example.yaml и работайте с ним. Таким образом вы всегда сможете вернуться к изначальной конфигурации. Затем передайте путь к вашему файлу через аргумент --values.
Файл helm/values.yaml — часть базового шаблона развертывания. Прямое редактирование параметров конфигурации в этом файле приведет к некорректной проверке контрольной суммы дистрибутива при развертывании.
При использовании параметра --values все остальные аргументы, переданные в скрипт init.sh и связанные с конфигурацией развертывания дистрибутива, проигнорируются. Скрипт будет считать my-prod-values.yaml единственной точкой истины для развертывания, поэтому файл должен содержать корректное описание всех параметров развертывания.
cp ./helm/values.example.yaml ./my-prod-values.yaml
# ... отредактируйте my-prod-values.yaml ...
./init.sh --values ./my-prod-values.yaml
Если нужно переопределить только часть параметров через файл my-prod-values.yaml, то итоговая команда должна выглядеть так:
cp ./helm/values.example.yaml ./my-prod-values.yaml
# ... отредактируйте my-prod-values.yaml ...
./init.sh --values ./my-prod-values.yaml --values-merge
Параметр --values-merge позволяет указать неполный файл values.yaml в качестве источника конфигурации. Недостающие параметры будут подставлены из значений по умолчанию.
Обзор сервисов дистрибутива и их сетевого взаимодействия
DataLens — это набор микросервисов. Скрипт установки развернет их в Kubernetes. Внешний трафик от пользователя пройдет на Ingress-контроллер, который направит его на сервис ui. Далее ui будет взаимодействовать с бэкенд-сервисами (us, control_api, data_api) по внутренним сетевым именам Kubernetes.

Развертывание с внешним кластером PostgreSQL
Встроенная БД для production-среды — неэффективная практика. Нужно использовать внешний управляемый кластер PostgreSQL. При большом количестве пользователей это позволит гибко работать с объектами сервиса и выстроить отказоустойчивую архитектуру.
Алгоритм действий
-
В файле
my-prod-values.yamlотключите встроенный PostgreSQL:infra: postgres: enabled: false # Отключите встроенный PostgreSQL -
В том же файле в секции
postgresукажите параметры подключения к внешнему кластеру:postgres: POSTGRES_HOST: 'your-pg-host.db.example.com' POSTGRES_PORT: '5432' # ... и другие параметры пользователей и баз, если они отличаются от стандартных -
На старте пароли можно указать в
init.sh, но это небезопасно — лучше передавать их через секреты.
При запуске установки с таким values.yaml DataLens не будет создавать свой под с PostgreSQL, а сразу подключится к указанному вами внешнему кластеру.
Использование собственных TLS-сертификатов
Самоподписанные сертификаты подходят для тестирования, но в production браузеры покажут пользователям предупреждения — нужно использовать сертификаты, выпущенные вашим корпоративным или публичным центром сертификации (CA).
Для этого используются аргументы --ingress-tls-crt и --ingress-tls-key:
./init.sh \
--k3s-install \
--ingress-domain datalens.mycompany.com \
--ingress-tls \
--ingress-tls-crt /path/to/your/cert.pem \
--ingress-tls-key /path/to/your/private.key
Скрипт сохранит эти сертификаты в секреты Kubernetes, и Ingress-контроллер использует их для терминирования TLS-трафика.
Особенности развертывания библиотеки Highcharts в закрытом контуре
По умолчанию некоторые типы чартов используют библиотеку Highcharts. С будущими релизами планируется переезд в библиотеку D3. Дополнительного лицензирования не нужно, пользователь выступает в качестве аналитика.
Рекомендации по проектированию отказоустойчивой архитектуры
Высокая доступность (High Availability, или HA) достигается за счет дублирования компонентов. В Kubernetes это делается через увеличение количества реплик.
В файле values.yaml есть секция application, в которой для каждого сервиса можно указать replicas.
application:
control_api:
replicas: 2 # Запустите два экземпляра control-api — сервиса управления подключениями и датасетами
data_api:
replicas: 3 # Запустите три экземпляра data-api — сервиса, который обращается в источник
us:
replicas: 2 # Запустите два экземпляра us — сервиса для хранения метаданных
# ... и так далее
Рекомендации по масштабированию
- Начинайте масштабировать самые нагруженные компоненты:
data_api,control_api,us. - Для полноценного HA нужен отказоустойчивый кластер Kubernetes из нескольких нод (серверов). Установка с флагом
--k3s-installсоздает кластер из одной ноды и не является отказоустойчивой. - Используйте внешний отказоустойчивый кластер PostgreSQL и Redis®.
Практика: настройка values.yamlдля production
Подготовьте конфигурационный файл для сценария промышленной установки.
Цель: Создать файл prod-config.yaml, который настраивает DataLens для работы с внешним PostgreSQL и отключает демоданные.
Шаги
-
Скопируйте
./helm/values.example.yamlв файл с именемprod-config.yaml. -
Откройте
prod-config.yamlв текстовом редакторе. -
Найдите секцию
infra.postgresи установитеenabled: false. -
В секции
postgresизменитеPOSTGRES_HOSTнаprod-pg.db.internal. -
Найдите секцию
features.demoи установитеenabled: false, чтобы не развертывать демонстрационные дашборды в production-среде. -
Сохраните файл. Не нужно выполнять установку, достаточно только подготовить файл.
Совет
Предлагаем сделать задание самостоятельно, а далее узнать эталонный ответ, он под скрытым блоком ниже.
Эталонный ответ (фрагменты файла prod-config.yaml)
# ...
infra:
postgres:
enabled: false
# ...
postgres:
POSTGRES_HOST: prod-pg.db.internal
# ...
features:
demo:
enabled: false
# ...
Итоги
Вы разобрали важные аспекты установки DataLens для промышленной эксплуатации. Теперь вы знаете, как управлять конфигурацией через values.yaml и подключать внешние системы.