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

Федерация IVA One

Режим Федерация объединяет несколько независимых экземпляров IVA One. В составе режима NATS Super Cluster связывает независимые кластеры NATS через шлюзы в одну логическую систему. Между кластерами передаются сообщения и события по TCP / mTLS, а между Federation Gateway — файлы по HTTPS / mTLS.

Схема взаимодействия компонентов Федерации

Настройка режима федерации для IVA One

Для использования возможностей режима федерации необходимо:

Настройка Helm-чарта для Федерации

Настройку необходимо выполнить на каждом экземпляре IVA One. Не следует добавлять повторяющиеся YAML-блоки: необходимо изменять существующие поля файла /opt/iva/values.yaml, созданного на основе штатного файла custom-values.yaml.

Для автоматического создания TLS-сертификатов в Kubernetes должен быть установлен cert-manager. Остальные TLS-настройки из штатного файла custom-values.yaml необходимо оставить без изменений.

Чтобы настроить Helm-чарт для режима федерации, необходимо:

  1. открыть файл /opt/iva/values.yaml с помощью команды:

    sudo nano /opt/iva/values.yaml
  2. в существующих секциях global.federation и federation включить Федерацию, указать внешний IP-адрес и уникальное имя NATS-кластера:

    Для реальной установки необходимо использовать IP-адреса, выделенные для инфраструктуры организации
    # Общие настройки всех компонентов IVA One
    global:
      # Параметры включения и публикации федерации
      federation:
        enabled: true
        serviceType: LoadBalancer
        sharedIp: true
        gatewayLoadBalancerIP: "<IP_ADDRESS>"
        gatewayExternalIP: "<IP_ADDRESS>"
    # Настройки федеративного NATS и его сертификатов
    federation:
      loadBalancerIP: "<IP_ADDRESS>"
      federationclustername: &federationclustername "iva-federation-a"
      # Автоматическое создание TLS-сертификатов
      certificate:
        create: true

    где:

    • global.federation.enabled — признак включения Federation Gateway и федеративного NATS

    • global.federation.serviceType — тип сервиса. Для кластерной установки используется значение LoadBalancer

    • global.federation.sharedIp — признак разрешения общего IP-адреса для FederationBus (NATS) и Federation Gateway при использовании MetalLB. При значении true Helm-чарт добавляет сервисам аннотацию allow-shared-ip

    • global.federation.gatewayLoadBalancerIP — IP-адрес балансировщика для Federation Gateway, доступного по порту 8081

      Если IP-адрес не указан, то MetalLB выбирает его автоматически из доступного пула
    • global.federation.gatewayExternalIP — внешний IP-адрес Federation Gateway, передаваемый другим компонентам

    • federation.loadBalancerIP — IP-адрес балансировщика для IP-адрес балансировщика для NATS Gateway (FederationBus), доступного по порту 7222

      Если IP-адрес не указан, то MetalLB выбирает его автоматически из доступного пула
    • federation.federationclustername — уникальное имя NATS-кластера, например iva-federation-a или iva-federation-b

    • federation.certificate.create — признак автоматического создания сертификатов с помощью cert-manager

      При использовании MetalLB значение global.federation.sharedIp: true разрешает NATS Gateway и Federation Gateway использовать общий IP-адрес балансировщика. Для этого необходимо явно указать одинаковый IP-адрес в параметрах federation.loadBalancerIP и global.federation.gatewayLoadBalancerIP: автоматически их значения не совпадают. Этот же адрес можно указать в параметре global.federation.gatewayExternalIP. Если MetalLB не используется или балансировщик не поддерживает общий IP-адрес, для параметра global.federation.sharedIp необходимо установить значение false, а для NATS Gateway и Federation Gateway указать разные IP-адреса.

  3. применить обновленную конфигурацию IVA One:

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

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

  4. дождаться готовности сертификата:

    kubectl wait -n iva-one \
      --for=condition=Ready \
      certificate/iva-federationbus-tls-secret \
      --timeout=180s
  5. на каждом экземпляре IVA One выгрузить локальный сертификат, закрытый ключ и сертификат центра сертификации:

    kubectl get secret iva-federationbus-tls-secret -n iva-one \
      -o jsonpath='{.data.tls\.crt}' | base64 -d > tls.crt
    
    kubectl get secret iva-federationbus-tls-secret -n iva-one \
      -o jsonpath='{.data.tls\.key}' | base64 -d > tls.key
    
    kubectl get secret iva-federationbus-tls-secret -n iva-one \
      -o jsonpath='{.data.ca\.crt}' | base64 -d > ca-local.crt
  6. передать файл ca-local.crt всем остальным участникам Федерации. Полученные CA-сертификаты сохранить под разными именами, например ca-federation-b.crt и ca-federation-c.crt

    Передавать закрытый ключ tls.key между экземплярами IVA One запрещено

  7. на каждом экземпляре объединить локальный CA-сертификат и CA-сертификаты всех остальных участников Федерации:

    Пример для экземпляра iva-federation-a при подключении iva-federation-b и iva-federation-c:
    cat ca-local.crt ca-federation-b.crt ca-federation-c.crt > bundled-ca.crt

    В файл bundled-ca.crt необходимо включить CA-сертификаты всех участников Федерации, включая текущий экземпляр. Количество сертификатов зависит от количества экземпляров и не ограничивается приведенным примером.

  8. на каждом экземпляре создать или обновить Secret с локальным сертификатом, локальным закрытым ключом и объединенным набором CA-сертификатов всех участников Федерации:

    kubectl create secret generic federation-gateway-tls-bundled \
      -n iva-one \
      --from-file=tls.crt=tls.crt \
      --from-file=tls.key=tls.key \
      --from-file=ca.crt=bundled-ca.crt \
      --dry-run=client -o yaml | kubectl apply -f -
  9. в файле /opt/iva/values.yaml указать созданный Secret и параметры соединения со всеми удаленными NATS-кластерами

    Пример для инсталляции iva-federation-a:
    federation-gateway:                                   # Настройки прикладного Federation Gateway
      config:                                              # Конфигурация процесса Gateway
        http:                                             # Настройки входящих и исходящих HTTP-соединений
          mtls:                                           # Взаимная TLS-аутентификация Federation Gateway
            caSecretName: federation-gateway-tls-bundled  # Secret с CA всех участников
            secretName: federation-gateway-tls-bundled    # Secret с локальным сертификатом и ключом
    
    natssupercluster:                                     # Настройки федеративного NATS-кластера
      tlsCA:                                              # CA для проверки сертификатов NATS-участников
        secretName: federation-gateway-tls-bundled        # Secret с объединенным набором CA
      config:                                              # Конфигурация NATS
        gateway:                                          # Межкластерные NATS Gateway-соединения
          tls:                                            # TLS для соединений между NATS-кластерами
            enabled: true                                 # Включить TLS для NATS Gateway
            secretName: federation-gateway-tls-bundled    # Сертификат, ключ и доверенные CA
          merge:                                          # Параметры локального и удаленных кластеров
            name: *federationclustername                  # Имя локального NATS-кластера
            advertise: "<EXTERNAL_IP_ADDRESS_LOCAL>:7222"
            gateways:
              - name: "iva-federation-b"
                urls:
                  - "tls://<EXTERNAL_IP_ADDRESS_REMOTE_B>:7222"             # Адрес NATS Gateway экземпляра iva-federation-b
              - name: "iva-federation-c"
                urls:
                  - "tls://<EXTERNAL_IP_ADDRESS_REMOTE_C>:7222"             # Адрес NATS Gateway экземпляра iva-federation-c

    где:

    • advertise — IP-адрес NATS Gateway в формате <IP-адрес>:<порт>, который сервер сообщает другим участникам для подключения к нему

      В зависимости от настройки сети IP-адрес может быть внутренним или внешним и должен быть доступен другим участникам Федерации
    • gateways — список удаленных NATS-кластеров. Для каждого другого экземпляра Федерации необходимо добавить отдельный элемент с параметрами name и urls

    • name — уникальное имя удаленного NATS-кластера

    • urls — список TLS-адресов удаленного NATS Gateway для исходящих соединений в формате tls://<IP-адрес>:<порт>

      В примере для экземпляра iva-federation-a в список gateways добавлены экземпляры iva-federation-b и iva-federation-c. При подключении большего количества экземпляров необходимо добавить в список каждого из них.

      На каждом экземпляре необходимо указать его IP-адрес в параметре advertise и имя кластера, а в списке gateways — имена и TLS-адреса всех остальных участников Федерации. Текущий экземпляр в список gateways не включается. Secret federation-gateway-tls-bundled, указанный в настройках Federation Gateway и NATS, должен содержать в поле ca.crt CA-сертификаты всех участников Федерации, включая текущий экземпляр.

  10. повторно применить обновленную конфигурацию IVA One:

    sudo helm upgrade iva-one /opt/iva/iva-one -f /opt/iva/values.yaml -n iva-one
  11. проверить состояние подов, сервисов и сертификатов:

    kubectl get pods,svc,certificate -n iva-one

    Сертификаты должны находиться в состоянии Ready=True, а поды Federation Gateway и федеративного NATS — в состоянии Running.

