Установка#
Состав дистрибутива#
Компонент |
Элемент дистрибутива |
Описание |
|---|---|---|
GDCE |
./pl/ |
Файлы для репозитория шаблона сайта (site-template) |
./bh/GetDocs |
Расширение для Visual Studio Code и инструмент перевода |
|
./bh/GetDocs_x86_64_mac |
Бинарный файл для Mac Intel для локальной сборки документации |
|
./bh/GetDocs_x86_64_win |
Бинарный файл для Windows x64 для локальной сборки документации |
|
./bh/l10n-darwin-arm64 |
Бинарный файл для Mac M для локального перевода документации |
|
./bh/l10n-darwin-x86_64 |
Бинарный файл для Mac Intel для локального перевода документации |
|
./bh/l10n-windows-amd64 |
Бинарный файл для Windows x64 для локального перевода документации |
|
./conf/helm/application/services/workflows |
helm-chart, содержащий workflows |
|
./conf/helm/application/infra/s3-sync |
helm-chart сервиса s3-sync |
|
./conf/helm/application/infra/argo-workflows |
helm-chart сервиса argo-workflows |
|
./conf/helm/application/services/config-sync |
helm-chart сервиса config-sync |
|
./conf/helm/application/infra/morris |
helm-chart сервиса Morris |
|
./conf/helm/application/services/eliza-bge-embedder |
helm-chart сервиса eliza-bge-embedder |
|
./conf/helm/application/services/eliza-converter |
helm-chart сервиса eliza-converter |
|
./conf/helm/application/services/eliza-embedder |
helm-chart сервиса eliza-embedder |
|
./conf/helm/application/services/eliza-index |
helm-chart сервиса eliza-index |
|
./conf/helm/application/services/eliza-query |
helm-chart сервиса eliza-query |
|
./conf/helm/application/services/eliza-writer |
helm-chart сервиса eliza-writer |
|
./conf/helm/application/services/qdrant |
helm-chart сервиса qdrant |
|
./conf/helm/application/services/eliza-stack |
helm-chart сервиса eliza-stack |
|
./conf/helm/application/services/eliza-reader |
helm-chart сервиса eliza-reader |
|
GDCS |
./conf/helm/application/site |
helm-chart сервиса отображения документации на основе Nginx |
./conf/helm/application/services/app-chat |
helm-chart сервиса app-chat |
|
./conf/helm/application/services/app-styleguide |
helm-chart сервиса app-styleguide |
Порядок установки#
Подготовка окружения (обязательный)#
Переключитесь на нужный контекст:
kubectl config get-contexts kubectl config use-context <your-context>Создайте пространства имен. Создание всех пространств имен требуется только при первичной установке:
kubectl create ns argo-wf kubectl create ns getdocs # для установки ИИ kubectl create ns eliza # для интеграции с системой управления идентификацией и контролем доступа kubectl create ns morrisДля промышленных инсталляций настоятельно рекомендуется установка с интеграцией с системой управления идентификацией и контролем доступа.
При обновлении создавать/изменять требуется только то, что указано в таблице с информацией по обновлению:
Пространство имен
2.6
5.1.0
getdocs
не требует обновления
не требует обновления
morris
не требует обновления
не требует обновления
argo-wf
не требует обновления
не требует обновления
eliza
требует определения
не требует обновления
Создайте следующие Kubernetes секреты. Создание всех секретов требуется только при первичной установке. При обновлении создавать/изменять требуется только то, что указано в таблице с информацией по обновлению:
Пространство имен
Имя секрета
Тип
2.6
5.1.0
argo-wf
kubernetes.io/dockerconfigjsonне требует обновления
не требует обновления
kubernetes.io/tlsне требует обновления
не требует обновления
Opaqueне требует обновления
не требует обновления
getdocs
kubernetes.io/dockerconfigjsonне требует обновления
не требует обновления
kubernetes.io/tlsне требует обновления
не требует обновления
Opaqueтребует обновления
не требует обновления
Opaqueне требует обновления
не требует обновления
Opaqueне требует обновления
не требует обновления
Opaqueне требует обновления
не требует обновления
OpaqueOpaqueтребует определения
не требует обновления
site
Opaqueтребует определения
не используется, не требует удаления
argo-creds (в предыдущих версиях -
site)Opaqueне требует обновления
Opaqueтребует определения
Opaqueтребует определения
eliza
kubernetes.io/dockerconfigjsonтребует определения
не требует обновления
kubernetes.io/tlsтребует определения
не требует обновления
morris
kubernetes.io/dockerconfigjsonне требует обновления
не требует обновления
kubernetes.io/tlsне требует обновления
не требует обновления
Opaqueне требует обновления
не требует обновления
Проверьте, что все требуемые секреты созданы, с помощью следующих команд:
kubectl get secrets -n argo-wf kubectl get secrets -n getdocs kubectl get secrets -n morris kubectl get secrets -n elizaПроверьте, что секреты содержат значения, с помощью следующей команды:
kubectl get secret <YOUR-SECRET-NAME> -n <YOUR-NAMESPACE> -o yamlСоздайте PersistentVolumeClaim (PVC) в пространстве имен getdocs:
# Создание переменных в терминале STORAGE_CLASS_NAME=<YOUR-VALUE> STORAGE_SIZE=<YOUR-VALUE> # Создание PVC kubectl apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: labels: app.kubernetes.io/part-of: getdocs name: getdocs-pvc namespace: getdocs spec: accessModes: - ReadWriteOnce storageClassName: $STORAGE_CLASS_NAME resources: requests: storage: $STORAGE_SIZE EOFПроверьте, что PersistentVolumeClaim создан и его поле
STATUSсодержит значениеBound:kubectl get pvc getdocs-pvc -n getdocsСоздайте в S3 bucket (в инструкции и примерах по умолчанию предполагается использование S3 с именем getdocs).
Ручная установка GetDocs (обязательный)#
Примечание
Подразумевается, что переменные
<YOUR-SITE-HOST>и<YOUR-IAM-SYSTEM-HOST>имеют одно значение для всех сервисов.В дистрибутиве в файлах values-* всегда указывается актуальная версия сервиса. Эту версию необходимо использовать при первичной установке или обновлении. Значение версии сервиса в values-файлах, где определен один сервис, располагается по пути .image.tag. Значение версии сервиса в values-файлах, где определено несколько сервисов, располагается по пути <название сервиса>.image.tag, где
<название сервиса>— название конкретного сервиса.
Установка GDCE#
Все действия выполняются из корня распакованного архива GDCE-<ВЕРСИЯ-ПРОДУКТА>-<ВЕРСИЯ-СБОРКИ>-distrib.zip, расположенного в архиве GDC-<ВЕРСИЯ-ПРОДУКТА>-owned-distrib.zip.
Установка Morris#
Релиз |
Обновление |
|---|---|
2.6 |
не требует обновления |
5.1.0 |
не требует обновления |
Важно
Устанавливается только при интеграции с системой управления идентификацией и контролем доступа. Пропустите данный раздел, если интеграция не предусмотрена.
Убедитесь, что создано пространство имен
morris, созданы секретыnexus-imagepull,getdocs-tlsиmorris. Их создание описано в разделе Подготовка окружения.В файле ./conf/helm/application/infra/morris/values-external.yaml задайте свои значения. Перечень переменных:
Название
Тип
Описание
Пример значения
2.6
configMap.OAUTH2_PROXY_OIDC_ISSUER_URLStringПараметр конфигурации OAuth2 Proxy, который указывает URL-адрес поставщика идентификации (IdP) для OpenID Connect (OIDC). Этот URL используется для получения токена доступа от IdP при аутентификации пользователей
https://<YOUR-IAM-SYSTEM-HOST>/realms/<YOUR-REALM>не требует обновления
configMap.OAUTH2_PROXY_REDIRECT_URLStringПараметр конфигурации OAuth2 Proxy, который указывает URL-адрес обратного перенаправления после успешной аутентификации пользователя с использованием стороннего поставщика аутентификации
https://<YOUR-SITE-HOST>/oauth2/callbackне требует обновления
configMap.OAUTH2_PROXY_WHITELIST_DOMAINSStringПараметр конфигурации OAuth2 Proxy, который определяет список доменов, которым разрешено обращаться к защищенным ресурсам через прокси
"<YOUR-SITE-HOST>, <YOUR-SUBDOMAIN-SITE-HOST>"не требует обновления
ingress.classNameStringПоле в спецификации IngressClass, которое указывает контроллер Ingress, к которому относится данный класс
nginxне требует обновления
ingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>не требует обновления
ingress.tls[0].hostsListХосты в первом объекте TLS, связанном с объектом Ingress. В этом значении указываются домены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
<YOUR-SITE-HOST>не требует обновления
redis.pvc.storageStringРазмер хранилища, которое будет использовать Redis
300Miне требует обновления
Более подробную информацию по настройке можно найти на сайте соответствующего проекта:
Установите helm-chart:
helm upgrade --install morris ./conf/helm/application/infra/morris/ --values=./conf/helm/application/infra/morris/values-external.yaml -n morris --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n morrisПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n morrisЕсли статус отличается от
Running, необходима дополнительная диагностика.
Установка Argo Workflows#
Релиз |
Обновление |
|---|---|
2.6 |
не требует обновления |
5.1.0 |
не требует обновления |
Убедитесь, что создано пространство имен
argo-wf, созданы секретыnexus-imagepull,getdocs-tlsиargo-server-sso. Их создание описано в разделе Подготовка окружения.В файле ./conf/helm/application/infra/argo-workflows/values-external.yaml задайте свои значения. Перечень переменных:
Название
Тип
Описание
Пример значения
server.ingress.tls[0].hostsListДомены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
["<YOUR-SITE-HOST>"]server.ingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>server.sso.enabledboolВключает или отключает интеграцию с системой управления идентификацией и контролем доступа. Отключение данной опции рекомендуется только для тестовых инсталляций
trueserver.sso.issuerString(Используется при интеграции с системой управления идентификацией и контролем доступа)
Корневой URL-адрес поставщика идентификации OIDChttps://<YOUR-IAM-SYSTEM-HOST>/realms/<YOUR-REALM>server.sso.redirectUrlString(Используется при интеграции с системой управления идентификацией и контролем доступа)
Корневой URL-адрес поставщика идентификации OIDChttps://<YOUR-SITE-HOST>/argowf/oauth2/callbackserver.extraArgsListДополнительные аргументы для настройки интеграции с системой управления идентификацией и контролем доступа.
- для включенной интеграции:
["--auth-mode=client", "--auth-mode=sso"]
- для отключенной интеграции:["--auth-mode=client", "--auth-mode=server"]Более подробную информацию по настройке можно найти на сайте соответствующего проекта: Argo Workflows.
Добавьте репозиторий argo:
helm repo add argo https://argoproj.github.io/argo-helmУстановите helm-chart:
helm -n argo-wf upgrade --install -f ./conf/helm/application/infra/argo-workflows/values-external.yaml argo-workflows argo/argo-workflows --version 0.41.2Проверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n argo-wfПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n argo-wfЕсли статус отличается от
Running, необходима дополнительная диагностика.
После установки argo-workflows будет доступен по адресу https://<YOUR-SITE-HOST>/argowf/.
Установка workflows#
Релиз |
Обновление |
|---|---|
2.6 |
требует обновления |
5.1.0 |
требует обновления |
Важно
Убедитесь, что создан S3 bucket.
Необходимость создания описана в разделе Подготовка окружения.
В файле ./conf/helm/application/services/workflows/values-external.yaml задайте свои значения. Перечень переменных:
Название
Тип
Описание
Пример значения
2.6
5.1.0
s3.bucketStringНазвание S3 bucket для хранения артефактов результатов работы workflows
getdocsне требует обновления
не требует обновления
s3.endpointStringРегион-специфичный URL, указывающий на конечную точку доступа к S3 bucket
region.my-domain.ruне требует обновления
не требует обновления
*.image.registryStringРеестр образов Docker, используемый для развертывания сервисов
docker.ioне требует обновления
не требует обновления
*.image.repositoryStringАдрес репозитория, из которого нужно скачать образ для развертывания сервисов
не требует обновления
не требует обновления
extractor.configmap.gitSshServerUrlsStringСписок Git-хостингов, с которыми будет взаимодействовать GetDocs на этапе получения данных
<YOUR-GIT-LOCATION>=<YOUR-GIT-TYPE>,ssh://git@<YOUR-GIT-SSH-PREFIX>;..:<YOUR-GIT-LOCATION-N>=<YOUR-GIT-TYPE>,ssh://git@<YOUR-GIT-SSH-PREFIX-N>;
В переменной<YOUR-GIT-TYPE>возможны только следующие значения:bitbucket,gitlab,gitverse,gitea,sourcecontrol.
В переменной<YOUR-GIT-LOCATION>необходимо указывать адрес Git-сервера для доступа по HTTPS без указания протокола. В переменной<YOUR-GIT-SSH-PREFIX>указывается адрес Git-сервера для доступа по SSH:bitbucket.ru:8999/bitbucket-ci=bitbucket,ssh://git@bitbucket.ru:8999;не требует обновления
не требует обновления
loader.configmap.SITE_URLStringАдрес сайта, по которому будет доступна собранная документация
https://<YOUR-SITE-HOST>не требует обновления
не требует обновления
loader.configmap.ELIZA_API_BASE_URLStringАдрес конечной точки, по которой доступен ИИ Eliza. Через эту конечную точку осуществляется индексация собираемой документации для дальнейшей возможности поиска через чат-бота. Значение по умолчанию
http://<YOUR-SITE-HOST>/api/v1/. Предполагается, что чат-бот и API будут доступны по тому же адресу, что и сайт с документацией. Настройка конечной точки производится в разделе Установка Eliza indexhttp://<YOUR-SITE-HOST>/api/v1/требует определения
не требует обновления
loader.configmap.ELIZA_INDEXStringНазвание коллекции в векторной базе, которая будет использоваться для хранения векторов. В переменной возможно только следующее значение:
getdocs. Информация по установке векторной базы и настройка индекса (коллекции) описана в разделе Установка векторной базы Qdrantgetdocsтребует определения
не требует обновления
configSync.configmap.SITE_TEMPLATE_REPO_URLStringТолько для Site
SSH-ссылка на репозиторий шаблона сайта (его создание описано в разделе Создание служебных репозиториев)ssh://git@<YOUR-GIT-HOST>/<YOUR-PROJECT>/<YOUR-GIT-REPO-NAME>не требует обновления
не требует обновления
configSync.configmap.SITE_TEMPLATE_REPO_BRANCHStringТолько для Site
Название ветки репозитория шаблона сайтаmasterне требует обновления
не требует обновления
configSync.configmap.SITE_CONFIG_REPO_URLStringТолько для Site
SSH-ссылка на репозиторий с конфигурацией сайта (его создание описано в разделе Создание служебных репозиториев)ssh://git@<YOUR-GIT-HOST>/<YOUR-PROJECT>/content-configurationне требует обновления
не требует обновления
configSync.configmap.SITE_CONFIG_REPO_BRANCHStringВетка репозитория с конфигурацией сайта
masterне требует обновления
не требует обновления
configSync.configmap.VALIDATION_RULES_REPO_URLStringТолько для Site
SSH-ссылка на репозиторий с правилами валидации (его создание описано в разделе Создание служебных репозиториев)ssh://git@<YOUR-GIT-HOST>/<YOUR-PROJECT>/<YOUR-GIT-REPO-NAME>не требует обновления
не требует обновления
configSync.configmap.VALIDATION_RULES_REPO_BRANCHStringНазвание ветки репозитория с правилами валидации
masterне требует обновления
не требует обновления
aiValidator.configmap.NER_BASE_URLStringСсылка на конечную точку named-entity recognition (NER), который будет использоваться для ИИ-валидации. Предполагается, что будет использоваться адрес
<YOUR-SITE-HOST>/api/v1/stack/entitieshttps://example.com/api/v1/stack/entitiesтребует определения
не требует обновления
aiValidator.configmap.NER_MODEL_NAMEStringУказывается название модели, которая будет использоваться для ИИ-валидации. В переменной возможно только следующее значение:
ruBERT-getdocs. Для корректной валидации необходимо обучать модели на своих данныхruBERT-getdocsтребует определения
не требует обновления
aiValidator.configmap.GIGACHAT_AUTH_URLStringURL конечной точки для получения токена аутентификации в GigaChat
https://ngw.devices.sberbank.ru:9443/api/v2/oauthтребует определения
aiValidator.configmap.GIGACHAT_PREDICT_URLStringURL конечной точки для отправки запросов в GigaChat
https://gigachat.devices.sberbank.ru/api/v1/chat/completionsтребует определения
transformer.configmap.AI_CHAT_STYLEGUIDE_IMPORT_URLStringАдрес, по которому на сайт загружаются стили для чат-бота. Для работы необходимо наличие сервиса
app-styleguide. Значение должно быть задано следующим образом://<YOUR-APP-STYLEGUIDE-HOST>/sbt-tt-styleguide.js//style.example.com/sbt-tt-styleguide.jsтребует определения
не требует обновления
validator.configmap.ESCAPE_FOLDERSStringИспользуется для пропуска при валидации определенных папок (например, сгенерированных переводов) у конкретных продуктов
l10n,postgre-15.5-en/**,postgre-15.5-ru/**требует определения
transformer.configmap.FORCE_PUBLISH_SITEStringЕсли
true, то сайт будет опубликован даже при возникновении ошибок при его сборкеfalseне требует обновления
не требует обновления
transformer.configmap.AI_CHAT_IMPORT_URLStringАдрес, по которому на сайт загружается чат-бот. Для работы необходим сервис
app-chat. Значение должно быть задано следующим образом://<<YOUR-APP-CHAT-HOST>/sbt-tt-chat.js//chat.example.com/sbt-tt-chat.jsтребует определения
не требует обновления
configSync.configmap.STAGES_REPO_URLStringSSH-ссылка на репозиторий продуктового учета, где описывается код и версия продукта (его создание описано в разделе Создание служебных репозиториев)
ssh://git@<YOUR-GIT-HOST>/<YOUR-PROJECT>/<YOUR-GIT-REPO-NAME>требует определения
configSync.configmap.STAGES_REPO_BRANCHStringНазвание ветки в репозитории продуктового учета (
STAGES_REPO_URL)masterтребует определения
не требует обновления
wiper.comfigmap.MAX_DAYS_TO_KEEPStringДокументация, не помеченная меткой
approved, старше указанного значения будет удаляться. Документация будет удаляться при запуске wiper30требует определения
translator.configmap.L10N_GIGACHAT_URLStringАдрес, по которому принимаются запросы GigaChat
https://gigachat.devices.sberbank.ru/api/v1требует определения
translator.configmap.L10N_GIGACHAT_AUTH_URLStringАдрес, на который отправляются запросы для получения токена авторизации
https://ngw.devices.sberbank.ru:9443/api/v2/oauthтребует определения
translator.configmap.L10N_GIGACHAT_MODELStringНазвание LLM-модели GigaChat
GigaChat-2-Maxтребует определения
builder.configmap.RELATIVE_GLOBAL_CONFIG_FILEStringПуть до конфигурационного файла в репозитории с глобальной конфигурацией. Репозиторий с глобальной конфигурацией указывается в
configSync.configmap.GLOBAL_CONFIG_REPO_URLsbt_config.yamlтребует определения
nexusBaseUrlURL registry для загрузки релизных артефактов
<NEXUS_BASE_URL>https://example.com/nexus-ciтребует определения
devNexusBaseUrlURL registry для загрузки временных артефактов
<NEXUS_BASE_URL>https://example.com/nexus-ciтребует определения
nexusRepoНазвание репозитория, куда будут загружаться релизные артефакты при использовании workflow load-to-nexus
PRODтребует определения
devNexusRepoНазвание репозитория, куда будут загружаться временные артефакты при использовании workflow load-to-nexus
PRODтребует определения
synchronization.configmap.*Указывается для каждого workflow. Определяет, какое количество workflows одного типа может работать одновременно. Например, если указать
load-to-nexus: 5, то одновременно можно запускать 5 workflows load-to-nexusзадано по умолчанию, переопределите при необходимости
Примечание
В личном кабинете клиента образ будет именоваться по шаблону
getdocs2-<название-сервиса>. Например, для сервиса loader образ будет называтьсяgetdocs2-loader.Установите helm-chart:
helm upgrade --install workflows ./conf/helm/application/services/workflows/ --values=./conf/helm/application/services/workflows/values-external.yaml -n getdocs --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n getdocs | grep workflowsПроверьте, что Workflows установлены:
kubectl get workflowtemplate -n getdocs
После установки все workflows доступны по адресу https://<YOUR-SITE-HOST>/argowf/workflow-templates/getdocs.
Для корректной работы GetDocs запустите синхронизацию файлов конфигурации из Git в docstorage. Для этого выполните следующие шаги:
Перейдите по ссылке
https://<YOUR-SITE-HOST>/argowf/cron-workflows/getdocs/config-sync-cron.Нажмите SUBMIT и дождитесь окончания выполнения синхронизации.
Установка s3-sync#
Релиз |
Обновление |
|---|---|
2.6 |
не требует обновления |
5.1.0 |
не требует обновления |
В файле ./conf/helm/application/infra/s3-sync задайте свои значения. Перечень переменных:
Название
Тип
Описание
Пример значения
s3.bucketStringНазвание S3 bucket для хранения артефактов результатов работы workflows
getdocss3.endpointStringРегион-специфичный URL, указывающий на конечную точку доступа к S3 bucket
region.my-domain.rus3.upload_cutoffStringПараметр конфигурации в rclone, который определяет максимальный размер части файла при использовании загрузки
Примечание
Более подробную информацию по настройке Rclone можно найти на сайте проекта: https://rclone.org/s3/.
Установите helm-chart:
helm upgrade --install s3-sync ./conf/helm/application/infra/s3-sync/ -n getdocs -f ./conf/helm/application/infra/s3-sync/values-external.yaml --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n getdocs --filter s3-syncПроверьте наличие CronJob в пространстве имен
getdocs:kubectl get cronjob s3-sync-cronjob -n getdocs
Установка GDCS#
Релиз |
Обновление |
|---|---|
2.6 |
не требует обновления |
5.1.0 |
требует обновления |
Все действия выполняются из корня распакованного архива GDCS-<ВЕРСИЯ-ПРОДУКТА>-<ВЕРСИЯ-СБОРКИ>-distrib.zip, расположенного в архиве GDC-<ВЕРСИЯ-ПРОДУКТА>-owned-distrib.zip.
В файле ./conf/helm/application/services/site/values-external.yaml задайте свои значения. Перечень переменных:
Название
Тип
Описание
Пример значения
2.6
5.1.0
.image.registryStringРеестр образов Docker, используемый для развертывания сервисов
docker.ioне требует обновления
не требует обновления
.image.repositoryStringАдрес репозитория, из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону
*/getdocs2-siteне требует обновления
не требует обновления
ingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>не требует обновления
не требует обновления
ingress.tls[0].hostsListХосты в первом объекте TLS, связанном с объектом Ingress. В этом значении указываются домены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
["<YOUR-SITE-HOST>"]не требует обновления
не требует обновления
ingress.annotationsListАннотации для интеграции с системой управления идентификацией и контролем доступа
Оставьте стандартные значения, если настроена интеграция с системой управления идентификацией и контролем доступа. Если интеграция не предусмотрена, удалите этот блок
не требует обновления
не требует обновления
configmap.GETDOCS_SIGNOUT_URLStringПараметр, который определяет адрес для выхода из системы
/oauth2/sign_out?rd=https%3A%2F%2F<YOUR-IAM-SYSTEM-HOST>%2Frealms%2F<YOUR-REALM>%2Fprotocol%2Fopenid-connect%2Flogout?redirect_uri=$http_refererне требует обновления
не требует обновления
configMap.GETDOCS_GUIDE_URLStringСсылка на документацию продукта GetDocs
не требует обновления
не требует обновления
configMap.GETDOCS_ARGOWF_URLStringСсылка на Argo Workflows. При установке в строгом соответствии с инструкцией адрес имеет следующий вид:
<YOUR-SITE-HOST>/argowf/workflows/getdocs<YOUR-SITE-HOST>/argowf/workflows/getdocsне требует обновления
не требует обновления
configMap.GETDOCS_ARGO_PROXY_PASSStringАдрес API Argo Workflows, на который будут отправляться запросы для запуска Workflows
http://argo-workflows-server:2746требует определения
не требует обновления
configMap.GETDOCS_ARGO_NAMESPACEStringУказывается пространство имен, в котором будут запускаться workflows. Предполагается, что будет использоваться пространство имен
getdocsgetdocsтребует определения
не требует обновления
Примечание
В личном кабинете клиента образ называется
getdocs2-site.Установите helm-chart:
helm upgrade --install site ./conf/helm/application/services/site/ -n getdocs -f ./conf/helm/application/services/site/values-external.yaml --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n getdocs --filter siteПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n getdocs -l app.kubernetes.io/name=siteЕсли статус отличается от
Running, необходима дополнительная диагностика.
Создание Kubernetes секретов (обязательный)#
nexus-imagepull#
В терминале задайте следующие переменные с адресом Docker реестра, а также логином и паролем для авторизации в этом реестре:
DOCKER_SERVER=<YOUR-VALUE> DOCKER_USER=<YOUR-VALUE> DOCKER_PASS=<YOUR-VALUE>Для пространства имен
morrisвыполните следующее:Важно
Создаются только при интеграции с системой управления идентификацией и контролем доступа. Пропустите данный пункт, если интеграция не предусмотрена.
kubectl create -n morris secret docker-registry nexus-imagepull \ --docker-server=${DOCKER_SERVER} --docker-username=${DOCKER_USER} \ --docker-password=${DOCKER_PASS} --docker-email=""Для пространства имен
argo-wfвыполните следующее:kubectl create -n argo-wf secret docker-registry nexus-imagepull \ --docker-server=${DOCKER_SERVER} --docker-username=${DOCKER_USER} \ --docker-password=${DOCKER_PASS} --docker-email=""Для пространства имен
getdocsвыполните следующее:kubectl create -n getdocs secret docker-registry nexus-imagepull \ --docker-server=${DOCKER_SERVER} --docker-username=${DOCKER_USER} \ --docker-password=${DOCKER_PASS} --docker-email=""Для пространства имен
elizaвыполните следующее:kubectl create -n eliza secret docker-registry nexus-imagepull \ --docker-server=${DOCKER_SERVER} --docker-username=${DOCKER_USER} \ --docker-password=${DOCKER_PASS} --docker-email=""
getdocs-tls#
Данный секрет используется для HTTPS-подключения в сервисах argo-workflows, morris и getdocs.
Сертификат должен быть выпушен для всех доменных имен, которые будут доступны вне кластера Kubernetes или с использованием маски *.
В переменной
TLS_CERTзадайте путь до файла с цепочкой сертификатов и в переменнойTLS_KEY- путь до файла с приватным ключом:TLS_CERT=path/to/cert/file TLS_KEY=path/to/key/fileДля следующих пространств имен создайте секрет:
morris:Важно
Создается только при интеграции с системой управления идентификацией и контролем доступа. Пропустите данный пункт, если интеграция не предусмотрена.
kubectl create -n morris secret tls getdocs-tls --cert=${TLS_CERT}--key=${TLS_KEY};argo-wf:kubectl create -n argo-wf secret tls getdocs-tls --cert=${TLS_CERT} --key=${TLS_KEY};getdocs:kubectl create -n getdocs secret tls getdocs-tls --cert=${TLS_CERT}--key=${TLS_KEY};eliza:kubectl create -n eliza secret tls getdocs-tls --cert=${TLS_CERT} --key=${TLS_KEY};
getdocs-ssh#
Данный секрет необходим для загрузки Git-репозиториев.
Задайте переменные
OAUTH2_PROXY_CLIENT_IDиOAUTH2_PROXY_CLIENT_SECRET:OAUTH2_PROXY_CLIENT_ID=<YOUR_CLIENT-ID> OAUTH2_PROXY_CLIENT_SECRET=<YOUR_CLIENT-SECRET>В переменной
SSH_PRIVATE_KEYзадайте путь к файлу с OPENSSH PRIVATE KEY:SSH_PRIVATE_KEY=path/to/private_key/fileСоздайте секрет:
kubectl create -n getdocs secret generic getdocs-ssh \ --from-file=id_ed25519=${SSH_PRIVATE_KEY};
argo-creds#
Важно
В версиях 2.6 и старше секрет назывался site. Переименован в argo-creds в версии 5.1.0.
Данный секрет используется в сервисе site.
Создайте токен Argo Workflows, используя следующие команды:
kubectl -n argo-wf create sa sa-argo-creds kubectl -n getdocs create rolebinding sa-argo-creds --role=argo-workflows-rx --serviceaccount=argo-wf:sa-argo-creds kubectl -n argo-wf apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: sa-argo-creds.service-account-token annotations: kubernetes.io/service-account.name: sa-argo-creds type: kubernetes.io/service-account-token EOFПосле создания токена укажите его в переменной
ARGO_TOKEN:ARGO_TOKEN="$(kubectl -n argo-wf get secret "sa-argo-creds.service-account-token" -o=jsonpath='{.data.token}' | base64 --decode)"Создайте секрет:
kubectl create -n getdocs secret generic argo-creds --from-literal=token=${ARGO_TOKEN}
mvn-settings#
Создайте файл settings.xml в соответствии с примером ниже:
<settings> <servers> <server> <id>foss-repository</id> <configuration> <httpHeaders> <property> <name>Authorization</name> <value>Basic**YOUR-BASIC-AUTH**</value> </property> </httpHeaders> </configuration> </server> <server> <id>public</id> <username>**YOUR-USERNAME**</username> <password>**YOUR-PASSWD**</password> </server> <server> <id>internal</id> <username>**YOUR-USERNAME**</username> <password>**YOUR-PASSWD**</password> </server> </servers> <mirrors> ... </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>public</id> <url>**REPO-URL**</url> </repository> ... </repositories> <pluginRepositories> <pluginRepository> <id>public</id> <url>**REPO-URL**</url> </pluginRepository> ... </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> </settings>Замените следующие плейсхолдеры в settings.xml актуальными значениями:
Название
Тип
Описание
**YOUR-BASIC-AUTH**Stringbase64-кодированная связка логин/пароль
**YOU-USERNAME**StringЛогин от Maven репозитория
**YOU-PASSWD**StringПароль от Maven репозитория
**YOU-PASSWD**StringПароль от Maven репозитория
**REPO-URL**StringURL соответствующих Maven репозиториев
В переменной
SETTINGS_XMLзадайте путь к файлу settings.xml:SETTINGS_XML=path/to/settings.xmlСоздайте секрет:
kubectl create -n getdocs secret generic mvn-settings --from-file=settings.xml=${SETTINGS_XML}
morris#
Важно
Выполняется только при интеграции с системой управления идентификацией и контролем доступа. Пропустите данный раздел, если интеграция не предусмотрена.
Для создания секрета выполните следующий скрипт. В переменной OAUTH2_PROXY_CLIENT_ID задайте Client ID от Clinet в IDP и в переменной OAUTH2_PROXY_CLIENT_SECRET - Client Secret от Clinet в IDP. Client Authenticator должна быть Client ID and Secret:
kubectl -n morris apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
name: morris
type: Opaque
stringData:
oauth2-proxy.cfg: |
client_id = ${OAUTH2_PROXY_CLIENT_ID}
client_secret = ${OAUTH2_PROXY_CLIENT_SECRET}
cookie_secret = $(python3 -c 'import os,base64; print(base64.b64encode(os.urandom(16)).decode("ascii"))')
EOF
s3-creds#
Для создания секрета выполните следующий скрипт. Укажите в переменной ACCESS_KEY Access Key ID и в переменной SECRET_KEY - Secret Key для подключения к хранилищу S3:
kubectl -n getdocs apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
name: s3-creds-test
type: Opaque
stringData:
accessKey: ${ACCESS_KEY}
secretKey: ${SECRET_KEY}
rclone.conf: |
[s3-backup]
type = s3
access_key_id = ${ACCESS_KEY}
secret_access_key = ${SECRET_KEY}
EOF
argo-server-sso#
В переменной
CLIENT_IDукажите Client ID от Clinet в IDP и в переменнойCLIENT_SECRET- Client Secret от Clinet в IDP. Client Authenticator должна бытьClient ID and Secret. Предполагается, что сервисы Morris и Argo Workflows используют один и тот же Client в IDP.OAUTH2_PROXY_CLIENT_ID=<YOUR_CLIENT_ID> OAUTH2_PROXY_CLIENT_SECRET=<YOUR_CLIENT_SECRET>Создайте секрет:
kubectl create -n argo-wf secret generic argo-server-sso \ --from-literal=client-id=${OAUTH2_PROXY_CLIENT_ID} \ --from-literal=client-secret=${OAUTH2_PROXY_CLIENT_SECRET};
nexus#
В переменной
NEXUS_USERукажите логин пользователя и в переменнойNEXUS_PASS- пароль для подключения к Nexus:NEXUS_USER=<YOUR_NEXUS_USER> NEXUS_PASS=<YOUR_NEXUS_PASSWORD>Создайте секрет:
kubectl create -n getdocs secret generic nexus \ --from-literal=NEXUS_PASS=${NEXUS_PASS} \ --from-literal=NEXUS_USER=${NEXUS_USER}
eliza-creds#
Создайте следующие переменные в терминале:
ELIZA_S3_ACCESS_KEY=<S3_ACCESS_KEY> ELIZA_S3_BUCKET=<S3_BUCKE> ELIZA_S3_ENDPOINT_URL=<S3_ENDPOINT_URL> ELIZA_S3_SECRET_KEY=<S3_SECRET_KEY>Создайте секрет:
kubectl create -n getdocs secret generic eliza-creds \ --from-literal=ELIZA_S3_ACCESS_KEY=${ELIZA_S3_ACCESS_KEY} \ --from-literal=ELIZA_S3_BUCKET=${ELIZA_S3_BUCKET} \ --from-literal=ELIZA_S3_ENDPOINT_URL=${ELIZA_S3_ENDPOINT_URL} \ --from-literal=ELIZA_S3_SECRET_KEY=${ELIZA_S3_SECRET_KEY}
gigachat#
Создайте следующие переменные в терминале:
API_KEY: <GIGACHAT_API_KEY>Создайте секрет:
kubectl create -n getdocs secret generic gigachat \ --from-literal=API_KEY=${API_KEY}
sberworks#
Создайте следующие переменные в терминале:
SW_PASSWORD: <SW_PASS> SW_USERNAME: <SW_USER> WORKS_PASSWORD: <SW_PASS> WORKS_USERNAME: <SW_PASS>Создайте секрет:
kubectl create -n getdocs secret generic sberworks \ --from-literal=SW_PASSWORD=${SW_PASSWORD} \ --from-literal=SW_USERNAME=${SW_USERNAME} \ --from-literal=WORKS_PASSWORD=${SW_PASSWORD} \ --from-literal=WORKS_USERNAME=${SW_USERNAME}
zk#
Важно
Секрет требуется для внутренних нужд, в качестве <ZK_USERNAME> можно указать любое значение.
Создайте следующие переменные в терминале:
ZK_USERNAME = <ZK_USERNAME>Создайте секрет:
kubectl create -n getdocs secret generic zk \ --from-literal=ZK_USERNAME=${ZK_USERNAME}
Создание служебных репозиториев (обязательный)#
Репозиторий шаблона сайта (site-template)#
Релиз |
Обновление |
|---|---|
2.6 |
требует обновления |
5.1.0 |
требует обновления |
Создайте репозиторий с содержимым папки ./pl/ компонента GDCE.
Репозиторий с конфигурацией сайта (content-configuration)#
Релиз |
Обновление |
|---|---|
2.6 |
требует обновления |
5.1.0 |
требует обновления |
Создайте репозиторий со следующей структурой:
site-config/
product-registry/
categories.json
products.json
components.json
<PRODUCT-CODE-1>/ # Вариант с отдельным файлом для каждой версии продукта
<VERSION-11>
components.ini
<VERSION-12>
components.ini
...
<VERSION-1N>
components.ini
<PRODUCT-CODE-N>/ # Вариант с единым файлом для всех версий продукта
components.ini
...
doc-config.ini
Пример структуры каталогов в репозитории конфигурации сайта:
content-configuration/
├── BD/ // каталог с названием кода продукта
│ ├── 5.11.2/ // каталог с названием версии продукта
│ │ └── components.ini // файл конфигурации продукта
│ ├── 5.15.0/
│ │ └── components.ini
│ └── ...
├── SEI/
│ ├── 3.7/
│ │ └── components.ini
│ └── ...
└── ...
Минимально необходимым является файл doc-config.ini:
[env] # Правила сборки
stage: draft, approved, release # Пространство для публикации. Доступны: draft - документация в разработке, approved - документация прошла внутренние согласования, release - готовая документация для пользователей
package: <PACKAGE-1>, <PACKAGE-2>, ..., <PACKAGE-N> # Состав комплекта документации
audience: <AUDIENCE-1>, <AUDIENCE-2>, ..., <AUDIENCE-N> # Целевая аудитория
# Пользователи, которые могут устанавливать тег release для публикации контента
release-managers: user1,
user2
# Правила группировки документов
# [Имя группы документов]
[Общие документы]
# имя-директории-с-разделом-документации-в-репозитории: отображаемое-на-сайте-название-раздела
about: Описание
architecture: Детальная архитектура
pmi: Программа и методика испытаний
release-notes: Примечания к релизу
sizing: Методика расчета сайзинга
deployment-diagrams: Диаграммы развертывания
[Руководства]
installation-guide: Руководство по установке
administration-guide: Руководство по системному администрированию
developer-guide: Руководство прикладного разработчика
operators-guide: Руководство оператора
security-guide: Руководство по безопасности
[*]
*: {title}
[Дополнительная документация]
*: {title}
[Справочники API]
apis: {title}
Репозиторий с правилами валидации (content-validation)#
Релиз |
Обновление |
|---|---|
2.6 |
требует обновления |
5.1.0 |
требует обновления |
Загрузите и распакуйте архив с базовыми правилами валидации контента:
Инициализируйте git-репозиторий с разархивированным контентом.
Подробная информация о правилах создания и ведения правил валидации приведена в официальной документации Vale.
Установка Eliza (обязательный)#
Релиз |
Обновление |
|---|---|
5.1.0 |
не требует обновления |
Eliza - вопросно-ответная система, основанная на технологии искусственного интеллекта, для поиска информации в документации, опубликованной в GetDocs. Реализована в виде чат-бота. Также используется для валидации корректности указания используемого ПО в системных требованиях в документации и валидации текста на изображениях.
Важно
Добавлен в версии продукта 2.6.
Чат-бот будет устанавливается на том же кластере, что и GetDocs.
Убедитесь, что создано пространство имен
elizaи секретыnexus-imagepull,getdocs-tls,eliza-creds, как описано в разделе Подготовка окружения.Создайте S3 bucket с именем
eliza.Для работы поды с моделями необходимо создать PVC. Этот volume будет использоваться всеми подами сервиса Eliza, которым нужен доступ к моделям. Размер рассчитывается в зависимости от размера и количества моделей, которые будут использованы. Рекомендуется выделять не менее 10Gi.
Создание PVC#
STORAGE_CLASS_NAME=<YOUR-VALUE>
STORAGE_SIZE=<YOUR-VALUE>
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-models
namespace: eliza
spec:
accessModes:
- ReadWriteOnce
storageClassName: $STORAGE_CLASS_NAME
resources:
requests:
storage: $STORAGE_SIZE
EOF
Подготовка моделей#
Для работы ИИ необходимо наличие моделей в volume pod, который будет их использовать. При установке администратор самостоятельно выбирает способ загрузки модели в volume. Ниже приведены скрипты, которые помогут загрузить модель в volume.
Следующий скрипт скачивает модели на локальный ПК и архивирует их:
import os
import shutil
import zipfile
from huggingface_hub import snapshot_download
def download_and_archive_models(models_list, output_dir="models"):
for model_name in models_list:
print(f"Downloading {model_name}...")
# Создание директории для сохранения модели, если ее еще нет
model_output_dir = os.path.join(output_dir, model_name)
os.makedirs(model_output_dir, exist_ok=True)
# Скачивание папки модели целиком
snapshot_download(repo_id=model_name, local_dir=model_output_dir)
# Архивирование директории модели в ZIP
archive_path = f"{output_dir}/{model_name}.zip"
with zipfile.ZipFile(archive_path, "w", compression=zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(model_output_dir):
for file in files:
file_path = os.path.join(root, file)
relative_path = os.path.relpath(file_path, model_output_dir)
zipf.write(file_path, arcname=relative_path)
# Удаление временной директории с распакованной моделью
shutil.rmtree(model_output_dir)
print(f"{model_name} successfully downloaded and archived!")
if __name__ == "__main__":
models_list = ["intfloat/multilingual-e5-small"] # Список моделей для скачивания
download_and_archive_models(models_list)
В models_list укажите через запятую модели для скачивания из https://huggingface.co/ и архивирования.
Далее эти модели можно добавить в ранее созданный PVC. Для этих целей можно использовать команду kubectl cp.
Если нет возможности передать файлы через kubectl cp (например не позволяют настройки LoadBalancer в кластере), то можно загрузить модели на S3 вручную и далее с помощью скрипта ниже загрузить их в volume.
Для работы скрипта необходимо, чтобы S3 bucket был настроен на возможность скачивания файлов без указания учетных данных.
Для примера используется S3 http://minio.minio-tenant.svc.cluster.local/eliza.
Загрузка производится в volume models. Для примера указана загрузка модели intfloat-multilingual-e5-small.
kubectl apply -f - <<EOF
apiVersion: batch/v1
kind: Job
metadata:
name: models-downloader
namespace: eliza
spec:
ttlSecondsAfterFinished: 30
template:
spec:
imagePullSecrets:
- name: nexus-imagepull
volumes:
- name: models
persistentVolumeClaim:
claimName: pvc-models
tolerations:
- key: "secGroup"
operator: "Equal"
value: "secure"
effect: "NoSchedule"
containers:
- name: models
image: 'alpine/curl:2.1'
command: ['sh', '-c', '
if [ ! -d /models/models--intfloat--multilingual-e5-small ];
then wget http://minio.minio-tenant.svc.cluster.local/eliza/intfloat-multilingual-e5-small.zip -P /models/ ;
unzip -n /models/intfloat-multilingual-e5-small.zip -d /models/ ;
rm -f /models/intfloat-multilingual-e5-small.zip ;
else echo " models--intfloat--multilingual-e5-small" ;
fi ;
']
volumeMounts:
- mountPath: /models
name: models
restartPolicy: Never
EOF
Установка векторной базы Qdrant#
В файле
./conf/helm/application/services/qdrant/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория, из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону
*/vectors/qdrantqdrant/qdrantpersistence.sizeStringУказывается размер хранилища, которое будет выделено под векторную базу. Размер зависит от количества векторов, планируемых для хранения. Рекомендуется указывать не менее 5Gi
5Gipersistence.storageClassNameStringУказывается, какой
storageClassNameбудет использоваться при создании volumehostpathУстановите helm-chart:
helm upgrade --install eliza-vectors ./conf/helm/application/services/qdrant --values=./conf/helm/application/services/qdrant/values-external.yaml -n eliza --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n eliza --filter eliza-vectorsПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n eliza -l app.kubernetes.io/name=qdrantСоздайте коллекцию (индекс) с именем
getdocsи размерность вектора 384 (размер вектора зависит от модели. Если вы используете отличные от указанных в инструкции моделей, то размер индекса может быть другой). Для этого выполните следующее:Подключитесь к векторной базе:
kubectl port-forward svc/eliza-vectors-qdrant -n eliza 6333:6333Отправьте запрос через HTTP:
curl --location --request PUT 'http://localhost:6333/collections/getdocs' \ --header 'Content-Type: application/json' \ --data-raw '{ "vectors": { "size": 384, "distance": "Cosine" } }'Проверьте, что коллекция создана:
curl --location --request GET 'http://localhost:6333/collections/getdocs/exists'Если получено значение
exist, то коллекция создана успешно.
Установка Eliza index#
В файле
./conf/helm/application/services/index/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория (обратите внимание, что ранее
registryиrepositoryуказывались раздельно. Теперь подrepositoryподразумевается полный путь до Docker-образа без указания тега), из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону*/eliza/indexeliza/indexingress.classNameStringПоле в спецификации IngressClass, которое указывает контроллер Ingress, к которому относится данный класс
nginxingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>ingress.tls[0].hostsListХосты в первом объекте TLS, связанном с объектом Ingress. В этом значении указываются домены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
["<YOUR-SITE-HOST>"]bucketNameStringНазвание bucket, в котором будут храниться проиндексированные документы (создание bucket описано в разделе Установка Eliza)
getdocsconfigMap.config.objects.pathStringАдрес S3 хранилища, где создан bucket для проиндексированных документов
http://minio.minio-tenant.svc.cluster.localconfigMap.config.objects.loginStringЛогин от S3 хранилища, где создан bucket для проиндексированных документов
getdocsconfigMap.config.objects.passwordStringПароль от S3 хранилища, где создан bucket для проиндексированных документов
getdocsУстановите helm-chart:
helm upgrade --install eliza-index ./conf/helm/application/services/eliza-index --values=./conf/helm/application/services/eliza-index/values-external.yaml -n eliza --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n eliza --filter eliza-indexПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n eliza -l app.kubernetes.io/name=eliza-index
Установка Eliza converter#
В файле
./conf/helm/application/services/converter/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория (обратите внимание, что ранее
registryиrepositoryуказывались раздельно. Теперь подrepositoryподразумевается полный путь до Docker-образа без указания тега), из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону*/apache/tika.apache/tikaУстановите helm-chart:
helm upgrade --install eliza-converter ./conf/helm/application/services/eliza-converter --values=./conf/helm/application/services/eliza-converter/values-external.yaml -n eliza --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n eliza --filter eliza-converterПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n eliza -l app.kubernetes.io/name=eliza-converter
Установка Eliza bge embedder#
По умолчанию используется языковая модель BAAI/bge-m3. Если требуется другая модель, подготовьте ее следующим образом:
В volume
dataв папку/dataскачайте модель.В файле
./conf/helm/application/services/eliza-bge-embedder/templates/deployment.yamlв.spec.template.spec.containers[0].envдляMODEL_IDукажите путь до модели относительно/data.
В файле
./conf/helm/application/services/eliza-bge-embedder/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория (обратите внимание, что ранее
registryиrepositoryуказывались раздельно. Теперь подrepositoryподразумевается полный путь до Docker-образа без указания тега), из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону*/huggingface/text-embeddings-inferenceeliza/huggingface/text-embeddings-inferenceingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>Установите helm-chart:
helm upgrade --install eliza-bge-embedder ./conf/helm/application/services/eliza-bge-embedder --values=./conf/helm/application/services/eliza-bge-embedder/values-external.yaml -n eliza --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n eliza --filter eliza-bge-embedderПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n eliza -l app.kubernetes.io/name=eliza-bge-embedder
Установка Eliza embedder#
По умолчанию используется языковая модель intfloat/multilingual-e5-small. Если требуется другая модель, подготовьте ее следующим образом:
В volume
dataв папку/dataскачайте модель.В
./conf/helm/application/services/eliza-embedder/templates/deployment.yamlв.spec.template.spec.containers[0].envдляMODEL_IDукажите путь до модели относительно/data.
В файле
./conf/helm/application/services/eliza-embedder/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория (обратите внимание, что ранее
registryиrepositoryуказывались раздельно. Теперь подrepositoryподразумевается полный путь до Docker-образа без указания тега), из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону*/huggingface/text-embeddings-inferenceeliza/huggingface/text-embeddings-inferenceingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>Установите helm-chart:
helm upgrade --install eliza-embedder ./conf/helm/application/services/eliza-embedder --values=./conf/helm/application/services/eliza-embedder/values-external.yaml -n eliza --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n eliza --filter eliza-embedderПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n eliza -l app.kubernetes.io/name=eliza-embedderЕсли статус отличается от
Running, необходима дополнительная диагностика.
Установка Eliza reader#
По умолчанию используется языковая модель mbert-base-tydiqa. Если требуется другая модель, подготовьте ее следующим образом:
В volume
dataв папку/dataскачайте модель.В файле
./conf/helm/application/services/eliza-reader/templates/deployment.yamlв.spec.template.spec.containers[0].env:для
HF_MODEL_DIRукажите абсолютный путь до модели внутри/data,для
HF_TASKукажите тип задачи (по умолчанию -question-answering),для
HF_MODEL_IDукажите идентификатор модели.
В файле
./conf/helm/application/services/eliza-reader/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория (обратите внимание, что ранее
registryиrepositoryуказывались раздельно. Теперь подrepositoryподразумевается полный путь до Docker-образа без указания тега), из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону*/eliza/readereliza/readerУстановите helm-chart:
helm upgrade --install eliza-reader ./conf/helm/application/services/eliza-reader --values=./conf/helm/application/services/eliza-reader/values-external.yaml -n eliza --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n eliza --filter eliza-readerПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n eliza -l app.kubernetes.io/name=eliza-readerЕсли статус отличается от
Running, необходима дополнительная диагностика.
Установка Eliza query#
В файле
./conf/helm/application/services/eliza-query/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория (обратите внимание, что ранее
registryиrepositoryуказывались раздельно. Теперь подrepositoryподразумевается полный путь до Docker-образа без указания тега), из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону*/eliza/query"eliza/queryingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>ingress.tls[0].hostsListХосты в первом объекте TLS, связанном с объектом Ingress. В этом значении указываются домены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
["<YOUR-SITE-HOST>"]Установите helm-chart:
helm upgrade --install eliza-query ./conf/helm/application/services/eliza-query --values=./conf/helm/application/services/eliza-query/values-external.yaml -n eliza --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n eliza --filter eliza-queryПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n eliza -l app.kubernetes.io/name=eliza-queryЕсли статус отличается от
Running, необходима дополнительная диагностика.
Установка Eliza writer#
Скачайте модель https://huggingface.co/Qwen/Qwen2.5-7B-Instruct-GGUF/blob/main/qwen2.5-7b-instruct-q2_k.gguf и добавьте ее в S3 bucket
eliza.В файле
./conf/helm/application/services/eliza-writer/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
initContainer.commnadStringУказывается команда, с помощью которой будет будет производится загрузка модели из S3 в контейнер. По умолчанию используется адрес S3 http://minio.minio-tenant.svc.cluster.local/. Если используется другой адрес S3, замените
minio.minio-tenant.svc.cluster.localна используемый"['sh', '-c', 'wget <S3_ENDPOINT_URL>/eliza/qwen2.5-7b-instruct-q2_k.gguf -P /data']"ingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>ingress.tls[0].hostsListХосты в первом объекте TLS, связанном с объектом Ingress. В этом значении указываются домены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
["<YOUR-SITE-HOST>"]Установите helm-chart:
helm upgrade --install eliza-writer ./conf/helm/application/services/eliza-writer --values=./conf/helm/application/services/eliza-writer/values-external.yaml -n eliza --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n eliza --filter eliza-writerПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n eliza -l app.kubernetes.io/name=eliza-writerЕсли статус отличается от
Running, необходима дополнительная диагностика.
Установка Eliza stack#
Добавьте свою модель в volume
dataс названиемruBERT-getdocs. Если собственной дообученной модели нет, загрузите модель ruBERT с сайта https://huggingface.co/, переименуйте ее вruBERT-getdocsи добавьте в volumedata.В файле
./conf/helm/application/services/eliza-stack/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория (обратите внимание, что ранее
registryиrepositoryуказывались раздельно. Теперь подrepositoryподразумевается полный путь до Docker-образа без указания тега), из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону*/eliza/stack". Также образ можно скачать сghcr.io/huggingface/text-embeddings-inference:cpu-1.2ingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>ingress.tls[0].hostsListХосты в первом объекте TLS, связанном с объектом Ingress. В этом значении указываются домены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
["<YOUR-SITE-HOST>"]configMap.config.s3.bucketStringИмя S3 bucket. Должно совпадать с bucket, который используется в сервисе eliza-index в параметре
bucketNamegetdocsconfigMap.config.s3.urlStringАдрес S3 хранилища, где создан bucket для проиндексированных документов
http://minio.minio-tenant.svc.cluster.localconfigMap.config.s3.loginStringЛогин от S3 хранилища, где создан bucket для проиндексированных документов
getdocsconfigMap.config.s3.passwordStringПароль от S3 хранилища, где создан bucket для проиндексированных документов
getdocsУстановите helm-chart:
helm upgrade --install eliza-stack ./conf/helm/application/services/eliza-stack --values=./conf/helm/application/services/eliza-stack/values-external.yaml -n eliza --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n eliza --filter eliza-stackПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n eliza -l app.kubernetes.io/name=eliza-stackЕсли статус отличается от
Running, необходима дополнительная диагностика.
Установка app-chat#
В файле
./conf/helm/application/services/app-chat/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория (обратите внимание, что ранее
registryиrepositoryуказывались раздельно. Теперь подrepositoryподразумевается полный путь до Docker-образа без указания тега), из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону*/app-chatapp-chatingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-APP-CHAT-HOST>ingress.tls[0].hostsListХосты в первом объекте TLS, связанном с объектом Ingress. В этом значении указываются домены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
["<YOUR-APP-CHAT-HOST>"]configMap.ELIZA_CHAT_ELIZA_INDEXStringНазвание индекса (коллекции), который будет использоваться для получения ответа
getdocsconfigMap.ELIZA_CHAT_ELIZA_API_URLStringАдрес API Eliza, куда будут отправляться запросы на получение ответа. Необходимо указывать с протоколом http или https
http://<YOUR-SITE-HOST>/apiУстановите helm-chart:
helm upgrade --install app-chat ./conf/helm/application/services/app-chat --values=./conf/helm/application/services/app-chat/values-external.yaml -n getdocs --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n getdocs --filter app-chatПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n getdocs -l app.kubernetes.io/name=app-chatЕсли статус отличается от
Running, необходима дополнительная диагностика.
Установка app-styleguide#
В файле
./conf/helm/application/services/app-styleguide/values-external.yamlзадайте свои значения. Перечень переменных:Название
Тип
Описание
Пример значения
image.repositoryStringАдрес репозитория, из которого нужно скачать образ для развертывания сервисов. В личном кабинете клиента образ будет именоваться по шаблону
*/app-styleguideapp-styleguideingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-APP-STYLEGUIDE-HOST>ingress.tls[0].hostsListХосты в первом объекте TLS, связанном с объектом Ingress. В этом значении указываются домены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
["<YOUR-APP-STYLEGUIDE-HOST>"]Установите helm-chart:
helm upgrade --install app-styleguide ./conf/helm/application/services/app-styleguide --values=./conf/helm/application/services/app-styleguide/values-external.yaml -n getdocs --debugПроверьте, что helm-chart установлен. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеdeployed:helm list -n getdocs --filter app-styleguideПроверьте, что поды запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n getdocs -l app.kubernetes.io/name=app-styleguideЕсли статус отличается от
Running, необходима дополнительная диагностика.
Установка инструмента перевода (опциональный)#
Цель выполнения#
Выполните шаги данного раздела, если необходимо выполнять автоматический перевод с использованием AI-инструмента. Если перевод не требуется, пропустите данный раздел.
Последовательность действий#
Инструмент перевода не требует установки. Скопируйте исполняемый файл из дистрибутива на локальную машину в соответствии с ее операционной системой.
Чек-лист валидации установки#
Убедитесь, что были выполнены все перечисленные ниже действия:
выполнена ручная установка компонентов:
GDCE,
GDCS;
произведена установка Eliza;
исполняемый файл инструмента перевода скопирован на локальную машину пользователя.