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:
@@ -91,6 +91,23 @@ hy2xs-orchestrator reconfigure --package-dir /usr/local/lib/hy2xs/package --conf
|
||||
- `warn` — выводится warning и выполнение продолжается;
|
||||
- `off` — AAAA-проверка игнорируется.
|
||||
|
||||
## 11a. Публичный endpoint
|
||||
|
||||
- preflight проверяет, что A-записи `HY2XS_PUBLIC_HOST` (и `HY2XS_DOMAIN`, если
|
||||
он отличается) ведут на публичные IPv4 **этого** сервера;
|
||||
- проверка работает в `install`, `reconfigure` и `doctor`;
|
||||
- адрес сервера определяется локально по интерфейсам, без обращения к внешним
|
||||
сервисам определения IP;
|
||||
- `HY2XS_PUBLIC_ENDPOINT_POLICY` управляет строгостью:
|
||||
- `strict` (default) — расхождение останавливает операцию;
|
||||
- `warn` — warning и продолжение (NAT, floating IP, anycast);
|
||||
- `off` — сравнение не выполняется;
|
||||
- отсутствие A-записи остаётся фатальным при любом значении политики.
|
||||
|
||||
Типичный сценарий, ради которого это сделано: провайдер принудительно сменил
|
||||
IPv4, DNS остался старым. До v1 `doctor` в такой ситуации отвечал успехом, а
|
||||
клиентская ссылка отправляла людей на чужую машину.
|
||||
|
||||
## 12. Validation command
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user