Поток деплоя
Этот документ описывает flow деплоя в xp2p и то, как он связан с компиляцией конфигурации и запуском сервисов.
Область действия
- Применимо и к client deploy, и к server deploy.
- Следует правилам Apply Flow из apply-flow.md.
Ключевые правила
- Deploy обновляет желаемые входные данные и записывает
apply.request. - Deploy не запускает сервисы.
- Deploy может запустить временный экземпляр xray-core для проверки туннеля.
- Сервисы запускаются оператором явно после успешного deploy.
- При старте сервиса желаемые входные данные компилируются в live runtime artifacts до запуска.
Обзор деплоя
- Client deploy генерирует deploy link и ждёт сервер.
- Server deploy принимает зашифрованный manifest и обновляет желаемые входные данные:
CONFIG_ROOT/xp2p-server.toml- Опциональные JSON snippets в
CONFIG_ROOT/config-server/(если они используются спецификацией deploy) - Server deploy записывает
apply.requestдля роли server. - Client deploy получает ответ сервера и обновляет желаемые входные данные:
CONFIG_ROOT/xp2p-client.toml- Опциональные JSON snippets в
CONFIG_ROOT/config-client/(если они используются спецификацией deploy) - Client deploy записывает
apply.requestдля роли client.
Временная проверка туннеля
Deploy может запустить xray-core с скомпилированной конфигурацией, чтобы проверить связность:
- Это временный runtime, используемый только во время deploy.
- Он не пишет live runtime artifacts.
- Он не запускает system service.
- Он завершается по окончании deploy.
Если сервис уже запущен, deploy не должен останавливать или перезапускать его. Deploy всё равно обязан проверить туннель и не должен полагаться на service runtime для этой проверки. После успешного deploy оператор должен перезапустить сервис, чтобы применить запрошенные изменения. Если сервис не запущен — вместо рестарта нужно выполнить start.
Деплой с live-конфигурацией и работающим сервисом
Deploy может выполняться поверх существующей установки с live config и активным сервисом:
- Желаемые входные данные остаются источником истины для изменений deploy.
- Deploy обновляет желаемые входные данные и записывает
apply.request. - Работающий сервис должен продолжать работать и не должен быть перезапущен deploy.
- Временный xray-core для deploy используется только для проверки туннеля и не должен перезаписывать или переиспользовать service runtime.
- После успешного deploy:
- Если сервис запущен, перезапустите его, чтобы применить изменения.
- Если сервис не запущен, запустите его, чтобы применить изменения.
Запуск сервисов после деплоя
После успешного deploy оператор запускает сервисы явно:
xp2p server service startxp2p client service start
При старте сервис:
- Читает
apply.request. - Компилирует желаемые входные данные в live runtime artifacts.
- Удаляет
apply.request. - Запускает runtime, используя live config.
Если скомпилированного live runtime config нет, сервис завершается со статусом "no config available" и не запускает xray-core.
Сигналы ошибок
Частые проблемы deploy:
- Невалидный Desired TOML / невалидные JSON snippets.
- Коллизии при merge (зарезервированные теги, неверный порядок правил, конфликты).
- Сервис не запущен после успешного deploy.
Если в логах deploy указаны невалидные желаемые входные данные или коллизии merge, исправьте желаемые входные данные файлы и снова запросите apply.