В инструкции описана установка обновлений Мессенджера 26.2 для standalone и распределенной инсталляции. Процесс обновления двух видов инсталляций практически идентичен и имеет незначительные отличия, которые выделены по тексту инструкции.
Документ предназначен для использования администраторами организации.
Обновиться до версии 26.2 можно только с версии 26.1. С версии 25.4 нельзя пропускать версии при обновлении.
Если последнее обновление Мессенджера проводилось более трех версий назад, свяжитесь с технической поддержкой для помощи с обновлением.
Если у вас настроена интеграция с Почтой VK WorkSpace, сначала обновите Почту до версии 26.2 по инструкции:
Информацию о совместимости версий Почты и Мессенджера вы найдете в статье.
- Знание Linux на уровне системного администратора.
- Знание основ работы Систем управления базами данных (СУБД).
- Знание основ работы служб каталогов (Directory Service).
- Понимание основ контейнеризации.
- Знание основ работы сетей и сетевых протоколов.
- Знание основных инструментов для работы в командной строке: bash, awk, sed.
Представители VK предоставили вам следующие данные:
- Ссылку на скачивание дистрибутива Мессенджера, чартов и образов.
- Пароль от архива с дистрибутивом.
- Лицензионный ключ.
- Комплект документации.
Для обновления Мессенджера вам понадобится:
-
Дополнительная виртуальная машина под регистри/установщик VK WorkSpace. Настройка машины описана в разделе ниже.
Всегда выделяйте отдельную виртуальную машину под регистри/установщик. Требования к машине:
-
Весь дисковый раздел виртуальной машины должен быть отдан под корневой раздел /. В процессе установки и обновления используются временные каталоги /tmp и /var/tmp.
-
Минимальный рекомендуемый объем памяти SSD — 300 ГБ.
-
vCPU — 4.
-
RAM — 4 ГБ.
Требований к операционной системе для виртуальной машины под регистри/установщик не предъявляется.
Если Мессенджер будет доступен в интернете, поднимите на машине под регистри/установщик внешний IPv4 адрес. Адрес может быть поднят как внутри виртуальной машины, так и проброшен через NAT. Преобразование сетевых адресов (NAT) должно быть вида 1-в-1 (сеть в сеть), то есть с сохранением номера порта. Иначе видео и голосовые звонки могут не работать.
-
-
Доступ к портам: 22, 80, 443.
-
Доступ по порту 5000/TCP с виртуальной машины Мессенджера до виртуальной машины с регистри.
-
Утилита для распаковки zip-архивов, например 7-Zip или Unzip.
-
Заведите в DNS запись, указывающую на виртуальную машину с регистри — registry.vkteams.example.com.
-
Начиная с версии 26.2, для установки и обновления Мессенджера требуется доступ к RPM-репозиториям РЕД ОС.
Все команды выполняются под пользователем root.
-
Установите Wget, cURL и jq.
-
Установите систему управления конфигурациями Ansible-core 2.11 и модуль OpenShift.
-
Выключите SELinux.
-
Установите rsync (опционально).
-
Выключите firewalld.
-
Установите утилиту yq.
-
Перезагрузите виртуальную машину.
В командной строке выполните последовательность команд:
useradd -G wheel -U -m -s /bin/bash deployerDEPLOYER_PASSWORD=<ЗАДАТЬ ПАРОЛЬ ДЛЯ ПОЛЬЗОВАТЕЛЯ>echo deployer:"$DEPLOYER_PASSWORD" | chpasswdusermod -aG redos deployerusermod -aG adm deployerecho "deployer ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/90-cloud-init-users
Перелогиньтесь под пользователя deployer.
Сгенерируйте SSH-ключи для доступа установщика к серверу Мессенджера:
su - deployerssh-keygen -t rsa -f "$HOME/.ssh/id_rsa"cat .ssh/id_rsa.pub > .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Приватная часть ключа будет использоваться при запуске установщика. Имя пользователя может быть другое, но пользователь должен иметь доступ к виртуальным машинам инсталляции.
Для корректной работы установщика в настройках SSH должен быть разрешен TCP Forwarding. Чтобы изменить настройку TCP Forwarding, нужно в файле /etc/ssh/sshd_config установить следующее значение:
AllowTcpForwarding yes
Скачайте архив с установщиком в домашний каталог пользователя deployer и распакуйте его:
wget <link_deployer>tar xvf deployer.tartar xvf static.tar.gz
Скачайте архивы с чартами и образами в каталог source в домашнем каталоге пользователя deployer:
cd sourcewget <link_charts>wget <link_images>
Не распаковывайте.
Проверить в домашнем каталоге пользователя deployer файлы .ansible.cfg и .vault_password. Вывод не должен быть пустым:
ls -la | grep -E "*.*ansible.cfg|.vault"-rw-r--r--. 1 deployer deployer 65 июн 11 14:08 .ansible.cfg-rw-r--r--. 1 deployer deployer 31 июн 11 14:08 .vault_password
В случае распределенной инсталляции выполните данные настройки на всех нодах Мессенджера.
Установите РЕД ОС — версия 7.3с, версия ядра — не выше 6.1.162. Пример настройки параметров ОС описан ниже.
-
Создайте файл /etc/sysctl.d/98-vkworkspace.conf с настройками Sysctl:
kernel.pid_max=4194304net.ipv4.tcp_tw_reuse=1net.ipv6.conf.all.disable_ipv6=1net.ipv6.conf.default.disable_ipv6=1net.ipv6.conf.lo.disable_ipv6=1net.ipv4.tcp_syncookies = 1 -
Создайте файл /etc/security/limits.d/98-vkworkspace-limits.conf с настройками лимитов:
* hard nofile 1048576* soft nofile 131072* hard nproc 257053* soft nproc 131072root hard nofile 1048576root soft nofile 262144root hard nproc 514106root soft nproc 262144 -
Внесите изменение в конфигурации /etc/systemd/system.conf:
DefaultLimitNOFILE=524288:524288 -
Примените изменения:
sysctl -p /etc/sysctl.d/98-vkworkspace.confsysctl --systemИли перезагрузите операционную систему.
-
Установите интерпретатор Python версии 3.
-
Выключите SELinux.
-
Установите rsync (опционально).
-
Выключите firewalld.
-
В командной строке выполните последовательность команд:
useradd -G wheel -U -m -s /bin/bash deployerDEPLOYER_PASSWORD=<ЗАДАТЬ ПАРОЛЬ ДЛЯ ПОЛЬЗОВАТЕЛЯ>echo deployer:"$DEPLOYER_PASSWORD" | chpasswdusermod -aG redos deployerusermod -aG adm deployerecho "deployer ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/90-cloud-init-users -
Выполните следующие команды под пользователем deployer в домашнем каталоге:
su - deployermkdir .sshchmod 700 .ssh/touch .ssh/authorized_keyschmod 600 .ssh/authorized_keys -
В файл .ssh/authorized_keys скопируйте публичную часть ключа — из файла id_rsa.pub на машине с установщиком/регистри у пользователя deployer. В случае распределенной инсталляции скопируйте публичную часть ключа на все ноды с Мессенджером.
-
Перезагрузите виртуальную машину.
Установщик рекомендуется запускать как сервис. При таком запуске не придется прибегать к дополнительным мерам (screen, tmux, nohup), позволяющим установщику продолжить работу в случае потери соединения по SSH.
Чтобы запустить установщик как сервис, на виртуальной машине под установщик/регистри выполните команду:
sudo ./onpremise-deployer_linux -concurInstallLimit 5 \-serviceEnable -serviceMake -serviceUser deployer
По умолчанию выставлен лимит в 5 потоков, при необходимости вы можете увеличить количество потоков до 10, однако это увеличит и нагрузку на систему. Использование более чем 10 потоков не рекомендуется.
Ответ в случае успешного запуска установщика выглядит следующим образом:
deployer.service was added/updatessee status: <systemctl status deployer.service>can`t restart rsyslog services: [exit status 5]OUT: Failed to restart rsyslog.service: Unit rsyslog.service not found.deployer.service was enable and startedsee status: <systemctl status deployer.service>
Перейдите в веб-интерфейс установщика — в адресной строке браузера укажите адрес http://server-ip-address:8888. Если перейти по этому адресу не удается, убедитесь, что firewall был отключен.
На стартовой странице нажмите на кнопку Установить.
Введите лицензионный ключ или выберите файл:
Нажмите Сохранить и Далее.
-
В правом верхнем углу нажмите на значок i → Продукты.
-
В разделе VK WorkSpace включите опцию Мессенджер VK WorkSpace:
Нажмите на кнопку Далее.
-
В разделе Мессенджер включите опцию Внутренний репозиторий. Нажмите на кнопку Далее.
-
Если у вас настроена интеграция Почты с Мессенджером, в разделе Почта выключите опцию Бот календаря для мессенджера VK WorkSpace. Нажмите на кнопку Далее.
Добавьте в установщик виртуальную машину под установщик/регистри:
-
Выберите Ручная настройка
и далее Подтвердить:
-
Далее нажмите Добавить → Сервер:
Откроется форма добавления сервера. Заполните поля:
-
IP-адрес — адрес виртуальной машины под установщик/регистри.
-
Имя сервера — укажите короткое имя сервера (без домена) или оставьте поле пустым.
-
Имя пользователя — укажите имя того пользователя, под которым запущен установщик. В рассматриваемом примере это пользователь deployer.
-
При необходимости настройте дополнительные поля:
- Пароль — необходимо ввести пароль пользователя, под которым запущен установщик, если он был задан при создании. Появляется, если в поле Приватный ключ выбрана опция Использовать авторизацию по паролю. Поле не заполняется при использовании приватного ключа.
- Пропустить проверку некритичных требований — если отметить чекбокс, будет пропущена проверка версии ядра и флагов процессора (sse2, avx). В большинстве случаев выбор чекбокса не требуется.
- Сервер во внешней (dmz) зоне — Оставьте чекбокс пустым.
-
Поле IP-адрес для голосового трафика оставьте пустым.
-
В поле Метки добавьте:
- server = ansible
- project = vkteams
-
Нажмите на кнопку Добавить сервер — сервер отобразится в веб-интерфейсе установщика. Если после добавления сервера под ним отображается уведомление «Не найден интерфейс для межсерверного взаимодействия», нажмите на иконку шестеренки напротив имени этого сервера и выберите интерфейс. Нажмите Обновить.
-
Нажмите на кнопку Далее и обновите страницу.
Установщик автоматически вычисляет некоторые сетевые параметры. Эти параметры необходимо проверить и дополнить, если не все из них были определены.
-
Перейдите в раздел Настройки в верхнем меню, на вкладку Сети. Нажмите на иконку редактирования.
-
Укажите Подсеть, используемая VK WorkSpace на серверах. Убедитесь, что она имеет доступ на 80-й или 443-й порт.
-
Укажите Подсеть, используемая внутри контейнеров — 10.32.0.0/16.
-
Нажмите на кнопку Сохранить и перейдите к следующему шагу.
-
На главной странице установщика перейдите в Настройки и выберите вкладку Доменные имена.
-
В разделе Общие настройки доменов нажмите на кнопку Редактировать и заполните поля:
-
Название вашей компании.
-
Сайт вашей компании.
-
Основной домен для сервисов — используется для почтовой системы и панели администрирования. Укажите домен вашей компании без поддоменов .vkt. и .vkteams.
-
Домен для облачных хранилищ — укажите отдельный домен того же уровня, что и основной, с уникальным именем.
-
Если нужно использовать для Мессенджера отдельный домен, включите опцию Использовать отдельный домен для Мессенджера и укажите домен:
В этом случае веб-клиент Мессенджера будет доступен, например, по адресу
webim.teams.example.com, а регистриregistry.teams.example.comдолжен указывать на виртуальную машину с регистри.
-
-
Нажмите на кнопку Сохранить.
-
Настройте домен Мессенджера. По умолчанию домен Мессенджера формируется как vkt.<основной домен>.
Чтобы изменить префикс vkt, в разделе Настройки доменных имен найдите строку Домен для Мессенджера и нажмите на иконку Редактировать. Внесите необходимые правки и сохраните изменения:
После сохранения доменных имен появятся ошибки. Они пропадут после добавления SSL-сертификатов на следующем шаге.
-
На вкладке Доменные имена нажмите на кнопку Добавить сертификат под заголовком SSL-сертификаты.
-
В открывшейся форме введите сертификат и ключ. Их необходимо указать полностью, включая:
-----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----и-----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY-----. -
Нажмите на кнопку Сохранить.
Есть второй вариант:
- Нажмите на кнопку Выбрать файл.
- Укажите путь к файлу с сертификатом .crt.
- Укажите путь к файлу с ключом .key.
- Кликните по кнопке Сохранить.
Если всё верно, в интерфейсе не будет отображаться ошибок и красной подсветки. Нажмите на зеленую кнопку Далее.
Чтобы установщик мог взаимодействовать с кластером K3s:
-
Для standalone-установки — разрешите на сервере Мессенджера доступ серверу установщика к порту 6443.
Для распределенной инсталляции — разрешите данное правило на всех нодах с
label=raft(первых трех нодах кластера). Подробнее о распределении нод см. в инструкции по установке.sudo iptables -A IM -p tcp -s <IP-адрес машины с регистри/установщиком> --dport 6443 -j ACCEPT -
Сохраните правило, чтобы оно не сбросилось после перезагрузки системы:
sudo /usr/local/bin/iptables-save-for-puppet.sh -
Настройте K3s.
Для standalone-установки — выполните настройки ниже на сервере для Мессенджера.
Для распределенной инсталляции — выполните настройки ниже на тех же нодах, что и в шаге 1.
3.1. В файле /etc/systemd/system/k3s.service добавьте параметр:
--tls-san=[IP-адрес текущего сервера] \3.2. Перезапустите K3s для применения изменений:
systemctl daemon-reloadsystemctl restart k3s.service -
Проверьте соединение установщика с текущим сервером — на сервере под регистри/установщик выполните команду:
ssh <deployer>@<IP-адрес текущего сервера>Должно произойти успешное подключение по SSH.
На сервере с регистри/установщиком вызовите скрипт, передав в качестве параметров имя пользователя deployer и IP-адрес сервера из предыдущего шага:
sh /home/deployer/projects/vkteams/ansible/prepare/roles/migration/files/fetch_data.sh <логин технического пользователя> <IP-адрес текущего сервера>
Пример:
sh /home/deployer/projects/vkteams/ansible/prepare/roles/migration/files/fetch_data.sh deployer node02.company.co
Проверьте, что в выводе результатов работы скрипта отсутствуют ошибки миграции.
Скрипт автоматически выполняет следующие действия:
- Скачивает конфигурационные файлы.
- Добавляет в установщик SSH-ключ пользователя deployer.
- Переносит ноды текущей инсталляции из ctfacts. Серверы Мессенджера не требуют ручного добавления в установщик.
- Переносит секреты для Helm.
- Для версии 26.2 — добавляет кластер K3s. В версии 26.2.1 кластер K3s не добавляется.
-
Нажмите Добавить → Несколько Ansible Playbook:
-
Выберите роль ansible-vkteams-registry. В поле выбора гипервизора укажите сервер с регистри/установщиком. Режим генерации — На одном из серверов. Нажмите на кнопку Добавить:
Добавленная роль отобразится в разделе VK WorkSpace. Нажмите на кнопку запуска добавленной роли (синяя стрелка напротив добавленной роли):
-
Перейдите на вкладку Сети. В поле Список DNS-серверов... укажите DNS-сервер. Нажмите на кнопку Сохранить.
-
Вернитесь на главную страницу установщика и нажмите Добавить → Несколько Ansible Playbook. Выберите роль ansible-vkteams-pre_upgrade.
Для standalone-установки выберите гипервизор под Мессенджер. Режим генерации — На одном из серверов. Нажмите на кнопку Добавить.
Для распределенной инсталляции выберите все гипервизоры, на которых будет развернут Мессенджер. Режим генерации — На одном из серверов. Нажмите на кнопку Добавить.
Добавленная роль отобразится в разделе VK WorkSpace. Нажмите на кнопку запуска добавленной роли (синяя стрелка напротив добавленной роли).
-
Нажмите Добавить → Несколько Ansible Playbook. Выберите роль ansible-vkteams-cluster.
Для standalone-установки выберите гипервизор под Мессенджер. Режим генерации — На одном из серверов. Нажмите на кнопку Добавить:
Для распределенной инсталляции важна последовательность выбора гипервизоров — сначала установите галку напротив любого гипервизора с меткой group = raft, далее выберите остальные гипервизоры, на которых будет развернут Мессенджер. Режим генерации — На одном из серверов. Нажмите на кнопку Добавить.
Добавленная роль отобразится в разделе VK WorkSpace. Нажмите на кнопку запуска добавленной роли (синяя стрелка напротив добавленной роли).
-
Аналогично добавьте роль ansible-puppet-modules на гипервизорах под Мессенджер. Для данной роли последовательность выбора гипервизоров не важна.
Если была нарушена последовательность выбора гипервизоров, роль ansible-vkteams-cluster упадет с ошибкой. В логах сервиса deployer будет строчка:
ERROR: [PLAY STEP][START] Something happened while handling step {compute_hostname=ansible-vkteams-cluster1},{step_name=add_ext_k8s_k3s},{error=cat not get kubeConf: rancher/k3s/k3s.yaml not found. error: file does not exist},{elapsed=1.596187113s},{error=cat not get kubeConf: rancher/k3s/k3s.yaml not found. error: file does not exist}
Для устранения проблемы перейдите в файл computes.yaml, который находится в домашнем каталоге пользователя deployer (/home/deployer). Найдите секцию ansibleParams, она будет выглядеть следующим образом:
- ansibleParams:fileName: projects/vkteams/ansible/cluster/playbook.yamlinventory:- hypervisor5- hypervisor4- hypervisor3- hypervisor2playbookName: clusterhostname: ansible-vkteams-cluster1hypervisor: hypervisor5role: ansible-vkteams-clusterzone: ''
Приведите ее к следующему виду:
- ansibleParams:fileName: projects/vkteams/ansible/cluster/playbook.yamlinventory:- hypervisor2 # указать первым гипервизор с group=raft- hypervisor4- hypervisor3- hypervisor5 # прошлый первый элемент сохранить в спискеplaybookName: clusterhostname: ansible-vkteams-cluster1hypervisor: hypervisor5role: ansible-vkteams-clusterzone: ''
Сохраните изменения.
Перезапустите установщик командой:
sudo systemctl restart deployer.service
В браузере обновите страницу и перейдите на главную страницу установщика. В разделе VK WorkSpace нажмите на кнопку запуска ansible-vkteams-cluster (синяя стрелка напротив роли).
-
Нажмите на логотип в левом верхнем углу веб-интерфейса, чтобы перейти к общей строке состояния.
-
Запустите автоматическую установку — нажмите на кнопку Play рядом с общей строкой состояния в верхней части экрана:
-
Подтвердите запуск автоматической установки, нажав на кнопку Запустить. Перед запуском автоматической установки оставьте включенными все проверки.
В зависимости от этапа обновления будет меняться цвет индикатора:
- Серый — в ожидании начала генерации;
- Синий — в процессе генерации;
- Желтый — шаг будет повторен (автоматически);
- Красный — ошибка.
Ожидайте завершения обновления. Пока процесс идет, рядом со строкой состояния будет отображаться красная кнопка Stop. Дождитесь завершения обновления Мессенджера.
Если в процессе обновления и настройки системы происходят изменения конфигурации, некоторые задачи могут потребовать повторного выполнения. Для повторного запуска необходимо нажать на кнопку Play в общей строке состояния в верхней части экрана или рядом с названием конкретного контейнера.
Когда обновление будет завершено, соответствующий статус отобразится в строке состояния.
После завершения автоустановки:
-
Нажмите Добавить → Несколько Ansible Playbook. Выберите роль «ansible-vkteams-post_upgrade».
-
Для standalone-установки выберите гипервизор под Мессенджер. Режим генерации — На одном из серверов. Нажмите на кнопку Добавить.
Для распределенной инсталляции выберите все гипервизоры, на которых будет развернут Мессенджер. Режим генерации — На одном из серверов. Нажмите на кнопку Добавить.
-
Добавленная роль отобразится в разделе VK WorkSpace. Нажмите на кнопку запуска добавленной роли (синяя стрелка напротив добавленной роли).
-
Если у вас настроена интеграция Почты и Мессенджера, в правом верхнем углу нажмите на значок i → Продукты. В разделе Почта включите опцию Бот календаря для мессенджера VK WorkSpace. Нажмите на кнопку автоустановки.
Обновление считается завершенным.
По прошествии 15 минут подключитесь по SSH и выполните следующие проверки инсталляции:
-
Правильность версии релиза:
cat /etc/myteam-release -
Состояние служб:
- systemctl status | grep '^ *State:'Если в выводе есть статус «degradate», то список служб, которые завершились с ошибкой, можно посмотреть при помощи команды:
- systemctl --all --failed -
Готовность сервисов Мессенджер и ВКС:
ic srvsВсе сервисы должны находиться в состоянии alive.
-
Состояние подов Kubernetes:
kubectl get pods -AВсе сервисы должны быть состоянии Running.
-
Понаблюдайте за нагрузкой CPU и памяти при помощи утилиты K9s.
Также выполните проверки функциональностей Мессенджера и ВКС. Рекомендуется проводить тест при помощи разных типов клиентов, например веб и десктоп.
-
Базовые функциональности:
- Возможность залогиниться в учетной записи.
- Отправить/получить текстовое сообщение с одного клиента на другой и обратно. Убедиться, что сообщения пришли.
- Удалить отправленные сообщения у себя и у всех. Убедиться, что сообщения успешно удаляются.
- Отправить/получить фото/видео/gif с одного клиента на другой и обратно. Проверить, что есть превью.
- Отправить/получить голосовое сообщение с одного клиента на другой и обратно. Убедиться, что запись полноценная и хорошего качества.
- Открыть витрину стикеров, открыть стикерпак. Убедиться, что все отображается корректно.
- Отправить/получить стикер с одного клиента на другой и обратно. Убедиться, что у стикера есть превью.
- Открыть собственный профиль и профиль другого пользователя.
-
Группы:
- Создать группу/канал.
- Добавить пользователя в канал
- Отправить/получить несколько сообщений, которые содержат стикеры и файлы. Убедиться, что сообщения доходят до всех участников.
- Заблокировать/разблокировать участника.
- Закрепить сообщение.
- Удалить пользователя.
- Удалить группу/канал.
-
Звонки:
- Позвонить пользователю. Добавить еще одного пользователя в звонок.
- Создать ссылку на звонок, перейти в звонок по ссылке.
- Проверить работу длительных звонков (около 5 минут).
-
Статусы:
- Поставить/удалить статусы.
Если у вас настроена интеграция с Почтой VK WorkSpace настройте отображение сервисов Почты, Диска и Календаря в клиентском приложении.
Начиная с версии Мессенджер и ВКС 25.4 для корректного отображения сервисов необходимо донести в конфигурационный файл /usr/local/nginx-im/html/myteam/myteam-config.json конфигурацию в соответствии с шагами 4 и 5 инструкции https://biz.mail.ru/docs/on-premises/vk-teams/mail-integration/index.html#10-vk-teams