IVA ДОКУМЕНТАЦИЯ ОБНОВЛЕНИЯ

Настройка и подключение внешних ключевых сервисов

В IVA One используются следующие сторонние сервисы:

  • СУБД, поддерживающая диалект PostgreSQL — для хранения истории сообщений пользователей и служебной информации

  • S3 — объектное хранилище, используемое для хранения файлов из чатов, а также конфигурационных файлов сервисов и служебной информации

  • OpenSearch — для поиска информации по содержимому чатов

Данные сервисы включены в состав дистрибутива IVA One и могут быть развернуты в среде Kubernetes.

При использовании встроенных сервисов данные сервисы настраиваются автоматически при развертывании IVA One

Наиболее важными сервисами для функционирования IVA One являются СУБД PostgreSQL и хранилище S3. От доступности и надежности данных сервисов напрямую зависит работоспособность всей системы IVA One.

Для обеспечения надежности в высоконагруженных и продуктивных средах, а также при проведении пилотных демонстраций рекомендуется использовать внешние отказоустойчивые сервисы СУБД и S3.
Для работы сервисов требуется их предварительная настройка и интеграция с IVA One

Сервис OpenSearch также рекомендуется использовать как внешний. При использовании неотказоустойчивой конфигурации OpenSearch следует учесть, что для восстановления работы сервиса в случае сбоя потребуется некоторое время, необходимое для создания новых поисковых индексов.

СУБД PostgreSQL

IVA One поддерживает использование внешней корпоративной системы управления базами данных (СУБД) для хранения пользовательских и системных данных. В качестве внешней СУБД может выступать любая система управления базами данных, совместимая с PostgreSQL (версия 15 и выше).

При настройке взаимодействия IVA One с внешней СУБД необходимо учитывать ограничение СУБД на максимальное количество подключений. По умолчанию для PostgreSQL этот параметр равен 100. Для стабильной работы IVA One необходимо увеличить значение параметра максимального количества подключений к СУБД минимум до 256 для каждого узла (ноды) кластера IVA One.

Пример расчета ограничения СУБД на максимальное количество подключений: 256 × Количество рабочих узлов (нод) кластера IVA One

Права суперпользователя СУБД необходимы для первоначальной настройки и последующего проведения операций по обновлению базы данных IVA One.

Для штатной работы с базами данных IVA One необходимо создать специального служебного пользователя, обладающего правами владельца для следующих баз данных:

  • iva_id

  • iva_one_profiles

  • iva_one_chats

  • iva_one_calls

  • iva_link_notifications

  • iva_diskstorage

  • iva_federation_gateway

  • iva_one_address_book

  • iva_presence

Начальная настройка

Для настройки СУБД необходимо выполнить следующие действия:

  1. подключиться к СУБД PostgreSQL с правами суперпользователя

  2. выполнить команду создания служебного пользователя IVA One

    CREATE USER <IVA_ONE_USER> WITH PASSWORD '<IVA_ONE_USER_PASSWORD>';

    где:

    • <IVA_ONE_USER> — имя служебного пользователя IVA One в СУБД PostgreSQL

    • <IVA_ONE_USER_PASSWORD> — пароль служебного пользователя IVA One в СУБД PostgreSQL

  3. выполнить команду создания нескольких баз данных

    CREATE DATABASE iva_id OWNER <IVA_ONE_USER>; CREATE DATABASE iva_one_profiles OWNER <IVA_ONE_USER>; CREATE DATABASE iva_one_chats OWNER <IVA_ONE_USER>; CREATE DATABASE iva_one_calls OWNER <IVA_ONE_USER>; CREATE DATABASE iva_link_notifications OWNER <IVA_ONE_USER>; CREATE DATABASE iva_diskstorage OWNER <IVA_ONE_USER>; CREATE DATABASE iva_federation_gateway OWNER <IVA_ONE_USER>; CREATE DATABASE iva_one_address_book OWNER <IVA_ONE_USER>; CREATE DATABASE iva_presence OWNER <IVA_ONE_USER>;

    где <IVA_ONE_USER> — имя служебного пользователя IVA One в СУБД PostgreSQL

Интеграция с IVA One

Для интеграции СУБД PostgreSQL с IVA One необходимо выполнить следующие действия:

  1. в инфраструктуре Kubernetes создать секрет для подключения к СУБД с помощью команды:

    sudo kubectl delete secret iva-one-postgresql-secret -n iva-one --ignore-not-found
    sudo kubectl create secret generic iva-one-postgresql-secret -n iva-one \
      --from-literal=username='<IVA_ONE_USER>' \
      --from-literal=password='<IVA_ONE_USER_PASSWORD>'

    где:

    • iva-one-postgresql-secret — имя секрета для хранения логина / пароля учетной записи служебного пользователя IVA One

      Название секрета не изменять!
    • <IVA_ONE_USER> — имя служебного пользователя IVA One в СУБД PostgreSQL

    • <IVA_ONE_USER_PASSWORD> — пароль служебного пользователя IVA One в СУБД PostgreSQL

    • iva-one — пространство имен (namespace) Kubernetes, в котором развернута IVA One, если оно отличается от имени по умолчанию (default)

  2. открыть файл конфигурации IVA One values.yaml любым редактором (например, nano), выполнив команду:

    sudo nano /opt/iva/values.yaml
  3. в файле конфигурации values.yaml указать параметры подключения к СУБД:

    global:
      postgres:
        embedded: false
        host: "db.iva.ru"
        port: "5432"
        secret: iva-one-postgresql-secret

    где:

    • embedded — параметр, определяющий необходимость использования встроенного в IVA One сервиса PostgreSQL; должно быть установлено значение false

    • host — FQDN или IP-адрес СУБД PostgreSQL (например, "db.iva.ru")

    • port — порт СУБД PostgreSQL (например, "5432")

    • secret — имя секрета, созданного на предыдущем шаге (постоянное неизменяемое значение)

  4. применить обновленную конфигурацию файла values.yaml, выполнив команду:

    sudo helm upgrade iva-one /opt/iva/iva-one -f /opt/iva/values.yaml -n iva-one

    где iva-one — пространство имен (namespace) Kubernetes, в котором развернута IVA One, если оно отличается от имени по умолчанию (default)

