Skip to main content
Version: ИИ спец релиз

Установка с помощью 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, выполните следующие шаги:

  1. Задайте переменные окружения:

    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 запросите у службы поддержки.

  2. Авторизуйтесь в реестре Helm-чартов:

    helm registry login \
    --username $CHART_USERNAME \
    --password $CHART_PASSWORD \
    $CHART_URL
  3. Скачайте чарт и разархивируйте его:

    helm pull oci://$CHART_URL/asoc/charts/asoc --version $VERSION
    tar xvf asoc-$VERSION.tgz
    cd asoc
  4. Отредактируйте файл 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.classStorage class
config.APP_ASOC_FRONTПубличный URL веб-интерфейса
config.VITE_API_URLURL API для веб-интерфейса (<домен>/api/v1)
secrets.POSTGRES_*Учетные данные PostgreSQL
secrets.CLICKHOUSE_*Учетные данные ClickHouse
secrets.MINIO_*Учетные данные MinIO/S3
secrets.NEW_ENCRYPTION_SECRET_KEYКлюч шифрования базы данных (задается на шаге 5)
danger

Значение secrets.NEW_ENCRYPTION_SECRET_KEY нельзя изменять после первого развертывания, так как это приведет к потере доступа к зашифрованным данным.

  1. Активируйте ИИ-ассистента. Для этого:

    • установите значение assistant: true:
    features:
    assistant: true
    • укажите секретные данные:
    secrets:
    ASOC_MCP_TOKEN: "<токен>" # токен авторизации `ai-service` при обращении к `core` по MCP (Model Context Protocol)
    AI_SERVICE_GIGACHAT_AUTH_KEY: "<ключ GigaChat>" # ключ авторизации GigaChat
    AI_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 ГБ).

  2. Активируйте сервис Copilot (fp). Для этого:

    • установите значение features.fp: true;
    • укажите ключ secrets.LLM_API_KEY.

Сервис fp работает внутри кластера и не публикуется наружу.

  1. При необходимости включите защиту корневой файловой системы (readOnlyRootFilesystem). Для этого:

    • задайте следующие значения:
    readOnlyRootFilesystem:
    enabled: true
    writablePaths:
    back: ["/tmp", "/var/tmp"]
    front: ["/tmp"]
    reporter: ["/tmp", "/var/tmp"]
    # остальные компоненты — аналогично
    writableSizeLimits:
    front: 512Mi
    note

    Защита readOnlyRootFilesystem требует согласованных образа и чарта: образ должен писать только в разрешенные пути (/tmp или /data), а чарт — монтировать именно эти пути как writablePaths.

  2. Сгенерируйте ключ шифрования для базы данных:

    openssl rand -hex 32
  3. Укажите сгенерированный ключ в параметре secrets.NEW_ENCRYPTION_SECRET_KEY файла values.yaml.

  4. Установите TRON.ASOC:

helm upgrade --install asoc \
--create-namespace \
--namespace asoc \
--values values.yaml \
.
warning

При использовании Helm v4 без заданной переменной HELM_DRIVER=secret повторное развертывание завершается ошибкой release: already exists. Перед выполнением команды задайте драйвер хранения релизов:

export HELM_DRIVER=secret
tip

Чтобы передать значения параметров через командную строку, не редактируя файл 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, выполните следующие шаги:

  1. Убедитесь, что поды запущены:

    kubectl get pods -n asoc

    Результат шага: поды имеют статус Running, а показатель READY соответствует ожидаемому (например, 1/1). Если включен AI-ассистент (features.assistant: true), дополнительно ожидаются поды asoc-ai-service-* и asoc-rag-*.

  2. Проверьте статус Ingress:

    kubectl get ingress -n asoc
  3. Откройте в браузере адрес, указанный в параметре domain, и войдите в систему.