Установка#
Состав дистрибутива#
Компонент |
Элемент дистрибутива |
Описание |
|---|---|---|
GDCE |
./pl/ |
Файлы для репозитория шаблона сайта (site-template) |
./bh/GetDocs |
Расширение для Visual Studio Code |
|
./bh/GetDocs_x86_64_mac |
Бинарный файл для MacOS для локальной сборки документации |
|
./bh/GetDocs_x86_64_win |
Бинарный файл для Windows для локальной сборки документации |
|
./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
getdocs
не требует обновления
morris
не требует обновления
argo-wf
не требует обновления
eliza
требует определения
Создайте следующие Kubernetes секреты. Создание всех секретов требуется только при первичной установке. При обновлении создавать/изменять требуется только то, что указано в таблице с информацией по обновлению:
Пространство имен
Имя секрета
Тип
2.6
argo-wf
kubernetes.io/dockerconfigjsonне требует обновления
kubernetes.io/tlsне требует обновления
Opaqueне требует обновления
getdocs
kubernetes.io/dockerconfigjsonне требует обновления
kubernetes.io/tlsне требует обновления
Opaqueтребует обновления
Opaqueне требует обновления
Opaqueне требует обновления
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>имеют одно значение для всех сервисов.
Установка GDCE#
Все действия выполняются из корня распакованного архива GDCE-<ВЕРСИЯ-ПРОДУКТА>-<ВЕРСИЯ-СБОРКИ>-distrib.zip, расположенного в архиве GDC-<ВЕРСИЯ-ПРОДУКТА>-owned-distrib.zip.
Установка Morris#
Релиз |
Обновление |
|---|---|
2.6 |
не требует обновления |
Важно
Устанавливается только при интеграции с системой управления идентификацией и контролем доступа. Пропустите данный раздел, если интеграция не предусмотрена.
Убедитесь, что создано пространство имен
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n morrisЕсли статус отличается от
Running, необходима дополнительная диагностика.
Установка Argo Workflows#
Релиз |
Обновление |
|---|---|
2.6 |
не требует обновления |
Убедитесь, что создано пространство имен
argo-wf, созданы секретыnexus-imagepull,getdocs-tlsиargo-server-sso. Их создание описано в разделе Подготовка окружения.В файле ./conf/helm/application/infra/argo-workflows/values-external.yaml задайте свои значения. Перечень переменных:
Название
Тип
Описание
Пример значения
2.6
server.ingress.tls[0].hostsListДомены, для которых будет использоваться сертификат TLS для шифрования трафика и обеспечения безопасности связи между клиентами и сервером
["<YOUR-SITE-HOST>"]не требует обновления
server.ingress.hosts[0]StringХост в первом правиле входящего трафика объекта Ingress. В этом значении указывается домен, к которому применяются правила маршрутизации и балансировки нагрузки
<YOUR-SITE-HOST>не требует обновления
server.sso.enabledboolВключает или отключает интеграцию с системой управления идентификацией и контролем доступа. Отключение данной опции рекомендуется только для тестовых инсталляций
trueне требует обновления
server.sso.issuerString(Используется при интеграции с системой управления идентификацией и контролем доступа)
Корневой URL-адрес поставщика идентификации OIDChttps://<YOUR-IAM-SYSTEM-HOST>/realms/<YOUR-REALM>не требует обновления
server.sso.redirectUrlString(Используется при интеграции с системой управления идентификацией и контролем доступа)
Корневой URL-адрес поставщика идентификации OIDChttps://<YOUR-SITE-HOST>/argowf/oauth2/callbackне требует обновления
server.extraArgsListДополнительные аргументы для настройки интеграции с системой управления идентификацией и контролем доступа.
- для включенной интеграции:
["--auth-mode=client", "--auth-mode=sso"]
- для отключенной интеграции:["--auth-mode=client", "--auth-mode=server"]не требует обновления
Более подробную информацию по настройке можно найти на сайте соответствующего проекта:
Добавьте репозиторий 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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n argo-wfЕсли статус отличается от
Running, необходима дополнительная диагностика.
После установки argo-workflows будет доступен по адресу https://<YOUR-SITE-HOST>/argowf/.
Установка workflows#
Релиз |
Обновление |
|---|---|
2.6 |
требует обновления |
Важно
Убедитесь, что создан S3 bucket.
Необходимость создания описана в разделе Подготовка окружения.
В файле ./conf/helm/application/services/workflows/values-external.yaml задайте свои значения. Перечень переменных:
Название
Тип
Описание
Пример значения
2.6
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-хостингов
<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Адрес endpoint, по которому доступен ИИ Eliza. Через этот endpoint осуществляется индексация собираемой документации для дальнейшей возможности поиска через чат-бот. Значение по умолчанию
http://<YOUR-SITE-HOST>/api/v1/. Предполагается, что чат-бот и API будут доступны по тому же адресу, что и сайт с документацией. Настройка endpoint производится в разделе Установка Eliza indexhttp://<YOUR-SITE-HOST>/api/v1/требует определения
loader.configmap.ELIZA_INDEXStringНазвание коллекции в векторной базе, которая будет использоваться для хранения векторов. В переменной возможно только следующее значение:
getdocs. Информация по установке векторной базы и настройка индекса(коллекции) описана в разделе Установка векторной базы Qdrantgetdocsтребует определения
configmap.SITE_TEMPLATE_REPO_URLStringSSH-ссылка на репозиторий шаблона сайта (его создание описано в разделе Создание служебных репозиториев)
ssh://git@<YOUR-GIT-HOST>/<YOUR-PROJECT>/<YOUR-GIT-REPO-NAME>не требует обновления
configmap.SITE_TEMPLATE_REPO_BRANCHStringНазвание ветки репозитория шаблона сайта
masterне требует обновления
configmap.SITE_CONFIG_REPO_URLStringSSH-ссылка на репозиторий с конфигурацией сайта (его создание описано в разделе Создание служебных репозиториев)
ssh://git@<YOUR-GIT-HOST>/<YOUR-PROJECT>/content-configurationне требует обновления
configmap.SITE_CONFIG_REPO_BRANCHStringВетка репозитория с конфигурацией сайта
masterне требует обновления
configmap.VALIDATION_RULES_REPO_URLStringSSH-ссылка на репозиторий с правилами валидации (его создание описано в разделе Создание служебных репозиториев)
ssh://git@<YOUR-GIT-HOST>/<YOUR-PROJECT>/<YOUR-GIT-REPO-NAME>не требует обновления
configmap.VALIDATION_RULES_REPO_BRANCHStringНазвание ветки репозитория с правилами валидации
masterне требует обновления
aiValidator.configmap.NER_BASE_URLStringСсылка на endpoint 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требует определения
transformer.configmap.AI_CHAT_STYLEGUIDE_IMPORT_URLStringАдрес, по которому на сайт загружаются стили для чат-бота. Для работы необходимо наличие сервиса
app-styleguide. Значение должно быть задано следующим образом://<YOUR-APP-STYLEGUIDE-HOST>/sbt-tt-styleguide.js//style.example.com/sbt-tt-styleguide.jsтребует определения
transformer.configmap.AI_CHAT_IMPORT_URLStringАдрес, по которому на сайт загружается чат-бот. Для работы необходим сервис
app-chat. Значение должно быть задано следующим образом://<<YOUR-APP-CHAT-HOST>/sbt-tt-chat.js//chat.example.com/sbt-tt-chat.jsтребует определения
Примечание
В личном кабинете клиента образ будет именоваться по шаблону
getdocs2-<название-сервиса>. Например, для сервиса loader образ будет называтьсяgetdocs2-loader.
В состав дистрибутива входит workflow валидации изображений validate-doc-images. Для его включения добавьте блок imageValidator в файл ./conf/helm/application/services/workflows/values-external.yaml, как показано ниже:
imageValidator:
image:
registry: ""
repository: getdocs2-image-validator
tag: 2.6.6
imagePullPolicy: Always
resources:
limits:
memory: 10Gi
requests:
cpu: 500m
memory: 16Mi
Установите 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 |
не требует обновления |
В файле ./conf/helm/application/infra/s3-sync задайте свои значения. Перечень переменных:
Название
Тип
Описание
Пример значения
2.6
s3.bucketStringНазвание S3 bucket для хранения артефактов результатов работы workflows
getdocsне требует обновления
s3.endpointStringРегион-специфичный URL, указывающий на конечную точку доступа к S3 bucket
region.my-domain.ruне требует обновления
s3.upload_cutoffStringПараметр конфигурации в rclone, который определяет максимальный размер части файла при использовании загрузки
не требует обновления
Примечание
Более подробную информацию по настройке Rclone можно найти на сайте проекта: https://rclone.org/s3/.
Установите helm-chart:
helm upgrade --install s3-sync ./conf/helm/application/s3-sync/ -n getdocs -f ./conf/helm/application/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 |
не требует обновления |
Все действия выполняются из корня распакованного архива GDCS-<ВЕРСИЯ-ПРОДУКТА>-<ВЕРСИЯ-СБОРКИ>-distrib.zip, расположенного в архиве GDC-<ВЕРСИЯ-ПРОДУКТА>-owned-distrib.zip.
В файле ./conf/helm/application/services/site/values-external.yaml задайте свои значения. Перечень переменных:
Название
Тип
Описание
Пример значения
2.6
.image.registryStringРеестр образов Docker, используемый для развертывания сервисов
не требует обновления
.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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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.
В переменной
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};
site#
Создайте токен Argo Workflows, используя следующие команды:
kubectl -n argo-wf create sa sa-site kubectl -n getdocs create rolebinding sa-site --role=argo-workflows-rx --serviceaccount=argo-wf:sa-site kubectl -n argo-wf apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: sa-site.service-account-token annotations: kubernetes.io/service-account.name: sa-site type: kubernetes.io/service-account-token EOFПосле создания токена укажите его в переменной
ARGO_TOKEN:ARGO_TOKEN="Bearer $(kubectl -n argo-wf get secret "$SA_NAME.service-account-token" -o=jsonpath='{.data.token}' | base64 --decode)"Создайте секрет:
kubectl create -n getdocs secret generic site --from-file=ARGO_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:OAUTH2_PROXY_CLIENT_ID=<YOUR_CLIENT_ID> OAUTH2_PROXY_CLIENT_SECRET=<YOUR_CLIENT_SECRET> OAUTH2_PROXY_COOKIE_SECRET=$(python3 -c 'import os,base64; print(base64.b64encode(os.urandom(16)).decode("ascii"))')Создайте секрет:
kubectl create -n morris secret generic morris \ --from-literal=OAUTH2_PROXY_CLIENT_ID=${OAUTH2_PROXY_CLIENT_ID} \ --from-literal=OAUTH2_PROXY_CLIENT_SECRET=${OAUTH2_PROXY_CLIENT_SECRET} \ --from-literal=OAUTH2_PROXY_COOKIE_SECRET=${OAUTH2_PROXY_COOKIE_SECRET};
s3-creds#
Укажите в переменной
ACCESS_KEYAccess Key ID и в переменнойSECRET_KEY- Secret Key для подключения к хранилищу S3:ACCESS_KEY=<YOUR_ACCESS_KEY> SECRET_KEY=<YOUR_SECRET_KEY>Создайте секрет:
kubectl create -n getdocs secret generic s3-creds \ --from-literal=accessKey=${ACCESS_KEY} \ --from-literal=secretKey=${SECRET_KEY};
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}
Создание служебных репозиториев#
Репозиторий шаблона сайта (site-template)#
Релиз |
Обновление |
|---|---|
2.6 |
требует обновления |
Создайте репозиторий с содержимым папки ./pl/ компонента GDCE.
Репозиторий с конфигурацией сайта (content-configuration)#
Создайте репозиторий со следующей структурой:
site-config/
product-registry/
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)#
Загрузите и распакуйте архив с базовыми правилами валидации контента:
Инициализируйте git-репозиторий с разархивированным контентом.
Подробная информация о правилах создания и ведения правил валидации приведена в официальной документации Vale.
Установка Eliza#
Eliza - вопросно-ответная система, основанная на технологии искусственного интеллекта, для поиска информации в документации, опубликованной в GetDocs. Реализована в виде чат-бота. Также используется для валидации корректности указания используемого ПО в системных требованиях в документации и валидации текста на изображениях.
Важно
Добавлен в версии продукта 2.6.
Чат-бот будет устанавливается на том же кластере, что и GetDocs.
Убедитесь, что создано пространство имен
elizaи секретыnexus-imagepull,getdocs-tls,eliza-creds, как описано в разделе Подготовка окружения.Создайте S3 bucket с именем
eliza.Для работы pods с моделями необходимо создать PVC. Этот volume будет использоваться всеми pods сервиса 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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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>"]|
bucketName|String| Название bucket, в котором будут храниться проиндексированные документы (создание bucket описано в разделе Установка Eliza) |getdocs| |configMap.config.objects.path|String| Адрес S3 хранилища, где создан bucket для проиндексированных документов |http://minio.minio-tenant.svc.cluster.local| |configMap.config.objects.login|String| Логин от S3 хранилища, где создан bucket для проиндексированных документов |getdocs| |configMap.config.objects.password|String| Пароль от 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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
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Проверьте, что pods запущены и имеют корректный статус. Для этого выполните следующую команду и убедитесь, что поле
STATUSсодержит значениеRunning:kubectl get pods -n getdocs -l app.kubernetes.io/name=app-styleguideЕсли статус отличается от
Running, необходима дополнительная диагностика.
Чек-лист валидации установки#
Убедитесь, что были выполнены все перечисленные ниже действия:
выполнена ручная установка компонентов:
GDCE,
GDCS;
произведена установка Eliza.
Чек-лист проверки корректности работы#
Чтобы проверить, что установка и настройка продукта прошла корректно, выполните следующие действия:
Подготовьте репозиторий с документацией, как описано в Руководстве пользователя.
В браузере откройте главную страницу Argo Workflow и авторизуйтесь.
Запустите workflow
build-docдля подготовленного репозитория с документацией и дождитесь его успешного завершения.Откройте отчет сборки и перейдите по ссылке на собранную документацию.
Успешно открывшийся сайт с документацией подтверждает корректность установки продукта.