docs: record redirect-to-VM architecture and deploy steps
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# tf_docs: переход на 302-редирект + раздача через ВМ
|
||||
|
||||
Дата: 2026-09-02
|
||||
|
||||
## Проблема
|
||||
|
||||
Отдача больших MkDocs-страниц (~133 KB) через под managed-кластера `nodejsk8s`
|
||||
захлёбывалась: `273 B/s` через `tf_docs` (за 80 c скачано 21 KB). Входной шлюз
|
||||
managed-кластера рвёт большие тела (как в drhider: шлюз режет >~64 KB, egress не ограничен).
|
||||
|
||||
## Диагностика (замеры)
|
||||
|
||||
| Путь → S3 | Скорость |
|
||||
|---|---|
|
||||
| `tf_docs` (кластер) | 273 B/s |
|
||||
| локальная машина (Node.js) | 24.5 KiB/s |
|
||||
| **ВМ `5.172.178.213`** | **5.6 MB/s** (133 KB за 0.023 с) |
|
||||
|
||||
Вывод: S3 быстрый, медленный — путь от managed-кластера/внешней сети. ВМ имеет
|
||||
быстрый прямой канал до S3. Паттерн решения взят из drhider («ВМ-буфер», `~/nubes/HowTo/vm-file-upload-service.md`): большие данные — мимо шлюза кластера, через ВМ.
|
||||
|
||||
## Решение (финальная архитектура)
|
||||
|
||||
```
|
||||
Браузер → tf_docs (кластер, только 302) → ВМ nginx → статика (зеркало S3)
|
||||
```
|
||||
|
||||
- `tf_docs` — тонкий редирект-роутер: `/health` + `302` на ВМ. Без S3, без стримов.
|
||||
- ВМ `5.172.178.213` — nginx раздаёт статику из локального зеркала S3.
|
||||
- URL без версий: `/nubes-test/...` → S3 `docs/nubes-test/nubes/...` (перезапись).
|
||||
|
||||
## Изменения
|
||||
|
||||
### `tf_docs` (репо, запушено `5360893`, версия `0.0.3`)
|
||||
|
||||
- `server.js` — переписан на 302-роутер (сгенерирован DeepSeek Flash):
|
||||
- `GET /health` → `200 ok`
|
||||
- `GET /:stand/...` → `302 Location: ${VM_DOCS_BASE_URL}/:stand/...`
|
||||
- убраны `@aws-sdk/client-s3`, S3-креды, стрим
|
||||
- `package.json` — `0.0.3`, зависимостей нет (чистый `http`).
|
||||
- `test/server.test.js` — 4 теста (health, redirect, root, 405) — PASS.
|
||||
- `.gitignore` — добавлен `deploy-vm/`.
|
||||
|
||||
### `tf_docs/deploy-vm/` (локально, НЕ в git)
|
||||
|
||||
- `nginx-tf-docs.conf` — location `/(nubes-test|nubes-dev|nubes)/` → статика `/var/www/tf-docs/`.
|
||||
- `mirror-s3.sh` — `mc mirror` из S3 `docs/<stand>/nubes/` → `/var/www/tf-docs/<stand>/`.
|
||||
- `README.md` — инструкция деплоя на ВМ.
|
||||
|
||||
### `tf_provider` (репо, запушено `dc469c6`)
|
||||
|
||||
- `scripts/publish-docs.sh` — заливка **без версии** (`docs/<ns>/<name>/`), перезапись `mc mirror --overwrite --remove`.
|
||||
- `TOOLS/scripts/04_build_and_publish_docs.sh` — `site_url: https://<host>/<namespace>/` (без name/version); `docs_dir` относительный (для docker-сборки); хост `tf-docs.nodejsk8s.dev.nubes.ru`.
|
||||
|
||||
## Env tf_docs (jsonEnv в UI)
|
||||
|
||||
```json
|
||||
{
|
||||
"VM_DOCS_BASE_URL": "http://5.172.178.213"
|
||||
}
|
||||
```
|
||||
|
||||
S3-креды `tf_docs` больше не нужны (не ходит в S3). Креды — только на ВМ в `mirror-s3.sh`.
|
||||
|
||||
## Порядок деплоя
|
||||
|
||||
1. **tf_docs**: redeploy в ЛК облака (образ из gitea `5360893`), env `VM_DOCS_BASE_URL`, health `/health`.
|
||||
2. **ВМ**: скопировать `deploy-vm/`, `./mirror-s3.sh nubes-test`, вставить nginx-конфиг, `nginx -t && reload`.
|
||||
3. **Перезалить документацию**: `04` + `publish-docs.sh` → `docs/nubes-test/nubes/` (без версии).
|
||||
|
||||
## Проверка
|
||||
|
||||
```bash
|
||||
curl -I https://tf-docs.nodejsk8s.dev.nubes.ru/nubes-test/ # 302 → ВМ
|
||||
curl -I http://5.172.178.213/nubes-test/ # 200 index.html
|
||||
```
|
||||
|
||||
## Урок (не повторять)
|
||||
|
||||
- `kube5s.ru` — **legacy**, закрывается. Не использовать ни в коде, ни в доках.
|
||||
- HowTo-документация местами устарела (описывает legacy-домен как рабочий) — сверять с актуальными источниками.
|
||||
Reference in New Issue
Block a user