Развертывание и настройка сервисов групповых политик
Назначение документа
В документе описаны шаги для развертывания и включения сервисов следующих групповых политик:
- Политика доступности разделов меню VK Teams.
- Политика обязательных чатов и каналов VK Teams.
- Политика привилегий.
В инструкции для упрощения сервер/установщик Почты VK WorkSpace и сервер/установщик панели администратора VK WorkSpace названы «сервер/установщик VK WorkSpace». Документ предназначен для использования администраторами организации.
Общий план развертывания и включения сервисов групповых политик:
- Проверьте, что у вас есть все необходимое для развертывания и включения сервисов групповых политик.
- Включите функциональность групповых политик в веб-интерфейсе установщика VK WorkSpace.
- Выполните предварительные действия для развертывания и настройки сервисов групповых политик в VK Teams.
-
Разверните и настройте сервисы необходимых групповых политик VK Teams:
-
Настройте переменные окружения на сервере VK WorkSpace.
-
Получите доступ к функциональности групповых политик.
Функциональность отсутствует в базовой сборке. Чтобы подключить ее для одного или всех доменов инсталляции, обратитесь в службу поддержки.
После развертывания и включения сервисов дальнейшая настройка групповых политик происходит в панели администратора VK WorkSpace в соответствии с инструкцией.
Действия с политиками после развертывания и настройки:
- Выключить политику привилегий и политику обязательных чатов и каналов можно в панели администратора VK WorkSpace. Чтобы выключить политику доступности мини-аппов, перейдите в соответствующий раздел данной инструкции.
-
Если появился новый веб-апп или мини-апп и его нужно добавить в клиентское приложение VK Teams, следуйте инструкции ниже.
-
Добавление в карту новых инстансов для сервисов Vipper и Pacman происходит автоматически. Чтобы добавить в карту новый инстанс сервиса Chat-gp, следуйте инструкции ниже.
Дополнительная документация
Групповые политики — в документе описан порядок работы с групповыми политиками в панели администратора VK WorkSpace.
Мини-аппы в VK Teams — в документе описана функциональность мини-аппов в VK Teams, требования к созданию мини-аппов, процесс интеграции мини-аппа в VK Teams, а также методы взаимодействия мини-аппа с нативным клиентом VK Teams.
Настройка интеграции VK Teams и Почты VK WorkSpace — в документе описана настройка интеграции Почты VK WorkSpace и VK Teams.
Настройка интеграции VK Teams с панелью администратора VK WorkSpace — в документе описана настройка интеграции VK Teams версии 24.5 и выше и панели администратора VK WorkSpace версии 1.23 и выше.
Архитектура и описание системы VK Teams — в документе описаны сервисы VK Teams, обеспечивающие функциональность групповых политик. Не является частью публичной документации, обратитесь к представителю VK, чтобы ознакомиться с документом.
Предварительные условия
- Доступ к веб-интерфейсу Kafka.
- Доступ к серверу VK Teams.
- Доступ к веб-интерфейсу установщика VK WorkSpace http://<company_domain>:8888.
- Доступ к серверу VK WorkSpace и к панели администратора VK WorkSpace https://biz.<company_domain>.
-
Сетевой доступ между сервисами VK Teams и сервисами VK WorkSpace:
Откуда Куда Порт/протокол Zastava Birich (Kafka) TCP/10032 Birich (Kafka) Zastava TCP/10032 Zastava Pub TCP/12501 Vipper Pub TCP/12501 Pacman Pub TCP/12501 Pacman Pub HTTP -
Чат-бот для рассылки нотификаций, если необходимо уведомлять пользователей об изменении политики привилегий и политики обязательных чатов и каналов. Создайте нового бота или используйте существующего. Вы можете разрешить боту писать первым — в таком случае уведомления будут получать все пользователи. Если бот не может писать первым — пользователи не будут получать уведомления, пока не напишут в боте /start.
1. Включите функциональность в веб-интерфейсе установщика VK WorkSpace
- Перейдите в веб-интерфейс установщика VK WorkSpace по адресу http://<company_domain>:8888.
- Нажмите на кнопку
в правом верхнем углу и выберите пункт Продукты.
-
В списке продуктов выберите опцию Система групповых политик. Для использования Apache Kafka внутри инсталляции выберите опцию Kafka внутри инсталляции:
-
Нажмите на кнопку Сохранить.
- Перейдите на вкладку AdminPanel.
- Если у вас кластерная инсталляция, распределите контейнеры по гипервизорам. Если инсталляция на одну виртуальную машину, нажмите на кнопку Сгенерировать автоматически, чтобы сгенерировать контейнеры для работы групповых политик.
-
Запустите автоматическую установку нажатием на кнопку
в правом верхнем углу:
-
Подтвердите запуск автоматической установки, нажав на кнопку Запустить во всплывающем окне.
-
После окончания установки перейдите в список контейнеров и соберите информацию, которая вам понадобится для дальнейшей настройки на стороне VK Teams:
-
Адреса Kafka — при использовании Kafka внутри инсталляции необходимо в конфигурационном файле сервиса Zastava указать адреса машин, на которых установлены сервисы bi-kafka:
-
Адрес сервиса Riad — адреса машин, на которых установлены сервисы pub, необходимо будет указать далее в конфигурационных файлах сервисов Pacman, Chat-gp и Vipper.
-
2. Выполните предварительные действия
Перед тем как включать отдельные групповые политики, выполните на сервере VK Teams шаги, описанные ниже:
Шаг 1. Проверьте настройку сервиса Godmod и мини-аппов
Выполните данный шаг, если настраиваете политику доступности мини-аппов. Если вы настраиваете другую политику, перейдите к следующему шагу.
-
Если у вас новая инсталляция VK Teams, сначала настройте веб-аппы и мини-аппы (см. дополнительную документацию) и проверьте корректность их работы и только потом переходите к развертке и настройке сервисов групповых политик. Все веб-аппы и мини-аппы инсталляции, такие как почта, календарь, облако, должны быть настроены до запуска миграции мини-аппов и анонсирования групповых политик.
Если VK Teams установлен давно и все веб-аппы и мини-аппы работают корректно, перейдите к пункту 2.
-
Проверьте, что в конфигурационном файле сервиса Godmod /usr/local/nginx-im/html/myteam/myteam-config.json:
-
В секциях desktop и mobile присутствует вкладка messenger и стоит на первом месте:
-
Указана версия API>=120:
Если вы внесли изменения в /usr/local/nginx-im/html/myteam/myteam-config.json, перезапустите pod myteam-admin:
-
Шаг 2. Настройте права для административного пользователя
Перед анонсированием политики убедитесь, что у пользователя, из-под которого будет осуществляться анонс, имеются необходимые права.
-
Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/store/myteam-admin.yml и в секциях MiniApps, Management и Settings установите для поля default значение allow:
-
Перезапустите pod myteam-admin:
Шаг 3. Авторизуйтесь под учетной записью администратора
-
Сгенерируйте OTP с помощью команды:
-
Авторизуйтесь:
После этого в cookieFile.txt происходит запись cookie, который нужно использовать в дальнейших запросах с флагом -b. Примеры запросов будут приведены для каждой из политик ниже. В рамках одной сессии достаточно авторизоваться таким образом один раз.
Шаг 4. Настройте сервис Zastava
Сервис отвечает за взаимодействие с панелью администратора VK WorkSpace и передачу событий групповых политик в сервисы VK Teams. При изменении политики сервис Pravda на стороне в панели администратора VK WorkSpace создает событие и отправляет его в Kafka (подробнее см. в документе с описанием архитектуры VK Teams. Не является частью публичной документации, обратитесь к представителю VK Tech, чтобы ознакомиться с документом).
Перейдите в конфигурационный файл сервиса Zastava /usr/local/etc/zastava-1.yaml и заполните поля:
-
В секции kafka:
kafka: addresses: - 100.70.81.231:10032 - 100.70.81.219:10032 - 100.70.81.231:10032 consumer_group: "zastava-consumer" topic: "birich" retry_topic: "birich-retry" dlq_topic: "birich-dlq" actions_topic: "action" actions_retry_topic: "birich-action-retry" poll_limit: 1000 retry_delay_ms: 3000 retry_count_max: 3 consume_preferring_lag: 1 max_buffered_records: 10000 fetch_max_partition_bytes: 1000
где:
-
address — адреса машин и порт bi-kafka из шага Настройки в веб-интерфейсе установщика VK WorkSpace.
-
consumer_group — название группы потребителей Kafka. Может быть произвольным, главное, чтобы оно совпадало между всеми инстансами сервиса Zastava.
-
topic — топик для получения событий изменений, относительно пользователя. Не меняйте название топика.
-
retry_topic — служебный топик для логики ретраев и отложенной доставки сообщений. Не меняйте название топика.
-
dlq_topic — служебный топик для недоставленных сообщений. Анализ сообщений из этого топика может быть полезен для определения проблем. Не меняйте название топика.
-
actions_topic — топик для получения действий, применяемых к пользователям в соответствии с назначаемыми политиками. Не меняйте название топика.
-
actions_retry_topic — служебный топик для логики ретраев и отложенной доставки сообщений. Не меняйте название топика.
-
poll_limit — ограничение на количество одновременно забираемых сообщений из брокера.
-
retry_delay_ms — пауза между попытками повторно доставить сообщение.
-
retry_count_max — максимальное число попыток доставить сообщение.
-
consume_preferring_lag — служебный параметр потребителя топиков Kafka, оставьте без изменений.
-
max_buffered_records — служебный параметр потребителя топиков Kafka, оставьте без изменений.
-
fetch_max_partition_bytes — служебный параметр потребителя топиков Kafka, оставьте без изменений.
-
-
В секции schekolda укажите для поля max_parallel значение «4»:
Поле max_parallel отвечает за количество одновременных запросов в сервис Zastava. Этот параметр можно использовать для ограничения потока исходящих запросов. При выставлении значения «0» количество исходящих запросов не будет ограничено. Рекомендованное значение на данный момент: «4».
-
В секции etcd укажите эндпоинты и префикс ключей для доступа в etcd (сервис Riad):
где:-
endpoints — адрес сервиса Riad из шага Настройки в веб-интерфейсе установщика VK WorkSpace.
-
/gp/vkt/ — префикс ключей для доступа в etcd, оставьте без изменений. Он используется при обновлении групповой политики.
Внимание
Эндпоинты и префикс ключей для доступа в etcd должны совпадать с указанными в конфигурации сервиса Pravda и в конфигурации конкретных сервисов групповых политик.
-
-
Перезапустите сервис Zastava командой:
Шаг 5. Создайте топики в Kafka
При использовании Kafka внутри инсталляции
Если вы используете Kafka внутри инсталляции, необходимые топики создадутся автоматически.
Чтобы проверить, что необходимые топики созданы:
- Перейдите в веб-интерфейс установщика VK WorkSpace по адресу http://<company_domain>:8888.
-
Перейдите в список контейнеров, найдите контейнер bi-kafka и нажмите на пиктограмму
-
Выберите Проверить для графы create_topics:
После нажатия на кнопку запустится проверка необходимых топиков.
Если в контейнере недостает топиков, для графы create_topics тег done изменится на needRefresh. Нажмите на кнопку Запустить.
По умолчанию создается 10 партиций для каждого топика. Чтобы увеличить количество партиций:
-
Подключитесь к контейнеру bi-kafka:
-
Следуйте инструкции из документации Apache Kafka.
При использовании внешнего сервиса Kafka
Если вы используете внешний сервис Kafka, перейдите в его веб-интерфейс и создайте все топики из секции kafka конфигурационного файла /usr/local/etc/zastava-1.yaml (см. шаг 1 выше).
Количество партиций для каждого топика — не менее max_parralel * <количество инстансов> / 2. Рекомендуется при возможности сразу установить количество партиций равное max_parralel * <количество инстансов>.
Большее число партиций не является проблемой (и число партиций у существующего топика, как правило, можно увеличить).
Таким образом, для двух инстансов сервиса Zastava с max_parralel = 4 рекомендуется для начала установить по восемь партиций в каждом топике.
Если топиков нет и доступа к веб-интерфейсу Kafka тоже нет
Создайте топики при помощи утилиты kcat. Будьте осторожны, так как топики будут иметь некоторое заранее сконфигурированное администратором Kafka количество партиций, которое может не совпадать с желаемым. Прибегать к этой инструкции следует только при отсутствии других вариантов.
Чтобы создать топики:
-
На сервере VK Teams выполните команды ниже:
sudo docker run -it --network=host edenhill/kcat:1.7.1 -b b <IP-адрес_Kafka> -P -t birich -Z # (нажмите ctrl-d, чтобы послать eof) sudo docker run -it --network=host edenhill/kcat:1.7.1 -b b <IP-адрес_Kafka> -P -t action -Z # (нажмите ctrl-d, чтобы послать eof) sudo docker run -it --network=host edenhill/kcat:1.7.1 -b b <IP-адрес_Kafka> -P -t birich-action-retry -Z # (нажмите ctrl-d, чтобы послать eof) sudo docker run -it --network=host edenhill/kcat:1.7.1 -b b <IP-адрес_Kafka> -P -t birich-retry -Z # (нажмите ctrl-d, чтобы послать eof) sudo docker run -it --network=host edenhill/kcat:1.7.1 -b b <IP-адрес_Kafka> -P -t birich-dlq -Z #( нажмите ctrl-d, чтобы послать eof) # Посмотрите список топиков sudo docker run -it --network=host edenhill/kcat:1.7.1 -b <IP-адрес_Kafka> -L
-
Перезапустите сервис Zastava командой:
3. Включите политику доступности мини-аппов в VK Teams
На сервере VK Teams выполните шаги, представленные ниже:
Шаг 1. Выполните скрипт миграции мини-аппов
-
Для корректной работы скрипта откройте доступ на запросы в сервис Go-files:
-
В конфигурационном файле Nginx /usr/local/nginx-im/confv2/nginx.conf в секции geo $prod_ip укажите IP-адрес сервера VK Teams:
-
Перезапустите Nginx:
-
Проверьте доступ на запросы в сервис Go-files.
Пример команды для проверки доступа:
-
-
Перейдите в директорию /usr/local/gp_deploy/ и запустите скрипт миграции веб-аппов и мини-аппов командой:
В результате работы скрипта в сервисах Avon и Gulliver появится информация о веб-аппах и веб-аппах, присутствующих в инсталляции.
Примечание
Для обновления информации о мини-аппах (в ситуации, когда необходимо исправить конфиг, название мини-аппа или иконку) скрипт можно запустить с ключом
–update
.
Пример:Список перенесенных в инсталляцию мини-аппов будет сохранен в файле created_miniapps.txt.
-
Чтобы проверить список перенесенных мини-аппов, выполните команду:
В выводе команды отобразятся перенесенные мини-аппы с типом webapp и native:
- ['calendar', 5, true, 'webapp'] - ['calls', 3, true, 'native'] - ['cloud', 8, false, 'webapp'] - ['mail', 6, false, 'webapp'] - ['messenger', 17, true, 'native'] - ['miniapp-8fe88e60-4100-4c6d-9a25-5aa40d525c37', 1, true, 'miniapp'] - ['orgstructure', 7, false, 'webapp'] - ['tasks', 2, true, 'webapp']
Проверьте, что присутствуют все необходимые мини-аппы для инсталляции.
-
Активируйте все перенесенные мини-аппы
Пример команды для активации мини-аппа календарей:
Шаг 2. Активируйте сервис Pacman
Сервис отвечает за реализацию групповой политики доступности веб-аппов и мини-аппов и находится в инсталляции в неактивном состоянии. Сервис надо активировать и развернуть.
Чтобы активировать сервис:
-
Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects.yml и удалите из секции disabled сервис Pacman.
-
Запустите сборку сервиса:
-
Запустите деплой сервиса:
-
Создайте карту сервиса:
Пример названия инстанса сервиса в карте: pacman.<имя_ноды>.pacman -1
Шаг 3. Разверните сервис Pacman
Перейдите в конфигурационный файл сервиса Pacman /usr/local/etc/k8s/helmwave/projects/pacman/values/pacman.yml и укажите:
-
В секции pravda укажите адрес эндпоинта API групповых политик:
-
В секции cache укажите размер и тип кэша:
На данный момент поддерживаются два типа кэша:
-
none;
-
lru — рекомендованное значение.
-
-
Заполните секции version, endpoints и connection:
live_config: riad: version: "/gp/vkt/pacman/1" endpoints: - "100.70.80.52:12501" policies: # см. описание в пункте ниже connection: uri: "pacman" protocol: "ipros" params: {}
где:
-
version — ключ, по которому панель администратора VK WorkSpace будет искать конфигурацию. Имеет вид prefix/имя_сервиса/версия. Важно убедиться, что префикс совпадает с указанным в настройках сервисов Pravda и Zastava.
-
endpoints — адрес etcd-сервера Riad из шага Настройки в веб-интерфейсе установщика VK WorkSpace.
-
connection — секция настроек доставки сообщений для сервиса Zastava. Оставьте как в примере выше.
-
-
Заполните секцию policies:
Если вы выполнили скрипт миграции мини-аппов, возьмите секцию policies из примера ниже, скорее всего, вам не потребуется ее менять:
live_config: riad: version: "/gp/vkt/pacman/1" endpoints: - "10.32.0.1:2379" policies: - name: orderpolicy title: Order Policy payload: permissions: - name: desktopOrder title: Разделы десктоп и веб-версий description: Выбранные сервисы будут отображаться в интерфейсе пользователя VK Teams в левом навигационном баре сверху вниз type: SortableMultiSelectList list_values: meta: - name: mobileOrder title: Разделы мобильной версии description: Выбранные сервисы будут отображаться в интерфейсе пользователя VK Teams type: SortableMultiSelectList list_values: meta: connection: uri: pacman protocol: ipros params: {}
Оставьте секции list_values и meta пустыми. В таком случае порядок мини-аппов и настройки по умолчанию будут собраны из сервиса Avon.
Чтобы изменить порядок мини-аппов или значения по умолчанию, заполните секции list_values и meta для mobileOrder и desktopOrder. Пример заполненных секций ниже:
live_config: riad: version: "/gp/vkt/pacman/1" endpoints: - "100.70.80.52:12501" policies: - name: orderpolicy title: Order Policy payload: permissions: - name: desktopOrder title: Разделы десктоп и веб-версий VK Teams description: Выбранные сервисы будут отображаться в интерфейсе пользователя VK Teams в левом навигационном баре сверху вниз type: SortableMultiSelectList list_values: - cloud - messenger - calendar - calls - mail - orgstructure - tasks #- miniapp-b885274c-6616-48b0-98f3-f9e5c689b62a meta: messenger: default_position: 1 hidable: false movable: false tasks: default_position: 2 hidable: false movable: true calls: default_position: 5 hidable: false movable: true mail: default_position: 4 hidable: true movable: true calendar: default_position: 3 hidable: true movable: true orgstructure: default_position: 6 hidable: true movable: true cloud: default_position: 7 hidable: true movable: true #miniapp-b885274c-6616-48b0-98f3-f9e5c689b62a: #display: Тестовый мини-апп #default_position: 8 #hidable: true #movable: true - name: mobileOrder title: Порядок мини-аппов в мобильном клиенте description: Пользователям разрешено пользоваться мини-аппами на мобильном клиенте type: SortableMultiSelectList list_values: - cloud - messenger - calendar - calls - mail - orgstructure - tasks - services #- miniapp-b885274c-6616-48b0-98f3-f9e5c689b62a meta: services: default_position: 1 display: "Сервисы" hidable: false movable: false messenger: default_position: 2 hidable: false movable: false tasks: default_position: 4 hidable: false movable: true calls: default_position: 3 hidable: false movable: true mail: default_position: 6 hidable: true movable: true calendar: default_position: 5 hidable: true movable: true orgstructure: default_position: 7 hidable: true movable: true cloud: default_position: 8 hidable: true movable: true #miniapp-b885274c-6616-48b0-98f3-f9e5c689b62a: #display: Тестовый мини-апп #default_position: 9 #hidable: true #movable: true connection: uri: "pacman" protocol: "ipros" params: {}
В примере выше перечислены все поддерживаемые нативные и веб-аппы, у них указаны правильные признаки hidable и movable и правильный порядок.
Если в инсталляции отсутствует тот или иной веб-апп (например, почта или облако) — достаточно закомментировать соответствующие секции и упоминание в секции list_values.
Мини-аппы можно добавить по аналогии с закомментированным miniapp-b885274c-6616-48b0-98f3-f9e5c689b62a в примере выше. miniapp-b885274c-6616-48b0-98f3-f9e5c689b62a — ID миниаппа, который можно получить в боте Metabot.
Внимание
Все веб-аппы и мини-аппы, не упомянутые в секции policies:
- не будут доступны для конфигурирования через групповые политики в панели администратора VK WorkSpace;
- не будут отображаться в клиентском приложении VK Teams после включения флага group-policy-enabled на шаге 5 ниже.
Перечислите все нативные и веб-аппы, доступные в инсталляции, а также все актуальные мини-аппы в системе, для которых нужна иконка в клиентском приложении VK Teams.
Несмотря на то, что все неанонсированные мини-аппы не будут доступны для конфигурирования через групповые политики, они всё ещё будут доступны по ссылке. Групповая политика разделов в текущей реализации управляет отображением разделов, но не доступом.Информация из раздела meta используется только для отображения в интерфейсе панели администратора VK WorkSpace:
-
Значения values и icon в meta на данный момент не используются.
-
Для hidable и movable указаны значения по умолчанию — true. При необходимости могут быть скорректированы на false.
-
Если default_position прописан хотя бы для одного из аппов, то тогда он должен быть прописан для всех аппов. Кроме того, при выставлении этого параметра через конфиг значения должны быть уникальными. Если нарушено одно из этих условий, при попытке донести в etcd будет код ответа 400. Если default_position не прописывается в конфиге, то он запрашивается из сервиса Avon, в таком случае мини-аппы могут быть не по порядку в клиентском приложении.
Внимание
desktopOrder должен быть описан раньше mobileOrder, иначе в панели администратора VK WorkSpace секции настройки поменяются местами. Секция services обязательно должна быть описана при помощи поля display.
-
-
Перезапустите сервис Pacman командой:
Шаг 4. Анонсируйте политику доступности мини-аппов
-
Убедитесь, что выполнены предварительные действия для анонсирования политики.
-
В консоли выполните команду:
curl 'https://admin-<domain>/api/miniapp/announcePolicy' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -b cookieFile.txt \ -d ''
Если код ответа не 200 — посмотрите логи сервиса Pacman:
Если код ответа 200 — перейдите по адресу https://biz.<company_domain>.ru/vkwsgp/api/v1/settings/vkt/pacman/ и проверьте групповую политику в панели администратора VK WorkSpace.
Шаг 5. Включите политику доступности мини-аппов
Для всей инсталляции:
-
Перейдите в конфигурационный файл /usr/local/nginx-im/html/myteam/myteam-config.json и укажите для поля group-policy-enabled значение true:
Полеgroup-policy-enabled: true
отвечает за то, чтобы клиентские приложения VK Teams начали получать список мини-аппов в соответствии с настроенной групповой политикой. -
Перезапустите pod myteam-admin:
Для определенного домена:
-
Перейдите в конфигурационный файл /usr/local/nginx-im/html/myteam/myteam-config.json и укажите для поля default значение false, а для домена — true:
-
Перезапустите pod myteam-admin:
Шаг 6. Включите политику в панели администратора VK WorkSpace
Работа с политикой доступности мини-аппов в панели администратора VK WorkSpace описана в документе Групповые политики.
4. Включите политику обязательных чатов и каналов в VK Teams
На сервере VK Teams выполните шаги, представленные ниже:
Шаг 1. Активируйте сервис Chat-gp
Сервис отвечает за реализацию групповой политики обязательных чатов и каналов и находится в инсталляции в неактивном состоянии. Сервис надо активировать и развернуть.
Чтобы активировать сервис:
- Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects.yml и удалите из секции disabled сервис Chat-gp.
-
Запустите сборку сервиса:
-
Запустите деплой сервиса:
-
Создайте карту сервиса:
Внимание
Chat-gp не должен иметь "-" в названии карты.
Пример правильного названия инстанса сервиса в карте — chatgp.onpremise.chatgp-1.
Пример неправильного названия инстанса сервиса в карте — chatgp.onpremise.chat-gp-1. -
Создайте сервис для каждого экземпляра инстанса:
echo "ctlr_add_srv chatgp.mk-cluster-24-3-03. chatgp -1 mk-cluster-24-3-03 main" | nc ctlr.service.onpremise.consul 4020
где:
-
chatgp.mk-cluster-24-3-03. chatgp -1 — алиас.
-
mk-cluster-24-3-03 — имя ноды.
-
main — тип (slave, main, dup, mirror, fallback или none).
-
Шаг 2. Разверните сервис Chat-gp
Перейдите в конфигурационный файл сервиса Chat-gp /usr/local/etc/k8s/helmwave/projects/chatgp/values/chatgp.yml и заполните поля:
-
В секции zastava:
где:
-
timeout — таймаут обработчика сообщений сервиса Zastava. Рекомендуется оставить без изменений.
-
long_task_ttl — ограничение времени жизни для асинхронных запросов обработки добавления в чат. Рекомендуется оставить без изменений.
Примечание
Значения можно изменить для избежания подвисаний при обработке сообщений из сервиса Zastava и возникновении нежелательных ретраев.
-
-
В секции notifier при необходимости включите уведомления пользователей об изменении политики:
notifier: bot: enabled: true token: "%{facts.metabot_token}" bot_api: "https://%{mapping::host::api_external}/bot/v1/" timeout: 2s retry_count: 3 retry_pause: 600ms text_header: "ℹ️ Настройки Вашего аккаунта были изменены администратором домена:" templates: add_to_chat: > Вы были добавлены в чат [{{escape .ChatName}}]({{.Config.BaseURL}}{{.ChatNick}}) del_from_chat: > Вы были удалены из чата [{{escape .ChatName}}]({{.Config.BaseURL}}{{.ChatNick}}) base_url: https://%{mapping::host::icq_im}/
где:
-
enabled: true — включает уведомления пользователей.
-
token — укажите токен бота, от которого будут приходить уведомления (см. предусловия).
-
-
В секции live_config укажите правильный ключ и адрес etcd-сервера:
live_config: riad: version: "/gp/vkt/chatgp/1" endpoints: - 100.70.80.52:12501 policies: - name: obligatory_chats title: The policy of obligatory chats payload: permissions: - name: obligatory_chats title: The policy of obligatory chats description: The policy of obligatory chats type: MultiSelectList limit_scope: false value_source: type: chat actions: on_add_item: on_remove_item: connection: uri: chatgp protocol: ipros params: {}
где endpoints — адрес сервиса Riad из шага Настройки в веб-интерфейсе установщика VK WorkSpace
Внимание
Конфигурацию политики в секции policies оставьте без изменений.
-
Перезапустите сервис Chat-gp командой:
Шаг 3. Настройте сервис Mchat-st
-
Перейдите в конфигурационный файл сервиса /usr/local/etc/mchat-st-1.conf и укажите:
-
Запустите скрипт для выставления creator_sn у старых чатов (без его запуска старые чаты не будут отображаться в панели администратора VK WorkSpace):
-
Остановите slave-сервис.
-
Сделайте копию df и xlog.
-
Запустите slave-сервис.
-
Переключитесь на master и выставите в real mode:
-
Запустите:
-
Проверьте, есть ли ошибки в логах. Если есть, то перезапустите.
-
Чтобы посмотреть процесс скрипта:
По завершении скрипта будет вывод:
Данный скрипт запускается один раз при первичной настройке групповой политики.
-
-
Перезапустите сервис Mchat-st командой:
Шаг 4. Настройте сервис Gbld-mchat
-
Перейдите в конфигурационный файл сервиса /usr/local/etc/gbld-mchat-1.conf и укажите:
-
Перезапустите сервис командой:
Шаг 5. Настройте сервис Cmini
-
Перейдите в конфигурационный файл сервиса /usr/local/etc/cmini-1.conf и укажите:
-
Перезапустите сервис командой:
Шаг 6. Анонсируйте политику обязательных чатов.
- Убедитесь, что выполнены предварительные действия для анонсирования политики.
-
Выполните в консоли команду:
Шаг 7. Включите политику в панели администратора VK WorkSpace
Работа с политикой обязательных чатов и каналов в панели администратора VK WorkSpace описана в документе Групповые политики.
5. Включите политику привилегий
На сервере VK Teams выполните шаги, представленные ниже:
Шаг 1. Активируйте сервис Vipper
Сервис отвечает за реализацию групповой политики привилегий и находится в инсталляции в неактивном состоянии. Сервис надо активировать и развернуть.
Чтобы активировать сервис:
-
Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects.yml и удалите из секции disabled сервис Vipper.
-
Запустите сборку сервиса:
-
Запустите деплой сервиса:
-
Создайте карту сервиса:
Пример названия инстанса сервиса в карте: vipper.<имя_ноды>.vipper-1
Шаг 2. Разверните сервис Vipper
Чтобы развернуть сервис:
-
Перейдите в конфигурационный файл сервиса Vipper /usr/local/etc/k8s/helmwave/projects/vipper/values/vipper.yml и в секции keycloak укажите доступы до сервиса Keycloak:
-
В секции notifier при необходимости включите уведомления пользователей об изменении политики:
notifier: bot: enabled: true token: "%{facts.metabot_token}" bot_api: "https://%{mapping::host::api_external}/bot/v1/" timeout: 2s retry_count: 3 retry_pause: 600ms
где:
-
enabled: true — включает уведомления пользователей.
-
token — укажите токен бота, от которого будут приходить уведомления (см. предусловия).
-
-
В секции live_config укажите правильный ключ и адрес etcd-сервера:
live_config: riad: version: "gp/vkt/vipper/2" endpoints: - "100.70.80.52:12501" policies: - name: "vipspolicy" payload: permissions: - name: "allowDisturb" title: "VIP-S" description: "Пермишен политики VIP пользователей" type: "List" list_values: ["Regular", "VIP2", "VIP1"] limit_scope: false meta: Regular: display: "Обычный" VIP2: display: "Доверенный" VIP1: display: "Привилегированный" connection: uri: "vipper" protocol: "PROTOCOL" params: {}
где endpoints — адрес сервиса Riad из шага Настройки в веб-интерфейсе установщика VK WorkSpace.
Внимание
Конфигурацию политики в секции policies оставьте без изменений.
-
Перезапустите сервис Vipper командой:
Шаг 3. Настройте сервис Gbld-mchat
-
Перейдите в конфигурационный файл сервиса /usr/local/etc/gbld-st-1.conf и укажите:
-
Перезапустите сервис командой:
Шаг 4. Настройте сервис Mchat-st
-
Перейдите в конфигурационный файл сервиса /usr/local/etc/mchat-st-1.conf и укажите:
-
Перезапустите сервис командой:
Шаг 5. Настройте сервис Nomail
-
Перейдите в конфигурационный файл сервиса /usr/local/etc/nomail-1.conf и добавьте в поле nomail.keycloak.additional.extra.fields значение «memberOf»:
-
Перезапустите сервис командой:
Шаг 6. Настройте сервис Boss
-
Перейдите в конфигурационный файл сервиса oap/bos_post.tcl и укажите:
-
Перезапустите сервис командой:
Шаг 7. Анонсируйте политику привилегий
-
Убедитесь, что выполнены предварительные действия для анонсирования политики.
-
В консоли выполните команду:
Шаг 8. Включите политику в панели администратора VK WorkSpace
Работа с политикой привилегий в панели администратора VK WorkSpace описана в документе Групповые политики.
6. Настройте переменные окружения на сервере VK WorkSpace
-
Подключитесь к серверу VK WorkSpace, на котором установлен контейнер pravdapg1.
-
Получите имена политик:
Вывод команды будет следующим:
id | name | title | description | app_name | service_name | revision ---+------------------+-----------------+-------------+----------+--------------+--------- 4 | obligatory_chats | Группы и каналы | | vkt | chatgp | 1 6 | vipspolicy | VIP-S policy | | vkt | vipper | 1 2 | orderpolicy | Order Policy | | vkt | pacman | 3 (3 rows)
-
Установить переменные окружения с уникальными значениями для политик в формате "app_name:service_name:name" для ролей:
-
bizf
-
biz-celery-worker-pdd
-
biz-celery-worker-pdd-check
-
biz-celery-worker-pdd-high
-
biz-celery-worker-update
-
biz-celery-beat
-
biz-pravda-kafka-consumer
GP_MINI_APPS_LIST_UNIQUE_NAME: vkt:pacman:orderpolicy GP_REQUIRED_CHATS_UNIQUE_NAME: vkt:chatgp:obligatory_chats GP_VIP_UNIQUE_NAME: vkt:vipper:vipspolicy
где:
-
GP_MINI_APPS_LIST_ID — orderpolicy.
-
GP_REQUIRED_CHATS_POLITIC_ID — obligatory_chats.
-
GP_VIP_ID — vipspolicy.
-
-
Перейдите в веб-интерфейс установщика VK WorkSpace по адресу http://<company_domain>:8888 и запустите автоустановку нажатием на кнопку
в правом верхнем углу.
Как выключить групповые политики
Политика привилегий и политика обязательных чатов и каналов выключаются в панели администратора VK WorkSpace. Подробное описание см. в документе Групповые политики.
Чтобы выключить политику доступности мини-аппов для конкретного домена или всей инсталляции:
- Перейдите панель администратора VK WorkSpace https://biz.<company_domain> и отключите групповую политику.
-
Подключитесь к серверу VK Teams и выключите политику:
Для всех доменов инсталляции:
В конфигурационном файле /usr/local/nginx-im/html/myteam/myteam-config.json в секции group-policy-enabled для поля default укажите значение false:
Для определенного домена:
В конфигурационном файле /usr/local/nginx-im/html/myteam/myteam-config.json в секции group-policy-enabled для поля default укажите значение true, а для домена — false:
-
Перезапустите pod myteam-admin:
Как обновить политику доступности мини-аппов в VK Teams
Чтобы добавить новый веб-апп или мини-апп в клиентское приложение VK Teams, выполните шаги ниже:
-
На сервере VK Teams перейдите в конфигурационный файл сервиса Pacman /usr/local/etc/k8s/helmwave/projects/pacman/values/pacman.yml.
-
В секции riad поднимите версию ключа /gp/vkt/, например: "/gp/vkt/pacman/4" → "/gp/vkt/pacman/5":
-
Если необходимо изменить порядок мини-аппов или настройки по-умолчанию, заполните секцию policies (формат секции описан выше).
-
Перезапустите сервис Pacman командой:
-
В конфигурационном файле /usr/local/etc/k8s/helmwave/store/myteam-admin.yml в секциях MiniApps, Management и Settings установите для поля default значение allow:
myteamAdminPermission: resources: Analytics: default: allow groups: [] Export: default: allow groups: [] Settings: default: allow groups: [] Information: default: allow groups: [] Management: default: allow groups: [] MiniApps: default: allow groups: []
Перезапустите pod myteam-admin:
-
Анонсируйте политику:
В консоли выполните команду:
curl 'https://admin-<domain>/api/miniapp/announcePolicy' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -b cookieFile.txt \ -d ''
Если код ответа не 200 — посмотрите логи сервиса Pacman:
Если отображается ошибка авторизации — авторизуйтесь под учетной записью администратора и заново анонсируйте политику.
Если код ответа 200 — перейдите по адресу https://biz.<company_domain>.ru/vkwsgp/api/v1/settings/vkt/pacman/ и проверьте групповую политику в панели администратора VK WorkSpace.
Как добавить новый инстанс сервиса групповой политики VK Teams в карту
Добавление в карту новых инстансов для сервисов Vipper и Pacman происходит автоматически.
Чтобы добавить в карту новый инстанс сервиса Chat-gp:
-
На сервере VK Teams создайте сервис для каждого экземпляра инстанса:
echo "ctlr_add_srv chatgp.mk-cluster-24-3-03. chatgp-2 mk-cluster-24-3-03 main" | nc ctlr.service.onpremise.consul 4020
где:
-
chatgp.mk-cluster-24-3-03.chatgp-2 — алиас.
-
mk-cluster-24-3-03 — имя ноды.
-
main — тип (slave, main, dup, mirror, fallback или none).
-
-
Перейдите в конфигурационный файл сервиса Chat-gp /usr/local/etc/k8s/helmwave/projects/chatgp/values/chatgp.yml и в секции configs под полем mountPath добавьте новый инстанс:
volumes: configs: mountPath: /usr/local/etc/ chatgp-1: * chatgp chatgp-2: * chatgp #добавьте новый инстанс configMaps:
Внимание
Chat-gp не должен иметь "-" в названии инстанса.
Пример правильного названия инстанса сервиса в карте — chatgp.<имя_ноды>.chatgp-2.
Пример неправильного названия инстанса сервиса в карте — chatgp.<имя_ноды>.chat-gp-2. -
Запустите сборку сервиса:
-
Запустите деплой сервиса: