57 lines
2.1 KiB
Markdown
57 lines
2.1 KiB
Markdown
# Миграция shared-sqs: k8s → Nubes Managed
|
|
## Сессия 2026-08-13
|
|
|
|
---
|
|
|
|
## Текущая архитектура (k8s)
|
|
|
|
- Go-бинарник, HTTP-сервер, ~50MB RAM
|
|
- Deployment в k8s: `naeel/shared-sqs:v0.1.22`
|
|
- Redis sidecar — write-through persistence
|
|
- Exposed через Ingress + TLS
|
|
|
|
## Целевая архитектура (Nubes Managed)
|
|
|
|
| Компонент | Сейчас | После |
|
|
|---|---|---|
|
|
| Рантайм | k8s Deployment | Nubes Simple HTTP Container |
|
|
| Persistence | Redis pod в k8s | Nubes Managed Redis |
|
|
| Секреты | k8s Secret | Env vars в Container |
|
|
| Ingress/TLS | k8s Ingress | встроен в Simple HTTP Container |
|
|
|
|
**Код не меняется вообще.** Только инфраструктура.
|
|
|
|
## Совместимость
|
|
|
|
Сервис протестирован как AWS SQS совместимый — работает с AWS CLI, AWS SDK, Yandex.
|
|
|
|
## Открытые вопросы (уточнить перед деплоем)
|
|
|
|
1. Managed Redis: TLS или plain endpoint? → влияет на флаг `REDIS_INSECURE` в коде
|
|
2. Simple HTTP Container: поддержка custom domain или только `*.containerk8s.services.ngcloud.ru`?
|
|
|
|
## План миграции
|
|
|
|
**Шаг 1** — Создать Managed Redis на Nubes
|
|
|
|
**Шаг 2** — Задеплоить образ в Simple HTTP Container:
|
|
```
|
|
image: naeel/shared-sqs:v0.1.22
|
|
PORT=4100
|
|
SHARED_SQS_ADMIN_TOKEN=<секрет>
|
|
REDIS_ADDR=<managed redis endpoint>
|
|
REDIS_USER=<user>
|
|
REDIS_PASSWORD=<password>
|
|
SHARED_SQS_SEED_DEMO=false
|
|
```
|
|
|
|
**Шаг 3** — Проверить работоспособность (AWS CLI / SDK)
|
|
|
|
**Шаг 4** — Выключить k8s Deployment
|
|
|
|
## Что НЕ нужно делать
|
|
|
|
- Переписывать код на Node.js/Flask — не нужно
|
|
- Менять Redis persistence layer — не нужно
|
|
- Мигрировать данные вручную — Redis восстановит состояние автоматически при старте (LoadAllQueues / LoadAllTenantsRaw)
|