build: закрепить новые инварианты приёмкой и документацией
verify_versions_contract получил сверку API namespace. Путь machine-auth
записывается в /etc/hysteria/config.yaml и в post-install.env, то есть по нему
Hysteria обращается к админке. Пока строка была продублирована в шаблонах,
smoke, тестах, приёмке и e2e, расхождение обнаруживалось только на живом
сервере. Теперь Go-константы, API_BASE фронтенда и оба шаблона сверяются
против значений, скомпилированных в оркестратор.
Приёмка проверяет, что:
- fatal_pre_apply недостижим после записи install-state;
- каждый ownership-флаг взводится раньше своего шага;
- у read-only фазы нет универсального раннера, через который можно
проскользнуть;
- инвариант публичного endpoint живёт в preflight и не обращается к внешним
сервисам определения IP;
- purge-v0.sh и clean-host описывают одну границу;
- секреты не попадают в персистентный файл экспорта;
- импорт пиров валидируется так же строго, как их создание;
- удалённые exportConfig/importConfig не вернулись.
Захардкоженная схема =2 в приёмке заменена на значение из versions.env: при
переходе на schema 3 пришлось бы помнить ещё и про эту строку.
Документация: контракт раннеров и ownership в 08, инвариант публичного
endpoint в 08/09/12/13 и README, сетевая идентичность панели и удалённые
export/import в 04, сценарии D1 (отказ сразу после PHASE 0) и D2 (устаревший
DNS после смены IPv4) в 11, версии package.json как не-версия продукта в 02.
This commit is contained in:
@@ -114,6 +114,29 @@
|
||||
3. оператор запускает `reconfigure --dry-run`, затем `reconfigure --apply`;
|
||||
4. оркестратор обновляет runtime и перезаписывает snapshot.
|
||||
|
||||
### Политики проверок DNS
|
||||
|
||||
В `/etc/hy2xs/hy2xs.env` есть две независимые политики, обе по умолчанию
|
||||
`strict`:
|
||||
|
||||
| Переменная | Что проверяет |
|
||||
| --- | --- |
|
||||
| `HY2XS_DNS_AAAA_POLICY` | наличие AAAA-записи при IPv4-only профиле |
|
||||
| `HY2XS_PUBLIC_ENDPOINT_POLICY` | что A-записи публичного endpoint ведут на публичные IPv4 этого сервера |
|
||||
|
||||
`HY2XS_PUBLIC_ENDPOINT_POLICY` принимает `strict` / `warn` / `off`. Ослаблять
|
||||
её имеет смысл только для топологий вне baseline: сервер за NAT, floating IP,
|
||||
anycast. Отсутствие A-записи фатально при любом значении.
|
||||
|
||||
Обе политики применяются в `install`, `reconfigure` и `doctor`, потому что
|
||||
живут в общем `preflight`.
|
||||
|
||||
### Сетевая идентичность админки
|
||||
|
||||
`HY2XS_UI_PORT`, `HY2XS_UI_BIND_HOST`, `HY2XS_DATA_DIR` и `HY2XS_LOG_DIR` —
|
||||
единственный источник истины для этих величин. Админка читает их из окружения
|
||||
юнита и не хранит собственных копий в SQLite.
|
||||
|
||||
Важно:
|
||||
- `HY2XS_ADMIN_INITIAL_PASSWORD` используется только для первичного bootstrap seed;
|
||||
- `HY2XS_ADMIN_CON_PASS` — отдельная runtime-сущность для Hysteria auth/smoke;
|
||||
|
||||
Reference in New Issue
Block a user