Установка Unica
Инфраструктурные компоненты готовы. Теперь устанавливаются сервисы продукта Unica. Каждый самостоятельный сервис вынесен в отдельный раздел; общими остаются только подготовительные действия, которые используются несколькими компонентами.
На этой странице
- 4.1. Имена Helm-релизов
- 4.2. Files API
- 4.3. DataManagement API
- 4.4. Embedding API
- 4.5. LLM API
- 4.6. Imagelab
- 4.7. Подготовка моделей Diarization и Recognition
- 4.8. Diarization API
- 4.9. Recognition Engine
- 4.10. SpeechRecognition API
- 4.11. Проверка прикладных API
- 4.12. Подготовка параметров Unica
- 4.13. Unica
- 4.14. Unica Agent
- 4.15. Unica Workflow
- 4.16. Unica Ops
4.1. Имена Helm-релизов
В командах ниже используются фиксированные имена Helm-релизов. В используемых пакетах имя релиза участвует в формировании DNS-имени Kubernetes Service, поэтому менять эти имена без одновременного изменения конфигурации зависимых сервисов не следует.
files-api
datamanagement-api
embedding-api
llm-api
imagelab
diarization-api
recognition-api
speechrecognition-api
unica
unica-agent
unica-workflow
unica-ops
Параметры, которые не указаны в командах установки явно, берутся из values соответствующей версии Helm-пакета. Перед изменением таких параметров следует посмотреть значения текущей версии пакета и переопределять только те настройки, которые действительно нужны для стенда.
Важно: после установки каждого прикладного сервиса дождитесь, пока его Pod-ы перейдут в состояние Running/Ready. Только после этого переходите к следующему сервису.
4.2. Files API
Files API предоставляет прикладным сервисам доступ к файлам в MinIO. Для подключения сервису передаются адрес MinIO и учётные данные объектного хранилища.
Передача учётных данных MinIO в Files API
Files API работает в пространстве имён unica-app, а Secret MinIO создан в unica-storage. Kubernetes Secret доступен только внутри своего пространства имён, поэтому для Files API создаётся Secret minio в unica-app с теми же учётными данными.
MINIO_ACCESS_KEY="$(kubectl -n unica-storage get secret minio -o jsonpath='{.data.MINIO_ROOT_USER}' | base64 -d)"
MINIO_SECRET_KEY="$(kubectl -n unica-storage get secret minio -o jsonpath='{.data.MINIO_ROOT_PASSWORD}' | base64 -d)"
kubectl -n unica-app create secret generic minio \
--from-literal=MINIO_ROOT_USER="${MINIO_ACCESS_KEY}" \
--from-literal=MINIO_ROOT_PASSWORD="${MINIO_SECRET_KEY}" \
--dry-run=client -o yaml | kubectl apply -f -
Параметры --dry-run=client -o yaml | kubectl apply -f - позволяют одной и той же командой как создать Secret при первой установке, так и обновить его при повторном выполнении.
Установка Files API
Helm-релиз запускает Files API в unica-app, подключает внутренний адрес MinIO и использует подготовленный Secret с учётными данными.
helm upgrade --install files-api \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-files \
--version <FILES_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.files" \
--set-string env.MINIO_ENDPOINT="minio.unica-storage.svc.cluster.local:9000" \
--set-string env.MINIO_WITH_SSL="false" \
--set secret.enabled=false \
--set secret.name=minio
4.3. DataManagement API
DataManagement API использует PostgreSQL для хранения данных и Files API для работы с файлами.
Подключение DataManagement к PostgreSQL
Пароль пользователя DataManagement считывается из ранее созданного Secret PostgreSQL, после чего формируется строка подключения к отдельной базе datamanagement_db.
DATAMANAGEMENT_PASSWORD="$(kubectl -n unica-db get secret postgresql -o jsonpath='{.data.DATAMANAGEMENT_PASSWORD}' | base64 -d)"
DATAMANAGEMENT_POSTGRES="Host=postgresql.unica-db.svc.cluster.local;Port=5432;Database=datamanagement_db;Username=datamanagement_user;Password=${DATAMANAGEMENT_PASSWORD}"
Установка DataManagement API
DataManagement API получает строку подключения к своей базе PostgreSQL и внутренний адрес Files API.
helm upgrade --install datamanagement-api \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-datamanagement \
--version <DATAMANAGEMENT_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.datamanagement" \
--set-string env.ConnectionStrings__Postgres="${DATAMANAGEMENT_POSTGRES}" \
--set-string env.FilesApiOptions__Url="http://files-api.unica-app.svc.cluster.local:8080"
4.4. Embedding API
Embedding API принимает запросы на построение векторных представлений и передаёт их в vLLM, где запущена модель Qwen3-Embedding-8B.
Установка Embedding API
Embedding API подключается к внутреннему маршрутизатору vLLM и передаёт ему запросы на построение векторных представлений.
helm upgrade --install embedding-api \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-embedding \
--version <EMBEDDING_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.embedding" \
--set-string env.Vllm__Url="http://vllm-router-service.unica-infra.svc.cluster.local/v1"
4.5. LLM API
LLM API предоставляет прикладной интерфейс к языковой модели Gemma-4-12B, запущенной в vLLM. Для работы с файлами сервис также использует Files API.
Установка LLM API
LLM API подключается к тому же внутреннему маршрутизатору vLLM для работы с Gemma-4-12B и к Files API для операций с файлами.
helm upgrade --install llm-api \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-llm \
--version <LLM_API_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.llm" \
--set-string env.Vllm__Url="http://vllm-router-service.unica-infra.svc.cluster.local/v1" \
--set-string env.FilesApi__Url="http://files-api.unica-app.svc.cluster.local:8080"
4.6. Imagelab
Imagelab используется Unica для работы с изображениями. Для взаимодействия между сервисами создаётся отдельный токен.
Токен Imagelab
Для вызовов Imagelab из Unica используется отдельный токен. Он генерируется перед установкой сервиса и позднее добавляется в общую конфигурацию Unica.
IMAGELAB_TOKEN="$(openssl rand -hex 32)"
Установка Imagelab
Helm-релиз запускает Imagelab в unica-app и передаёт созданный токен, который позднее будет использован основной Unica.
helm upgrade --install imagelab \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-imagelab \
--version <IMAGELAB_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.imagelab" \
--set-string env.UNICA_IMAGELAB_TOKEN="${IMAGELAB_TOKEN}"
4.7. Подготовка моделей Diarization и Recognition
До развёртывания Diarization API и Recognition Engine необходимо загрузить и распаковать модели на узле с GPU (${GPU_NODE}), а затем установить необходимые права доступа к каталогам.
Скачать архив моделей:
cd /tmp
wget \
"https://downloads.rp-it.ru/asr.tar.gz" \
-O asr.tar.gz
Архив содержит каталоги:
diarization/
recognition/
Проверить содержимое архива:
tar -tzf /tmp/asr.tar.gz | head -50
Создать базовый каталог и распаковать модели:
mkdir -p /storage
tar -xzf /tmp/asr.tar.gz \
-C /storage
После распаковки должны существовать:
/storage/diarization
/storage/recognition
Установить владельца каталогов и их содержимого:
chown -R 2000:2000 \
/storage/diarization \
/storage/recognition
chmod 755 \
/storage/diarization \
/storage/recognition
Проверить:
ls -ld \
/storage/diarization \
/storage/recognition
du -sh \
/storage/diarization \
/storage/recognition
После успешной проверки архив можно удалить:
rm -f /tmp/asr.tar.gz
Важно: Diarization API и Recognition Engine разворачиваются только после загрузки и распаковки asr.tar.gz. Владельцем каталогов /storage/diarization и /storage/recognition должен быть 2000:2000.
4.8. Diarization API
Diarization API использует модель из /storage/diarization, отдельный MIG-ресурс nvidia.com/mig-2g.10gb, RabbitMQ и Files API.
Подключение Diarization API к RabbitMQ
Имя пользователя и пароль берутся из Secret, созданного на этапе настройки RabbitMQ. Из них формируется внутренний адрес подключения к очереди сообщений.
RABBITMQ_USER="$(kubectl -n unica-infra get secret rabbitmq-diarization-user -o jsonpath='{.data.username}' | base64 -d)"
RABBITMQ_PASSWORD="$(kubectl -n unica-infra get secret rabbitmq-diarization-user -o jsonpath='{.data.password}' | base64 -d)"
RABBITMQ_DIARIZATION_URL="amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@rabbitmq.unica-infra.svc.cluster.local:5672/"
Установка Diarization API
Сервис закрепляется за ${GPU_NODE}, получает MIG-профиль 2g.10gb, подключает локальную модель и использует RabbitMQ для обработки заданий.
helm upgrade --install diarization-api \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-diarization \
--version <DIARIZATION_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set runtimeClassName=nvidia \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.diarization" \
--set persistence.size="20Gi" \
--set persistence.localPath="/storage/diarization" \
--set persistence.nodeHostname="${GPU_NODE}" \
--set gpu.nvidiaResource="nvidia.com/mig-2g.10gb" \
--set-string env.RABBITMQ_URL="${RABBITMQ_DIARIZATION_URL}" \
--set-string env.FILES_API_URL="http://files-api.unica-app.svc.cluster.local:8080"
4.9. Recognition Engine
Recognition Engine использует модель из /storage/recognition, отдельный MIG-ресурс nvidia.com/mig-1g.5gb, RabbitMQ и Files API.
Подключение Recognition Engine к RabbitMQ
Recognition Engine использует собственную учётную запись RabbitMQ. Значения считываются из Secret и используются только при формировании строки подключения.
RABBITMQ_USER="$(kubectl -n unica-infra get secret rabbitmq-recognition-user -o jsonpath='{.data.username}' | base64 -d)"
RABBITMQ_PASSWORD="$(kubectl -n unica-infra get secret rabbitmq-recognition-user -o jsonpath='{.data.password}' | base64 -d)"
RABBITMQ_RECOGNITION_URL="amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@rabbitmq.unica-infra.svc.cluster.local:5672/"
Установка Recognition Engine
Recognition Engine запускается на ${GPU_NODE}, получает MIG-профиль 1g.5gb, подключает локальную модель распознавания и собственную учётную запись RabbitMQ.
helm upgrade --install recognition-api \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-recognitionengine \
--version <RECOGNITION_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set runtimeClassName=nvidia \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.recognitionengine" \
--set persistence.size="20Gi" \
--set persistence.localPath="/storage/recognition" \
--set persistence.nodeHostname="${GPU_NODE}" \
--set gpu.nvidiaResource="nvidia.com/mig-1g.5gb" \
--set-string env.RABBITMQ_URL="${RABBITMQ_RECOGNITION_URL}" \
--set-string env.FILES_API_URL="http://files-api.unica-app.svc.cluster.local:8080"
4.10. SpeechRecognition API
SpeechRecognition API объединяет работу PostgreSQL, RabbitMQ, Files API, DataManagement API, Diarization API и Recognition Engine в единую цепочку обработки.
Подключения SpeechRecognition API
SpeechRecognition API использует отдельную базу PostgreSQL и учётную запись RabbitMQ asr. На этом шаге значения извлекаются из Kubernetes Secrets и собираются в параметры подключения для Helm-релиза.
ASR_DB_PASSWORD="$(kubectl -n unica-db get secret postgresql -o jsonpath='{.data.ASR_PASSWORD}' | base64 -d)"
ASR_RABBIT_USER="$(kubectl -n unica-infra get secret rabbitmq-asr-user -o jsonpath='{.data.username}' | base64 -d)"
ASR_RABBIT_PASSWORD="$(kubectl -n unica-infra get secret rabbitmq-asr-user -o jsonpath='{.data.password}' | base64 -d)"
ASR_POSTGRES="Host=postgresql.unica-db.svc.cluster.local;Port=5432;Database=asr_db;Username=asr_user;Password=${ASR_DB_PASSWORD}"
Установка SpeechRecognition API
Этот сервис связывает ранее установленные компоненты обработки аудио: PostgreSQL, RabbitMQ, DataManagement API, Files API, Diarization API и Recognition Engine.
helm upgrade --install speechrecognition-api \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-speechrecognition \
--version <SPEECHRECOGNITION_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.speechrecognition" \
--set-string env.ConnectionStrings__Postgres="${ASR_POSTGRES}" \
--set-string env.DataManagementApiOptions__Url="http://datamanagement-api.unica-app.svc.cluster.local:8080" \
--set-string env.FilesApiOptions__Url="http://files-api.unica-app.svc.cluster.local:8080" \
--set-string env.DiarizationApiOptions__Url="http://diarization-api.unica-app.svc.cluster.local:8080" \
--set-string env.RecognitionEngineApiOptions__Url="http://recognition-api.unica-app.svc.cluster.local:8080" \
--set-string env.Messaging__Host="rabbitmq://rabbitmq.unica-infra.svc.cluster.local:5672" \
--set-string env.Messaging__Username="${ASR_RABBIT_USER}" \
--set-string env.Messaging__Password="${ASR_RABBIT_PASSWORD}"
4.11. Проверка прикладных API
Перед установкой основной Unica все прикладные API должны быть запущены и готовы принимать запросы внутри кластера.
kubectl -n unica-app get pods -o wide
4.12. Подготовка параметров Unica
Перед установкой основного сервиса собираются актуальные учётные данные инфраструктуры и один раз создаются прикладные секреты. Эти значения сохраняются в /root/unica.env и затем используются Unica, Agent, Workflow и Ops.
Общий файл параметров /root/unica.env
Перед установкой основной части Unica собираем в одном защищённом файле адреса, учётные данные и токены, которые будут повторно использоваться несколькими Helm-релизами. Это позволяет не генерировать значения заново между установкой Unica, Agent, Workflow и Ops.
UNICA_DB_PASSWORD="$(kubectl -n unica-db get secret postgresql -o jsonpath='{.data.UNICA_PASSWORD}' | base64 -d)"
QDRANT_API_KEY="$(kubectl -n unica-db get secret qdrant -o jsonpath='{.data.api-key}' | base64 -d)"
MINIO_ACCESS_KEY="$(kubectl -n unica-storage get secret minio -o jsonpath='{.data.MINIO_ROOT_USER}' | base64 -d)"
MINIO_SECRET_KEY="$(kubectl -n unica-storage get secret minio -o jsonpath='{.data.MINIO_ROOT_PASSWORD}' | base64 -d)"
IMAGELAB_TOKEN="$(kubectl -n unica-app get secret imagelab-secret -o jsonpath='{.data.UNICA_IMAGELAB_TOKEN}' | base64 -d)"
DATABASE_URL="postgresql://unica_user:${UNICA_DB_PASSWORD}@postgresql.unica-db.svc.cluster.local:5432/unica_db"
APP_SECRET="$(openssl rand -base64 48 | tr -d '\n')"
SESSION_SECRET="$(openssl rand -hex 32)"
AGENT_RUNTIME_TOKEN="$(openssl rand -hex 32)"
AGENT_GATEWAY_TOKEN="$(openssl rand -hex 32)"
WORKFLOW_RUNTIME_TOKEN="$(openssl rand -hex 32)"
WORKFLOW_GATEWAY_TOKEN="$(openssl rand -hex 32)"
JANITOR_RUNTIME_TOKEN="$(openssl rand -hex 32)"
JANITOR_GATEWAY_TOKEN="${JANITOR_RUNTIME_TOKEN}"
Создать файл:
umask 077
cat > /root/unica.env <<EOF
export UNICA_HOST='<unica-domain>'
export DATABASE_URL='${DATABASE_URL}'
export QDRANT_API_KEY='${QDRANT_API_KEY}'
export MINIO_ACCESS_KEY='${MINIO_ACCESS_KEY}'
export MINIO_SECRET_KEY='${MINIO_SECRET_KEY}'
export IMAGELAB_TOKEN='${IMAGELAB_TOKEN}'
export APP_SECRET='${APP_SECRET}'
export SESSION_SECRET='${SESSION_SECRET}'
export AGENT_RUNTIME_TOKEN='${AGENT_RUNTIME_TOKEN}'
export AGENT_GATEWAY_TOKEN='${AGENT_GATEWAY_TOKEN}'
export WORKFLOW_RUNTIME_TOKEN='${WORKFLOW_RUNTIME_TOKEN}'
export WORKFLOW_GATEWAY_TOKEN='${WORKFLOW_GATEWAY_TOKEN}'
export JANITOR_RUNTIME_TOKEN='${JANITOR_RUNTIME_TOKEN}'
export JANITOR_GATEWAY_TOKEN='${JANITOR_GATEWAY_TOKEN}'
EOF
chmod 600 /root/unica.env
source /root/unica.env
Проверить наличие переменных, не выводя сами секреты:
for v in \
DATABASE_URL \
QDRANT_API_KEY \
MINIO_ACCESS_KEY \
MINIO_SECRET_KEY \
IMAGELAB_TOKEN \
APP_SECRET \
SESSION_SECRET \
AGENT_RUNTIME_TOKEN \
AGENT_GATEWAY_TOKEN \
WORKFLOW_RUNTIME_TOKEN \
WORKFLOW_GATEWAY_TOKEN \
JANITOR_RUNTIME_TOKEN \
JANITOR_GATEWAY_TOKEN
do
[ -n "${!v:-}" ] && echo "$v=SET" || echo "$v=EMPTY"
done
Все значения должны быть SET.
Для компонентов Unica-* используется селектор узла unica-role=app. Метка назначается рабочим узлам на этапе их подключения к Kubernetes. Перед установкой необходимо проверить, что есть хотя бы один узел в состоянии Ready с этой меткой:
kubectl get nodes -l unica-role=app -o wide
4.13. Unica
Основной Helm-релиз получает адреса всех обязательных внутренних сервисов, учётные данные инфраструктуры, домен стенда и прикладные токены. Именно этот компонент публикуется наружу через ingress-nginx.
source /root/unica.env
helm upgrade --install unica \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-unica \
--version <UNICA_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.unica" \
--set ingress.host="${UNICA_HOST}" \
--set-string env.common.DATABASE_URL="${DATABASE_URL}" \
--set-string env.common.QDRANT_URL="http://qdrant.unica-db.svc.cluster.local:6333" \
--set-string env.common.QDRANT_API_KEY="${QDRANT_API_KEY}" \
--set-string env.common.MINIO_ENDPOINT="http://minio.unica-storage.svc.cluster.local:9000" \
--set-string env.common.MINIO_ACCESS_KEY="${MINIO_ACCESS_KEY}" \
--set-string env.common.MINIO_SECRET_KEY="${MINIO_SECRET_KEY}" \
--set-string env.common.REDIS_URL="redis://redis.unica-infra.svc.cluster.local:6379/" \
--set-string env.common.UNICA_AGENT_RUNTIME_URL="http://unica-agent.unica-app.svc.cluster.local:8000" \
--set-string env.common.UNICA_AGENT_RUNTIME_TOKEN="${AGENT_RUNTIME_TOKEN}" \
--set-string env.common.UNICA_AGENT_GATEWAY_URL="http://unica.unica-app.svc.cluster.local:5000/api/internal/agent-runtime" \
--set-string env.common.UNICA_AGENT_GATEWAY_TOKEN="${AGENT_GATEWAY_TOKEN}" \
--set-string env.common.UNICA_WORKFLOW_RUNTIME_URL="http://unica-workflow.unica-app.svc.cluster.local:5001" \
--set-string env.common.UNICA_WORKFLOW_RUNTIME_TOKEN="${WORKFLOW_RUNTIME_TOKEN}" \
--set-string env.common.UNICA_WORKFLOW_GATEWAY_TOKEN="${WORKFLOW_GATEWAY_TOKEN}" \
--set-string env.common.UNICA_LLM_API_URL="http://llm-api.unica-app.svc.cluster.local:8080" \
--set-string env.common.UNICA_EMBEDDING_API_URL="http://embedding-api.unica-app.svc.cluster.local:8080" \
--set-string env.common.UNICA_FILES_API_URL="http://files-api.unica-app.svc.cluster.local:8080" \
--set-string env.common.UNICA_SPEECH_RECOGNITION_API_URL="http://speechrecognition-api.unica-app.svc.cluster.local:8080" \
--set-string env.common.UNICA_DATA_MANAGEMENT_API_URL="http://datamanagement-api.unica-app.svc.cluster.local:8080" \
--set-string env.application.STATIC_ALLOWED_HOSTNAMES="${UNICA_HOST}" \
--set-string env.application.APP_SECRET="${APP_SECRET}" \
--set-string env.application.SESSION_SECRET="${SESSION_SECRET}" \
--set-string env.application.UNICA_IMAGELAB_URL="http://imagelab.unica-app.svc.cluster.local:8000" \
--set-string env.application.UNICA_IMAGELAB_TOKEN="${IMAGELAB_TOKEN}" \
--set-string env.application.UNICA_JANITOR_RUNTIME_URL="http://unica-ops.unica-app.svc.cluster.local:5004" \
--set-string env.application.UNICA_JANITOR_RUNTIME_TOKEN="${JANITOR_RUNTIME_TOKEN}"
Обязательные адреса прикладных API задаются явно, так как пакет Helm проверяет их наличие.
Docling является необязательным компонентом и по умолчанию отключён в пакете Helm. Если Docling развёрнут на шаге «Docling Serve», к команде установки Unica необходимо добавить:
--set-string env.common.DOCLING_ENABLED="true" \
--set-string env.common.DOCLING_API_URL="http://docling-serve.unica-infra.svc.cluster.local:5001"
Если Docling не используется, дополнительные параметры не требуются.
4.14. Unica Agent
Unica Agent устанавливается после основного сервиса и использует отдельные токены среды выполнения и шлюза, согласованные с параметрами Unica.
UNICA_AGENT_RUNTIME_TOKEN и UNICA_AGENT_GATEWAY_TOKEN — разные значения и должны совпадать с соответствующими значениями, переданными в основной пакет Helm Unica.
source /root/unica.env
helm upgrade --install unica-agent \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-unica-agent \
--version <UNICA_AGENT_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.unica.agent" \
--set-string env.UNICA_AGENT_RUNTIME_TOKEN="${AGENT_RUNTIME_TOKEN}" \
--set-string env.UNICA_AGENT_GATEWAY_TOKEN="${AGENT_GATEWAY_TOKEN}"
4.15. Unica Workflow
Workflow использует тот же AGENT_RUNTIME_TOKEN, что и Unica Agent, и собственную пару токенов среды выполнения и шлюза.
source /root/unica.env
helm upgrade --install unica-workflow \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-unica-workflow \
--version <UNICA_WORKFLOW_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.unica.workflow" \
--set-string env.MINIO_ENDPOINT="http://minio.unica-storage.svc.cluster.local:9000" \
--set-string env.REDIS_URL="redis://redis.unica-infra.svc.cluster.local:6379/" \
--set-string env.DATABASE_URL="${DATABASE_URL}" \
--set-string env.MINIO_ACCESS_KEY="${MINIO_ACCESS_KEY}" \
--set-string env.MINIO_SECRET_KEY="${MINIO_SECRET_KEY}" \
--set-string env.UNICA_AGENT_RUNTIME_TOKEN="${AGENT_RUNTIME_TOKEN}" \
--set-string env.UNICA_WORKFLOW_RUNTIME_TOKEN="${WORKFLOW_RUNTIME_TOKEN}" \
--set-string env.UNICA_WORKFLOW_GATEWAY_TOKEN="${WORKFLOW_GATEWAY_TOKEN}"
4.16. Unica Ops
Unica Ops использует Qdrant, MinIO, Redis и PostgreSQL, а также токены, подготовленные ранее в /root/unica.env. Дополнительные секреты на этом шаге создавать не требуется.
source /root/unica.env
helm upgrade --install unica-ops \
oci://<REGISTRY>/<HELM_CHARTS_PATH>/rospartner-ai-unica-ops \
--version <UNICA_OPS_CHART_VERSION> \
--namespace unica-app \
--set nodeSelector.unica-role=app \
--set image.repository="<REGISTRY>/<IMAGES_PATH>/rospartner.ai.unica.ops" \
--set-string env.QDRANT_URL="http://qdrant.unica-db.svc.cluster.local:6333" \
--set-string env.MINIO_ENDPOINT="http://minio.unica-storage.svc.cluster.local:9000" \
--set-string env.REDIS_URL="redis://redis.unica-infra.svc.cluster.local:6379/" \
--set-string env.DATABASE_URL="${DATABASE_URL}" \
--set-string env.QDRANT_API_KEY="${QDRANT_API_KEY}" \
--set-string env.MINIO_ACCESS_KEY="${MINIO_ACCESS_KEY}" \
--set-string env.MINIO_SECRET_KEY="${MINIO_SECRET_KEY}" \
--set-string env.UNICA_JANITOR_RUNTIME_TOKEN="${JANITOR_RUNTIME_TOKEN}" \
--set-string env.UNICA_JANITOR_GATEWAY_TOKEN="${JANITOR_GATEWAY_TOKEN}"