S3-хранилище

Может использоваться любое S3-совместимое хранилище

В дистрибутив IVA One входит S3-хранилище MinIO.

Начальная настройка

Для настройки S3-хранилища необходимо выполнить следующие действия:

  1. убедиться, что объем доступного свободного пространства в хранилище удовлетворяет требованиям для работы с IVA One

  2. создать в хранилище раздел (bucket) с именем ivaone

    Создание раздела
  3. создать ключ доступа, секретный ключ и сохранить их

    Ключи доступа

Интеграция с IVA One

Для интеграции S3-хранилища с IVA One необходимо выполнить следующие действия:

  1. в инфраструктуре Kubernetes создать секрет для подключения к S3-хранилищу с помощью команды:

    sudo kubectl delete secret iva-one-s3-secret -n iva-one --ignore-not-found
    sudo kubectl create secret generic iva-one-s3-secret -n iva-one \
      --from-literal=access-key='<S3_ACCESS_KEY>' \
      --from-literal=secret-key='<S3_SECRET_KEY>'

    где:

    • iva-one-s3-secret — имя секрета для хранения ключей S3-хранилища

      Название секрета не изменять!
    • <S3_ACCESS_KEY> — имя ключа доступа S3-хранилища

    • <S3_SECRET_KEY> — секрет ключа доступа S3-хранилища

    • iva-one — пространство имен (namespace) Kubernetes, в котором развернута IVA One, если оно отличается от имени по умолчанию (default)

  2. открыть файл конфигурации IVA One values.yaml любым редактором (например, nano), выполнив команду:

    sudo nano /opt/iva/values.yaml
  3. в файле конфигурации values.yaml указать параметры подключения к S3-хранилищу:

    global:
      s3:
        embedded: false
        url: "https://s3.iva.ru:9000"
        secret: iva-one-s3-secret
        bucket: "ivaone"

    где:

    • embedded — параметр, определяющий необходимость использования встроенного в IVA One S3-хранилища; должно быть установлено значение false

    • url — URL, FQDN или IP-адрес и порт для подключения к S3-хранилищу (например, "https://s3.iva.ru:9000")

    • secret — имя секрета, созданного на предыдущем шаге (постоянное неизменяемое значение)

    • bucket — название раздела (bucket) S3-хранилища для IVA One (например, "ivaone")

  4. применить обновленную конфигурацию файла values.yaml, выполнив команду:

    sudo helm upgrade iva-one /opt/iva/iva-one -f /opt/iva/values.yaml -n iva-one

    где iva-one — пространство имен (namespace) Kubernetes, в котором развернута IVA One, если оно отличается от имени по умолчанию (default)

OpenSearch

Для интеграции OpenSearch с IVA One необходимо выполнить следующие действия:

  1. в инфраструктуре Kubernetes создать секрет для подключения к OpenSearch с помощью команды:

    sudo kubectl delete secret iva-one-opensearch-secret -n iva-one --ignore-not-found
    sudo kubectl create secret generic iva-one-opensearch-secret -n iva-one \
      --from-literal=username='<YOUR_OPENSEARCH_USERNAME>' \
      --from-literal=password='<YOUR_OPENSEARCH_PASSWORD>'

    где:

    • iva-one-opensearch-secret — имя секрета для хранения данных подключения к OpenSearch

      Название секрета не изменять!
    • <YOUR_OPENSEARCH_USERNAME> — имя служебного пользователя OpenSearch

    • <YOUR_OPENSEARCH_PASSWORD> — пароль служебного пользователя OpenSearch

    • iva-one — пространство имен (namespace) Kubernetes, в котором развернута IVA One, если оно отличается от имени по умолчанию (default)

  2. открыть файл конфигурации IVA One values.yaml любым редактором (например, nano), выполнив команду:

    sudo nano /opt/iva/values.yaml
  3. в файле конфигурации values.yaml указать параметры подключения к OpenSearch:

    global:
      opensearch:
        embedded: false
        url: "<URL_OPENSEARCH>"
        prefix: "ivaone_"
        secret: iva-one-opensearch-secret
        existingSecret: true

    где:

    • embedded — параметр, определяющий необходимость использования встроенного в IVA One сервиса OpenSearch; должно быть установлено значение false

    • <URL_OPENSEARCH> — URL, FQDN или IP-адрес и порт для подключения к OpenSearch (например, http://opensearch.iva.ru:9200)

    • secret — имя секрета, созданного на предыдущем шаге (постоянное значение, не изменяется)

    • prefix — префикс, который будет добавляться к названиям индексов в OpenSearch (постоянное неизменяемое значение)

    • existingSecret — маркер, подтверждающий существование секрета. При значении true используется ранее созданный секрет, указанный в secret

  4. применить обновленную конфигурацию файла values.yaml, выполнив команду:

    sudo helm upgrade iva-one /opt/iva/iva-one -f /opt/iva/values.yaml -n iva-one

    где iva-one — пространство имен (namespace) Kubernetes, в котором развернута IVA One, если оно отличается от имени по умолчанию (default)