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

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

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

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

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

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

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

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

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

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

СУБД PostgreSQL

IVA One работает с СУБД, поддерживающих диалект PostgreSQL (версия 14 и выше).

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

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

  • iva_id

  • iva_diskstorage

  • iva_link_notifications

  • iva_one_profiles

  • iva_one_chats

  • iva_one_calls

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

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

  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_diskstorage OWNER <IVA_ONE_USER>; CREATE DATABASE iva_link_notifications 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>;

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

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

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

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

    sudo kubectl delete secret iva-one-postgresql-secret -n <IVA_NAMESPACE> --ignore-not-found
    sudo kubectl create secret generic iva-one-postgresql-secret -n <IVA_NAMESPACE> \
      --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_NAMESPACE> — имя целевого пространства (namespace) IVA One в Kubernetes, если оно отличается от имени по умолчанию (default)

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

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

    presets:
      postgres:
        embedded: &postgres_embedded false
        host: &postgres_host "db.iva.ru"
        port: &postgres_port "5432"
        secret: &postgres_secret iva-one-postgresql-secret

    где

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

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

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

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

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

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

    где <IVA_NAMESPACE> — имя целевого пространства (namespace) IVA One в Kubernetes, если оно отличается от имени по умолчанию (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_NAMESPACE --ignore-not-found
    sudo kubectl create secret generic iva-one-s3-secret -n IVA_NAMESPACE \
      --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_NAMESPACE> — имя целевого пространства (namespace) IVA One в Kubernetes, если оно отличается от имени по умолчанию (default)

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

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

    presets:
      s3:
        embedded: &s3_embedded false
        url: &s3_url "https://s3.iva.ru:9000"
        secret: &s3_secret iva-one-s3-secret
        bucket: &s3_bucket "ivaone"

    где

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

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

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

    • bucket: &s3_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_NAMESPACE>

    где <IVA_NAMESPACE> — имя целевого пространства (namespace) IVA One в Kubernetes, если оно отличается от имени по умолчанию (default)

OpenSearch

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

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

    sudo kubectl delete secret iva-one-opensearch-secret -n <IVA_NAMESPACE> --ignore-not-found
    sudo kubectl create secret generic iva-one-opensearch-secret -n <IVA_NAMESPACE> \
      --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_NAMESPACE> — имя целевого пространства (namespace) IVA One в Kubernetes, если оно отличается от имени по умолчанию (default)

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

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

    presets:
      opensearch:
        embedded: &opensearch_embedded false
        url: &opensearch_url "http://opensearch.iva.ru:9200"
        secret: &opensearch_secret iva-one-opensearch-secret
        prefix: &opensearch_prefix "ivaone_"

    где

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

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

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

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

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

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

    где <IVA_NAMESPACE> — имя целевого пространства (namespace) IVA One в Kubernetes, если оно отличается от имени по умолчанию (default)