docs(snapshot): sync workspace documentation
This commit is contained in:
68
migration.md
68
migration.md
@@ -253,6 +253,23 @@ Nie commituj sekretów do gita. W GitOps wybierz jedną drogę:
|
||||
16) Workflow CI: build+push obrazów (i ewentualny commit do `trade-deploy`).
|
||||
17) Zasady promocji: staging → prod (np. tylko tag/release).
|
||||
|
||||
### Etap 4b: Workflow zmian (dev → staging) + snapshoty/rollback
|
||||
|
||||
Rekomendacja: nie robimy “ręcznych” zmian na VPS (żeby nie tworzyć snowflake’a). Każdy deploy ma być **snapshoot’em**, do którego można wrócić: *git commit w `trade-deploy` + pin do obrazu* (`sha-<shortsha>` albo digest; bez `latest`).
|
||||
|
||||
Standardowy flow:
|
||||
1) Zmiany robisz lokalnie (nie musisz odpalać lokalnego Dockera; na start wystarczy szybki build/typecheck).
|
||||
2) Push do gita (PR/merge).
|
||||
3) CI buduje i pushuje obrazy, a następnie aktualizuje `trade-deploy` (tag/digest + ewentualnie `BUILD_TIMESTAMP`).
|
||||
4) Argo CD (auto-sync) wdraża do `trade-staging`.
|
||||
5) Testujesz na VPS (UI/API/ingestor).
|
||||
|
||||
Rollback (szybki, preferowany):
|
||||
- cofasz zmianę w `trade-deploy` (`git revert` / powrót do poprzedniej rewizji w Argo) → Argo wraca do poprzedniego snapshoot’a.
|
||||
|
||||
Rollback (bezpieczny dla “dużych” zmian, np. ingest/schema):
|
||||
- użyj wersjonowania vN (osobna tabela/funkcja/porty) + cutover ingestora; jeśli zmiana nie siądzie, robisz cut back vN → v1 (dane w starej tabeli zostają).
|
||||
|
||||
## 9) Wersjonowanie v1/v2… (równoległe wdrożenia + cutover)
|
||||
|
||||
Repo ma już pattern wersjonowania w Compose (`scripts/ops/*` + `devops/versions/vN.env`).
|
||||
@@ -337,54 +354,3 @@ trade-infra/
|
||||
- ingest ticków (`trade-ingestor` → `trade-api`).
|
||||
|
||||
Uwaga: lokalnie repo nie ma historii commitów, więc refaktor będzie startem „od zera” w nowych repo (initial commit per subrepo).
|
||||
|
||||
### Status wdrożenia (superproject)
|
||||
|
||||
- Subrepo mają już initial import i są dostępne na Gitei:
|
||||
- `trade/trade-api`
|
||||
- `trade/trade-ingestor`
|
||||
- `trade/trade-frontend`
|
||||
- `trade/trade-doc`
|
||||
- Superproject `trade/trade-infra` jest utworzony i zawiera `.gitmodules` + submodules (w tym `trade/trade-deploy`).
|
||||
- Argo CD nadal śledzi `trade/trade-deploy` (bez zmian w klastrze).
|
||||
|
||||
Klonowanie superproject:
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules https://rv32i.pl/trade/trade-infra.git
|
||||
```
|
||||
|
||||
## 13) Dostęp i logowanie (admin vs użytkownicy)
|
||||
|
||||
Wymaganie:
|
||||
- **admin** ma dostęp do wszystkich serwisów (np. Portainer, Argo CD, itp.)
|
||||
- pozostali użytkownicy logują się **wyłącznie** do `trade` (`trade.rv32i.pl`)
|
||||
|
||||
Decyzja: na ten moment **wdrażamy logowanie tylko dla `trade`**. Pozostałe serwisy (Portainer/Argo/pgAdmin/Hasura) zostają ze swoimi, osobnymi loginami.
|
||||
|
||||
Rekomendowana metoda dla `trade`: **Traefik `basicAuth` na Ingress (Middleware)**.
|
||||
|
||||
### Plan wdrożenia (staging → prod)
|
||||
|
||||
1) Inwentaryzacja publicznych endpointów:
|
||||
- sprawdzić które serwisy mają Ingress (hosty),
|
||||
- serwisy administracyjne traktować jako „admin-only” (docelowo: ukryte za port-forward/VPN/IP allowlist).
|
||||
2) `trade` (multi-user):
|
||||
- przygotować `htpasswd` z wieloma wpisami (bcrypt),
|
||||
- utworzyć `Secret` w namespace `trade-staging` (np. `trade-basic-auth`) z plikiem `users`,
|
||||
- dodać `Middleware` `basicAuth` wskazujący na secret,
|
||||
- podpiąć middleware do `Ingress/trade-frontend`.
|
||||
3) Wyłączyć/dopasować auth w aplikacji `trade-frontend`:
|
||||
- obecnie serwer frontendu ma wbudowany basic auth (plik `frontend.json`),
|
||||
- żeby nie było „podwójnego logowania”, dodać tryb `BASIC_AUTH_MODE=off` (albo podobny) i ustawić go w `trade-deploy`.
|
||||
4) Testy:
|
||||
- `https://trade.rv32i.pl` → 401 bez auth, 200/304 z auth dla każdego usera,
|
||||
- regresja: proxy `/api/*` w frontendzie nadal działa (token read jest dodawany po stronie serwera frontendu).
|
||||
5) Utrzymanie:
|
||||
- dodanie/usunięcie usera = update secreta (`htpasswd`) + rollout (bez zmian w kodzie),
|
||||
- docelowo przenieść sekrety do GitOps (np. SOPS/SealedSecrets/ExternalSecrets).
|
||||
|
||||
### Status (trade)
|
||||
|
||||
- `trade-staging` ma wdrożone logowanie na Ingress (Traefik `basicAuth`) oraz wyłączony wbudowany basic auth w `trade-frontend` (`BASIC_AUTH_MODE=off`).
|
||||
- UI pokazuje zalogowanego użytkownika (`GET /whoami`) i ma przycisk `Wyloguj` (`GET /logout`, best-effort dla Basic Auth).
|
||||
|
||||
Reference in New Issue
Block a user