Установка с помощью Helm Chart
Установка с помощью Helm Chart подходит для развертывания TRON.ASOC в кластере Kubernetes. Для установки на одном сервере см. раздел Установка с помощью Docker Compose.
Перед началом работы
Перед началом установки TRON.ASOC с помощью Helm Chart убедитесь, что:
- на рабочем ПК установлены утилиты
kubectlиhelm; - настроена конфигурация
kubeconfig— командаkubectl get nodesвозвращает список узлов кластера; - есть доступ к реестру
pcr.tronasoc.ru; - Kubernetes-кластер соответствует следующим настройкам:
- на нем установлены и настроены
ingress-nginx-controllerиIngressClass; StorageClassнастроен и помечен какdefault— проверьте командойkubectl get storageclass;- у администратора есть права на создание ресурсов в целевом namespace;
- выделенные PV или внешние БД (PostgreSQL, ClickHouse, S3-совместимое хранилище) развернуты и доступны из кластера.
- на нем установлены и настроены
Порядок действий
Чтобы установить TRON.ASOC с помощью Helm Chart, выполните следующие шаги:
-
Задайте переменные окружения:
export CHART_USERNAME="<логин>"export CHART_PASSWORD="<пароль>"export CHART_URL="pcr.tronasoc.ru"export VERSION="1.7.1"noteЗначения
CHART_URL,CHART_USERNAME,CHART_PASSWORD,VERSIONзапросите у службы поддержки. -
Авторизуйтесь в реестре Helm-чартов:
helm registry login \--username $CHART_USERNAME \--password $CHART_PASSWORD \$CHART_URL -
Скачайте чарт и разархивируйте его:
helm pull oci://$CHART_URL/asoc/charts/asoc --version $VERSIONtar xvf asoc-$VERSION.tgzcd asoc -
Отредактируйте файл
values.yamlв соответствии с используемой инфраструктурой. Обязательные параметры перечислены в таблице ниже.
| Параметр | Описание |
|---|---|
domain | Доменное имя для веб-интерфейса |
registry.root | Корневая директория реестра контейнеров (например, registry.example.com/asoc) |
registry.credentials | Учетные данные реестра контейнеров (либо задайте pullSecret.create=false и собственные данные) |
ingress.className | Класс Ingress (при ingress.create=true) |
ingress.tlsSecret | Имя TLS-секрета (если он не задан, доступ будет по HTTP, если задан — по HTTPS) |
images.* | Теги образов компонентов (core, front, reporter, aiService, rag, fp) |
storage.class | Storage class |
config.APP_ASOC_FRONT | Публичный URL веб-интерфейса |
config.VITE_API_URL | URL API для веб-интерфейса (<домен>/api/v1) |
secrets.POSTGRES_* | Учетные данные PostgreSQL |
secrets.CLICKHOUSE_* | Учетные данные ClickHouse |
secrets.MINIO_* | Учетные данные MinIO/S3 |
secrets.NEW_ENCRYPTION_SECRET_KEY | Ключ шифрования базы данных (задается на шаге 5) |
Значение secrets.NEW_ENCRYPTION_SECRET_KEY нельзя изменять после первого развертывания, так как это приведет к потере доступа к зашифрованным данным.
-
Активируйте ИИ-ассистента. Для этого:
- установите значение
assistant: true:
features:assistant: true- укажите секретные данные:
secrets:ASOC_MCP_TOKEN: "<токен>" # токен авторизации `ai-service` при обращении к `core` по MCP (Model Context Protocol)AI_SERVICE_GIGACHAT_AUTH_KEY: "<ключ GigaChat>" # ключ авторизации GigaChatAI_SERVICE_SETTINGS_ENCRYPTION_KEY: "<Fernet-ключ>" # Fernet-ключ (32 байта в url-safe base64, 44 символа) для шифрования настроек `ai-service`noteКомпоненты ИИ-ассистента —
asoc-ai-serviceиasoc-rag(оба развернуты как Deployment). Данныеai-serviceхранятся на отдельном PVC, размер которого задается параметромstorage.aiService(по умолчанию 5 ГБ). - установите значение
-
Активируйте сервис Copilot (fp). Для этого:
- установите значение
features.fp: true; - укажите ключ
secrets.LLM_API_KEY.
- установите значение
Сервис fp работает внутри кластера и не публикуется наружу.
-
При необходимости включите защиту корневой файловой системы (
readOnlyRootFilesystem). Для этого:- задайте следующие значения:
readOnlyRootFilesystem:enabled: truewritablePaths:back: ["/tmp", "/var/tmp"]front: ["/tmp"]reporter: ["/tmp", "/var/tmp"]# остальные компоненты — аналогичноwritableSizeLimits:front: 512MinoteЗащита
readOnlyRootFilesystemтребует согласованных образа и чарта: образ должен писать только в разрешенные пути (/tmpили/data), а чарт — монтировать именно эти пути какwritablePaths. -
Сгенерируйте ключ шифрования для базы данных:
openssl rand -hex 32 -
Укажите сгенерированный ключ в параметре
secrets.NEW_ENCRYPTION_SECRET_KEYфайлаvalues.yaml. -
Установите TRON.ASOC:
helm upgrade --install asoc \
--create-namespace \
--namespace asoc \
--values values.yaml \
.
При использовании Helm v4 без заданной переменной HELM_DRIVER=secret повторное развертывание завершается ошибкой release: already exists. Перед выполнением команды задайте драйвер хранения релизов:
export HELM_DRIVER=secret
Чтобы передать значения параметров через командную строку, не редактируя файл values.yaml, используйте флаги --set и --set-string (для значений, которые не должны интерпретироваться как числа или значения boolean) с путями параметров из таблицы выше, например:
helm upgrade --install asoc . \
--create-namespace \
--namespace asoc \
--values values.yaml \
--set domain="<домен>" \
--set secrets.POSTGRES_USER="<username>" \
--set-string secrets.POSTGRES_PASSWORD="<password>" \
--set-string secrets.NEW_ENCRYPTION_SECRET_KEY="<ключ шифрования>"
Проверка работоспособности
Чтобы проверить работоспособность TRON.ASOC, выполните следующие шаги:
-
Убедитесь, что поды запущены:
kubectl get pods -n asocРезультат шага: поды имеют статус
Running, а показательREADYсоответствует ожидаемому (например,1/1). Если включен AI-ассистент (features.assistant: true), дополнительно ожидаются подыasoc-ai-service-*иasoc-rag-*. -
Проверьте статус
Ingress:kubectl get ingress -n asoc -
Откройте в браузере адрес, указанный в параметре
domain, и войдите в систему.