doc: QueueUrl исправлен (ExternalURLBase) + ошибки по пути; дефект снят
This commit is contained in:
@@ -81,6 +81,17 @@
|
|||||||
(квинтет: `iot.kube5s.ru`→`iot.nubes.ru`, `qu.kube5s.ru`×3→`sqs.containerk8s.dev.nubes.ru`),
|
(квинтет: `iot.kube5s.ru`→`iot.nubes.ru`, `qu.kube5s.ru`×3→`sqs.containerk8s.dev.nubes.ru`),
|
||||||
коммит `a47743f`. В `doc/legacy/` (история) не трогал.
|
коммит `a47743f`. В `doc/legacy/` (история) не трогал.
|
||||||
|
|
||||||
|
### 2.10. Фикс QueueUrl (кодинг)
|
||||||
|
- Проблема: `QueueUrl` = `http://region.host:port/...` (плейсхолдеры) — клиенты без `endpoint_url` сломаны.
|
||||||
|
- Реализовано: `Environment.ExternalURLBase` + env `SHARED_SQS_EXTERNAL_URL_BASE`.
|
||||||
|
- **Ошибка по пути №1:** env-override сначала поместил после `models.CurrentEnvironment = envs[env]`
|
||||||
|
— не сработал: `LoadYamlConfig` делает ранний `return` без `goaws.yaml`. Перенёс в
|
||||||
|
`applyEnvironmentDefaults` (вызывается через defer → всегда).
|
||||||
|
- **Ошибка по пути №2:** после переноса всё равно не работало — демо-seed (`app/cmd/seed.go`) собирал
|
||||||
|
URL **своей копией** логики, а не через `tenantQueueURL`. Вынес `gosqs.TenantQueueURL`, seed переведён на него.
|
||||||
|
- Коммиты `469132b`, `ca0372b`; тест `app/gosqs/tenant_helpers_test.go`. Проверено снаружи:
|
||||||
|
`list-queues` → `https://sqs.sinefo.ru/t-.../orders`.
|
||||||
|
|
||||||
## 3. Грабли (для повторного использования)
|
## 3. Грабли (для повторного использования)
|
||||||
|
|
||||||
1. **`proxy_set_header Host $host` теряет порт** → SigV4 `SignatureDoesNotMatch`.
|
1. **`proxy_set_header Host $host` теряет порт** → SigV4 `SignatureDoesNotMatch`.
|
||||||
@@ -110,9 +121,7 @@
|
|||||||
### 5.1. Итоговое состояние
|
### 5.1. Итоговое состояние
|
||||||
- **Работает:** `https://sqs.sinefo.ru` (443, TLS) → shared-sqs на ВМ 213 (memory-only, `127.0.0.1:4100`).
|
- **Работает:** `https://sqs.sinefo.ru` (443, TLS) → shared-sqs на ВМ 213 (memory-only, `127.0.0.1:4100`).
|
||||||
- SQS: `~/sqs-test/shared-sqs`, лог `~/sqs-test/sqs.log`, pid меняется. Демо-тенант + 5 очередей.
|
- SQS: `~/sqs-test/shared-sqs`, лог `~/sqs-test/sqs.log`, pid меняется. Демо-тенант + 5 очередей.
|
||||||
- **Дефект:** `QueueUrl` в ответах = `http://region.host:port/<tenant>/<queue>` — реального хоста нет
|
- **QueueUrl — ИСПРАВЛЕНО** (см. 2.10): `https://sqs.sinefo.ru/<tenantID>/<queue>`.
|
||||||
(следствие отсутствия `goaws.yaml`). Клиенты **с** `endpoint_url` не страдают (берут только путь),
|
|
||||||
клиенты **без** него — сломаны. См. открытый вопрос 6.1.
|
|
||||||
|
|
||||||
### 5.2. Как поднять заново
|
### 5.2. Как поднять заново
|
||||||
```bash
|
```bash
|
||||||
@@ -134,7 +143,6 @@ pkill -x shared-sqs
|
|||||||
|
|
||||||
## 6. Открытые вопросы
|
## 6. Открытые вопросы
|
||||||
|
|
||||||
1. `QueueUrl` — внешний хост (`https://sqs.sinefo.ru`): нужен ли фикс формата (схема/host/порт)
|
1. Клиенты без явного `endpoint_url` — есть ли такие (вопрос №5 мануала). `QueueUrl` уже корректный.
|
||||||
и есть ли клиенты без явного `endpoint_url` (вопрос №5 мануала).
|
|
||||||
2. Egress ВМ: `curl https://api.ipify.org` с ВМ вернул пусто — влияет на billing (PG) и JWT-API.
|
2. Egress ВМ: `curl https://api.ipify.org` с ВМ вернул пусто — влияет на billing (PG) и JWT-API.
|
||||||
3. Дальше по мануалу: Шаг 2 (разбиение data-plane/control-plane), Шаг 3 (вынос состояния).
|
3. Дальше по мануалу: Шаг 2 (разбиение data-plane/control-plane), Шаг 3 (вынос состояния).
|
||||||
|
|||||||
@@ -87,9 +87,21 @@ grep "seed: создан тенант" ~/sqs-test/sqs.log | tail -1
|
|||||||
curl -sS https://sqs.sinefo.ru/health
|
curl -sS https://sqs.sinefo.ru/health
|
||||||
```
|
```
|
||||||
|
|
||||||
## 7. Известный дефект
|
## 7. QueueUrl — ИСПРАВЛЕНО (2026-10-10)
|
||||||
|
|
||||||
`QueueUrl` в ответах = `http://region.host:port/<tenantID>/<queue>` (плейсхолдеры — нет `goaws.yaml`).
|
**Было:** `QueueUrl` = `http://region.host:port/<tenantID>/<queue>` (плейсхолдеры — на ВМ нет `goaws.yaml`).
|
||||||
Причина: `app/gosqs/tenant_helpers.go:29-37` (схема `http://`, формат `{region}.{host}:{port}`;
|
|
||||||
Host/Port/Region только из `app/conf/goaws.yaml`, env-переменных нет). Клиенты с `endpoint_url`
|
**Стало:** база URL задаётся через `ExternalURLBase` (config `goaws.yaml` **или** env
|
||||||
не страдают (используют путь), клиенты без него — сломаны.
|
`SHARED_SQS_EXTERNAL_URL_BASE`). На ВМ запускается с `SHARED_SQS_EXTERNAL_URL_BASE=https://sqs.sinefo.ru` →
|
||||||
|
`QueueUrl` = `https://sqs.sinefo.ru/<tenantID>/<queue>` (проверено снаружи).
|
||||||
|
|
||||||
|
Изменения (коммиты `469132b`, `ca0372b`):
|
||||||
|
- `app/models/configuration.go` — поле `Environment.ExternalURLBase`;
|
||||||
|
- `app/gosqs/tenant_helpers.go` — `tenantQueueURL` учитывает `ExternalURLBase`; добавлена
|
||||||
|
экспортированная `TenantQueueURL`;
|
||||||
|
- `app/conf/config.go` — env-override `SHARED_SQS_EXTERNAL_URL_BASE` в `applyEnvironmentDefaults`
|
||||||
|
(срабатывает и при отсутствии `goaws.yaml` — важная тонкость: `LoadYamlConfig` делает ранний
|
||||||
|
`return` без конфига, поэтому override там не срабатывал);
|
||||||
|
- `app/cmd/seed.go` — демо-очереди формируют URL через `gosqs.TenantQueueURL` (убрано
|
||||||
|
дублирование логики — оно и было причиной, что фикс «не применялся»);
|
||||||
|
- тест `app/gosqs/tenant_helpers_test.go`.
|
||||||
|
|||||||
Reference in New Issue
Block a user