﻿# Установить сервисы полнотекстового поиска в Kubernetes

> [HTML Version](full-text-search-in-kubernetes.html)

Установка OpenSearch и сервисов **fulltextsearcher** и **textextractor** в Kubernetes с помощью Helm-пакета состоит из следующих шагов:

1. [Загрузить Helm-чарт и конфигурационный файл](#install-helm-chart).

2. [Заполнить конфигурационный файл](#fill-configuration-file).

3. [Установить чарт elma365-dbs в Kubernetes-кластер с помощью Helm](#install-elma365-dbs).

4. [Выполнить подключение к сервису Opensearch](#connect-to-opensearch).

5. [Применить параметры полнотекстового поиска для ELMA365 Enterprise](#apply-parameters).

## Шаг 1. Загрузить Helm-чарт и конфигурационный файл

Для установки через интернет получите конфигурационный файл `values-elma365-dbs.yaml`, выполнив команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm show values elma365/elma365-dbs > values-elma365-dbs.yaml

````
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

1. На компьютере с доступом в интернет скачайте образы ELMA365 и загрузите их в локальный реестр образов. Подробнее читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md). Выполните следующую команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm pull elma365/elma365-dbs

2. ````
 Полученный архив чарта `elma365-dbs-X.Y.Z.tgz` скопируйте на сервер, где будет производиться установка.

3. Распакуйте этот чарт и скопируйте конфигурационный файл по умолчанию `values.yaml` в `values-elma365-dbs.yaml`:

````
tar -xf elma365-dbs-X.Y.Z.tgz  
cp elma365-dbs/values.yaml values-elma365-dbs.yaml
````

## ````
Шаг 2. Заполнить конфигурационный файл

Сервис Opensearch можно установить совместно с чартом elma365-dbs или отдельно в другое пространство имён (`namespace`). Заполним конфигурационный файл `values-elma365-dbs.yaml` для установки Opensearch:

1. В разделе `global` для компонента `opensearch` в параметре `enabled` включите установку Opensearch:

````
\# Выбор устанавливаемых БД.  
global:  
  opensearch:  
    # Установка opensearch (Включается для fulltextsearcher)  
    enabled: true

2. ````
Если нужно, в параметрах конфигурации Opensearch выберите `OPENSEARCH\_INITIAL\_ADMIN\_PASSWORD` и задайте пароль для пользователя **admin**:

````
\# Выбор устанавливаемых БД.  
global:  
...  
\# Настройки opensearch (Включается для fulltextsearcher)  
opensearch:  
\# cluster Mode — отключите параметр singleNode  
  singleNode: true  
  extraEnvs:  
    - name: OPENSEARCH\_INITIAL\_ADMIN\_PASSWORD  
      value: 123456ASdlkjqweq  
    - name: "plugins.security.ssl.http.enabled"  
       value: "false"  
  config:  
    opensearch.yml: |  
      network.host: '\*'  
  persistence:  
    enabled: true  
    size: 10Gi  
  # storageClass: "-"  
...

3. ````
Для настройки отказоустойчивости переключите параметр `singleNode`:

````
\# Выбор устанавливаемых БД.  
global:  
...  
\# Настройки opensearch (Включается для fulltextsearcher)  
opensearch:  
...  
  # cluster Mode - отключите параметр singleNode  
  singleNode: false  
...

4. ````
Для установки чарта elma365-dbs в закрытом контуре без доступа в интернет, заполните параметры подключения к приватному **registry**.

Пример заполнения параметров для подключения к приватному registry

1. Задайте адрес и путь к приватному **registry** в параметре `opensearch.persistance.image` для контейнера инициализации.

2. Задайте адрес и путь к приватному **registry** в параметре `opensearch.image.repository`.

3. Создайте вручную секрет с правами доступа к приватному **registry** и зашифруйте в Base64.

4. Укажите наименование созданного секрета в параметре `opensearch.image.pullSecrets`.



````
\# Выбор устанавливаемых БД  
global:  
...  
\# Настройки БД postgres  
opensearch:  
...  
  # Включите контейнер инициализации  
  # Контейнер меняет владельца и группу точки монтирования тома на \`RunAsUser:fsGroup  
  persistence:  
    enabled: true  
    # адрес и секрет для приватного registry образов контейнера инициализации  
    image: registry.example.com  
...  
  # адрес и секрет для приватного registry  
  image:  
    repository: registry.example.com/opensearch  
    # секрет с правами доступа к приватному registry нужно создать вручную и зашифровать в Base64  
    pullSecrets:  
      - myRegistryKeySecretName  
...

````
где формат `repository`:

- адрес — `registry.example.com`;

- путь — `/opensearch`.

## Шаг 3. Установить чарт elma365-dbs в Kubernetes-кластер с помощью Helm

Выполните установку чарта elma365-dbs в `namespace elma365-dbs`:

- для установки через интернет:

````
helm upgrade --install opensearch elma365/elma365-dbs -f values-elma365-dbs.yaml -n opensearch --create-namespace

- ````
для установки без доступа в интернет перейдите в каталог с загруженным чартом и выполните команду:

````
helm upgrade --install opensearch ./elma365-dbs -f values-elma365-dbs.yaml -n opensearch --create-namespace

## ````
Шаг 4. Выполнить подключение к сервису Opensearch

1. Создайте резервную копию уже существующего конфигурационного файла `values-elma365.yaml`, который получен и заполнен при установке ELMA365. Это позволит избежать потери работоспособности приложения ELMA365 при некорректном изменении параметров.

2. Внесите изменения в уже существующий конфигурационный файл `values-elma365.yaml`:

- включите параметры `global.extensions.name.fulltextsearcher.enabled` и `global.extensions.name.textextractor.enabled`, установив для них значение `true`;

- настройте подключение к Opensearch в параметре `global.extensions.opensearch`.

````
global:  
  ...  
  extensions:  
\# включение полнотекстового поиска с использованием Opensearch  
    - name: fulltextsearcher  
      enabled: true  
\# требует настройки подключения к Opensearch  
      opensearch:  
        addresses: "http://opensearch-cluster-master.opensearch.svc.cluster.local:9200/"  
        login: "admin"  
        password: "123456ASdlkjqweq"  
        textExtractorURL: "http://textextractor:3000/"  
        itemsTransferPerIteration: 400  
        itemsWorkers: 4  
        taskWorkers: 1  
\# включение модуля извлечения текста из офисных документов  
    - name: textextractor  
      enabled: true  
...

## ````
Шаг 5. Применить параметры полнотекстового поиска

Выполните обновление параметров приложения ELMA365 с использованием конфигурационного файла `values-elma365.yaml`.

Для обновления параметров через интернет:

1. Определите версию чарта, с помощью которого было установлено приложение ELMA365, выполнив команду:

````
helm show chart elma365/elma365

````
Пример выполнения команды:

**(full-text-search-in-kubernetes-1.png)**

В строке `version` указана версия чарта, которая использовалась для установки приложения ELMA365.

2. Выполните обновление параметров с указанием установленной версии приложения ELMA365:

````
helm upgrade --install elma365 elma365/elma365 -f values-elma365.yaml --version <elma365-chart-version> --timeout=30m --wait \[-n namespace\]

````
Вместо значения `<elma365-chart-version>)` для флага `–version` укажите версию чарта, полученную на предыдущем шаге.

Обновление параметров без доступа в интернет

1. Перейдите в каталог с загруженным чартом ELMA365 и выполните команду:

````
helm upgrade --install elma365 ./elma365 -f values-elma365.yaml --timeout=30m --wait \[-n namespace\]

2. ````
Обновление параметров занимает 10-30 минут. Дождитесь его завершения.

## Удалить чарт Opensearch в Kubernetes-кластере с помощью Helm

Чтобы удалить чарт Opensearch в `namespace opensearch`, выполните команду:

````
helm uninstall opensearch -n opensearch
````