release: prepare 0.2.0 for sing-box 1.14
This commit is contained in:
+23
-38
@@ -1,21 +1,19 @@
|
||||
# Эксплуатация
|
||||
|
||||
## Ротация credential
|
||||
|
||||
Интерактивно:
|
||||
## Ротация URI
|
||||
|
||||
```bash
|
||||
sudo vpn-egressctl import --stdin
|
||||
```
|
||||
|
||||
Из защищённого файла:
|
||||
Либо из защищённого файла режима 0600:
|
||||
|
||||
```bash
|
||||
sudo vpn-egressctl import --file /run/credentials/new-hysteria2.uri
|
||||
```
|
||||
|
||||
Файл должен иметь режим `0600`. Не используйте positional argument, environment
|
||||
variable, shell history или URL в тикете/логе.
|
||||
Production URI HY2XS должен использовать Gecko. Не передавать URI через argv,
|
||||
environment, shell history, тикет или журнал.
|
||||
|
||||
## Изменение policy
|
||||
|
||||
@@ -26,52 +24,39 @@ vpn-egressctl diff
|
||||
vpn-egressctl sync
|
||||
```
|
||||
|
||||
Path unit следит только за URI. Policy применяется явным `sync`, чтобы случайное
|
||||
редактирование инфраструктурных параметров не вызвало неожиданный restart.
|
||||
Path unit следит только за URI; policy применяется явным `sync`.
|
||||
|
||||
## Состояние
|
||||
## State и rollback
|
||||
|
||||
```bash
|
||||
vpn-egressctl status
|
||||
vpn-egressctl status --json
|
||||
```
|
||||
|
||||
State содержит только hashes, endpoint без auth, версию, время и результат.
|
||||
|
||||
## Rollback
|
||||
|
||||
```bash
|
||||
vpn-egressctl rollback
|
||||
```
|
||||
|
||||
Команда проверяет last-good реальным sing-box, атомарно меняет конфиги местами,
|
||||
перезапускает сервис и выполняет тот же healthcheck. Повторный rollback возвращает
|
||||
конфигурацию, которая была активна до первого rollback.
|
||||
Rollback относится только к конфигам, успешно управлявшимся этой же версией
|
||||
0.2.0 с sing-box 1.14.0. `last-good.meta.json` обязан совпадать по controller
|
||||
version, engine version и SHA-256. Legacy backup отклоняется.
|
||||
|
||||
После ручного rollback desired URI остаётся прежним. `status` показывает
|
||||
`status=rolled_back`, а `doctor` сообщает `config-drift`, потому что production
|
||||
config отличается от заново отрендеренного desired state. Перед новым `sync`
|
||||
нужно либо исправить URI, либо осознанно вернуть desired state.
|
||||
Первое clean apply не имеет предыдущего конфига и не создаёт `last-good`.
|
||||
Последующие успешные изменения сохраняют backup. Ручной rollback меняет current
|
||||
и last-good местами, поэтому повторная команда возвращает предыдущий current.
|
||||
|
||||
## Реакция systemd.path
|
||||
После rollback desired URI не меняется; `doctor` показывает config drift. До
|
||||
следующего `sync` нужно исправить URI либо осознанно вернуть desired state.
|
||||
|
||||
`PathChanged` запускает oneshot `vpn-egress-sync.service`. Одновременный ручной
|
||||
import сериализуется lock-файлом. Если новый URI некорректен, production config
|
||||
не меняется, а unit завершается с ошибкой, видимой в journal.
|
||||
## Watcher
|
||||
|
||||
`PathChanged` запускает `vpn-egress-sync.service`. Все операции сериализованы
|
||||
lock-файлом. Некорректный URI не меняет production config.
|
||||
|
||||
```bash
|
||||
journalctl -u vpn-egress-sync.service -n 100 --no-pager
|
||||
systemctl reset-failed vpn-egress-sync.service
|
||||
```
|
||||
|
||||
## Плановое обновление
|
||||
## Обновления package/engine
|
||||
|
||||
Обновление policy или пакета внутри 1.13.19:
|
||||
|
||||
1. `vpn-egressctl check`;
|
||||
2. `vpn-egressctl diff`;
|
||||
3. backup артефакта пакета;
|
||||
4. обновление;
|
||||
5. `vpn-egressctl sync`;
|
||||
6. `vpn-egressctl doctor`;
|
||||
7. контролируемый rollback-тест на staging.
|
||||
0.2.0 не объявляет совместимость с другими версиями приложения или sing-box.
|
||||
Любой следующий переход выполняется по отдельному release runbook как clean
|
||||
install. `apt upgrade` не считается допустимой процедурой обновления этого
|
||||
control plane.
|
||||
|
||||
Reference in New Issue
Block a user