Настройка внешних организаций в веб-панели администрирования

После настройки helm-чарта необходимо настроить доверие между организациями в веб-панели администрирования IVA One в разделе Внешние организации.

Порядок выполняемых действий:

  1. войти в веб-панель администрирования IVA One

  2. перейти в раздел Настройки и выбрать Глобальные

  3. в поле Имя организации указать имя организации и нажать кнопку Сохранить

  4. на каждом экземпляре Федерации перейти в раздел Внешние организации:

    • на экземпляре Федерация А в списке внешних организаций должна отображаться добавленная организация Федерация Б с одним из статусов Доверия нет / Запрос отправлен

    • на экземпляре Федерация Б должна отображаться организация Федерация А

  5. для экземпляра Федерация А в разделе Внешние организации необходимо нажать на название организации Федерация Б и в открывшемся окне Детали подключения нажать на кнопку Доверять для установки доверительных отношений между организациями

    Установка доверия

    Для экземпляра Федерация А статус доверия организации Федерация Б изменится на Запрос отправлен, а для экземпляра Федерация Б статус доверия организации Федерация А изменится на Ожидает ответа

    Изменение статуса
  6. для экземпляра Федерация Б в разделе Внешние организации необходимо нажать на название организации Федерация А и в открывшемся окне Детали подключения нажать на кнопку Доверять для установки доверительных отношений между организациями

    Подтверждение доверия

    Статусы доверия между организациями Федерация А и Федерация Б изменятся на Взаимное доверие

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

