Обычно MultiAgent — центр управления: он держит записи фабрик, разворачивает на них агентов и продукты и настраивает маршрутизацию. Но фабрика может стоять на машине клиента, а не на вашей, и тогда логично отдать управление самому клиенту: он получает свой Мультиагент на своём сервере и сам распоряжается своими агентами. Передача — это разовая операция, которая переносит управление записями с вашего центрального экземпляра на экземпляр клиента. Сами запущенные приложения при этом не трогаются: они продолжают работать, ничего не останавливается и не переустанавливается.
Что это даёт на практике: клиент становится полным хозяином своих агентов, приложений и маршрутов, а вы продолжаете отвечать за саму фабрику как за машину — доступ по SSH, проверки, папки, очистку Docker — и за её собственный Мультиагент, контейнер которого можете пересоздать или обновить. Секреты при передаче идут напрямую между двумя экземплярами по защищённому машинному каналу и не показываются ни в интерфейсе, ни в журналах, ни в ответах программного API.
Как это устроено
На фабрике разворачивают сам Мультиагент — как обычный продукт из каталога, вкладка «Новый агент». Ничего отдельного настраивать не нужно: появившись, этот экземпляр сам получает от центрального запись машины и запись фабрики и сразу подключается к ней. Записи передаются между двумя MultiAgent напрямую, поэтому клиенту не нужно ничего вводить руками и не нужно открывать наружу какие-то дополнительные адреса.
Пока на фабрике есть свой Мультиагент, на странице фабрики в центральном экземпляре появляется вкладка «Передача», а в шапке страницы — кнопка «Управление».
Вкладка «Передача»
Вкладка показывает предпросмотр: что именно переедет к клиенту и что останется у вас. Передумать на этом шаге можно без последствий — предпросмотр ничего не меняет.
- Переезжает: агенты, приложения продуктов, инструменты, свои маршруты, данные сертификатов, ключи доступа к репозиториям, а по желанию — и лицензии, на которые ссылаются агенты; и запись машины с её учётными данными — адресом, портом, логином, паролем или ключом и промежуточным хостом;
- Остаётся у вас: сама запись фабрики — доступ по SSH, проверки, папки и очистка Docker — и строка приложения Мультиагент, чтобы вы могли пересоздавать его контейнер и обновлять его образ.
Кнопка «Передать» запускает саму операцию: она ещё раз связывается с экземпляром клиента, отправляет ему все записи и показывает ход переноса в панели прогресса. Передача считается успешной, только когда на стороне клиента появились все записи агентов и инструментов. После этого центральный экземпляр забывает перенесённые записи — на самой машине при этом ничего не удаляется, контейнеры работают как работали.
Если что-то пошло не так, на вашей стороне ничего не меняется: ни пометок, ни удалений. В отчёте будет названо то, из-за чего операция не прошла, — чаще всего это имя, которое уже занято на экземпляре клиента. Устраните это на его стороне и запустите передачу снова: повторная попытка безопасна. Сбои при переносе маршрутов, сертификатов или ключей репозиториев передачу не блокируют — эти записи при необходимости создаются на стороне клиента вручную.
Что происходит после передачи
- Маршрутизацией управляет клиент. Веб-сервер фабрики собирается из записей самого экземпляра клиента, поэтому он и решает, куда ведут подпапки. Изменение адресов, развёртывание новых агентов и продуктов на фабрике идут через его экземпляр;
- Ваша сторона больше не пересобирает конфигурацию. Все операции, которые раньше обновляли маршруты, теперь просто отмечают в журнале, что фабрика передана. Это не мешает ни работать с файлами по SSH, ни запускать и останавливать приложения, за которые вы по-прежнему отвечаете;
- Фабрика отдана один раз. Повторная передача той же фабрики отклоняется с понятным сообщением. Так исключены две системы, одновременно правящие одну конфигурацию.
Кнопки в шапке страницы: «Управление» и «Ссылка для входа»
После передачи удобно заглянуть в экземпляр клиента: проверить, как встали агенты, разобраться с занятым именем, посмотреть его маршруты. Кнопка «Управление» в шапке страницы фабрики открывает интерфейс клиента в новой вкладке уже выполненным входом — пароль вводить не нужно, и он нигде не хранится.
Для этого центральный экземпляр выдаёт разовую ссылку входа: код действует пять минут и срабатывает только один раз. Чужой или устаревший код просто приводит на страницу входа клиента. Сам ключ доступа при этом остаётся на сервере и в браузер не попадает. Если экземпляр клиента закрыт центральным входом, сначала придётся один раз пройти его обычный вход — кода это не касается.
В той же строке шапки — ещё три кнопки по центральному входу фабрики: «Скопировать логин» и «Скопировать пароль» кладут учётные данные в буфер обмена, а «Ссылка для входа» выдаёт разовую ссылку для входа по QR-коду и тоже копирует её. Каждый клик по ней создаёт новую ссылку, а выданные раньше продолжают работать. Подробнее — на странице Домашняя страница фабрики.
Если что-то не получается
- Сообщение «Машинный API отключён (HTTP 503)». Значит, приложение Мультиагент было развёрнуто раньше, чем появился ключ доступа, по которому экземпляры разговаривают между собой. Пересоздайте это приложение на центральном экземпляре и повторите передачу;
- Сообщение «Мультиагент отклонил сохранённый API-ключ». Так бывает, если экземпляр клиента развернули заново и он получил новый ключ. Лечится так же — пересозданием приложения на центральном экземпляре;
- Перенос не принял какое-то имя. Запись с таким именем уже есть на экземпляре клиента. Переименуйте или удалите её там и запустите передачу снова;
- Маршруты выглядят устаревшими. Значит, клиент не успел применить свою конфигурацию — это не блокирует передачу. Откройте его вкладку «Nginx» и нажмите «Применить конфигурацию».
Подробнее о том, как устроены маршруты фабрики, — на странице Nginx-роутинг; о самом приложении Мультиагент — на странице Продукты.