После выполненных настроек федеративные контакты доверенных организаций будут отображаться в веб-панели администрирования IVA One в разделе Пользователи и в адресных книгах всех клиентских Приложений IVA One.

Федеративные пользователи

Настройка федерации между IVA One и Платформой IVA MCU

В разделе описана настройка федеративной связи между двумя экземплярами Платформы IVA MCU через IVA One. Каждый экземпляр IVA MCU интегрирован со своим экземпляром IVA One.

Предварительные требования

Перед настройкой необходимо:

  1. установить и настроить два экземпляра IVA One и два экземпляра Платформы IVA MCU

  2. выполнить интеграцию IVA One с IVA MCU для каждой пары:

    • IVA One A и IVA MCU A

    • IVA One B и IVA MCU B

  3. настроить режим федерации для IVA One, включая взаимное доверие между организациями

В дальнейших шагах локальным называется экземпляр, на котором выполняется настройка, а удаленным — второй экземпляр

Настройка NATS в IVA MCU

Настройку необходимо выполнить на каждом экземпляре Платформы IVA MCU.

Чтобы настроить NATS, необходимо:

  1. в веб-панели администрирования IVA MCU перейти в раздел Внешняя аутентификация → Выбрать домен → Нажать кнопку SSO сервера

  2. выбрать SSO-сервер, настроенный для интеграции с локальным экземпляром IVA One, и нажать кнопку Детально

  3. скопировать значения полей URL брокера сообщений и Truststore брокера сообщений

  4. перейти в раздел Системные настройки и выбрать секцию NATS

  5. перенести скопированные значения в одноименные поля URL брокера сообщений и Truststore брокера сообщений

  6. в поле Keystore брокера сообщений указать значение, полученное на локальном экземпляре IVA One согласно инструкции по получению Keystore брокера сообщений

  7. в секции Настройки федеративных связей включить флаговую кнопку Использование федеративного NATS

  8. в поле ID федеративного экземпляра NATS указать ID организации локального экземпляра IVA One согласно таблице соответствия идентификаторов

    Значение ID организации содержится в окне Детали подключения раздела Внешние организации веб-панели администрирования IVA One. Для локального экземпляра необходимо использовать ID той организации IVA One, с которой интегрирован настраиваемый экземпляр IVA MCU.

  9. нажать кнопку Сохранить

  10. вернуться в раздел Внешняя аутентификация, выбрать домен и нажать кнопку SSO сервера

  11. выбрать тот же SSO-сервер и нажать кнопку Детально

  12. включить флаговую кнопку Использовать системный NATS и нажать кнопку Сохранить

Соответствие идентификаторов при настройке двух экземпляров IVA MCU:

Настраиваемый экземпляр ID федеративного экземпляра NATS в системных настройках ID удаленного федеративного экземпляра NATS в настройках федеративной связи

IVA MCU A

ID организации IVA One A

ID организации IVA One B

IVA MCU B

ID организации IVA One B

ID организации IVA One A

Настройка федеративной связи в IVA MCU

Чтобы настроить федеративную связь, необходимо на каждом экземпляре Платформы IVA MCU:

  1. создать связь с удаленным экземпляром IVA MCU согласно инструкции по настройке федеративных связей

  2. в настройках созданной связи в поле ID удаленного федеративного экземпляра NATS указать ID организации удаленного экземпляра IVA One согласно таблице соответствия идентификаторов:

    • для IVA MCU A — ID организации IVA One B

    • для IVA MCU B — ID организации IVA One A

  3. нажать кнопку Сохранить

Проверка синхронизации

Чтобы проверить синхронизацию, необходимо на каждом экземпляре Платформы IVA MCU:

  1. в веб-панели администрирования IVA MCU перейти в раздел Федеративные связи

  2. выбрать домен и нажать кнопку Федеративные связи

  3. убедиться, что в списке отображается созданная связь с удаленным экземпляром. Для описанной схемы из двух экземпляров на каждой стороне должна быть одна федеративная связь

  4. убедиться, что поле Статус синхронизации показывает успешную синхронизацию

При ошибке синхронизации необходимо проверить системные предупреждения IVA MCU, файл ivcs-server.log соответствующего экземпляра IVA MCU и журналы IVA One

Для возможности совершения федеративных звонков в веб-панели администрирования IVA MCU необходимо:
Перейти в раздел Системные настройки → Секция Экспериментальные настройки → Включить настройку Федеративные чаты и звонки → Сохранить изменения, нажав кнопку Сохранить

Настройка доступна начиная с версии Платформы IVA MCU 29.5