issues/27: add argocd and issues-27 branch docs
This commit is contained in:
@@ -0,0 +1,108 @@
|
|||||||
|
# Argo CD: `test-contour` и `promtail-test`
|
||||||
|
|
||||||
|
На Edge-кластере (`vm-k8s-edge`) в UI Argo CD часто видны два приложения с похожими именами. Это **не два «контура» окружения**, а **зонтик** и один из его **дочерних** релизов.
|
||||||
|
|
||||||
|
## Схема (локальная 4-VM ферма)
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
subgraph edge [Edge — Argo CD]
|
||||||
|
TC[test-contour<br/>App-of-Apps]
|
||||||
|
PT[promtail-test<br/>Application]
|
||||||
|
BE[backend-test]
|
||||||
|
DO[docs-test]
|
||||||
|
TC --> PT
|
||||||
|
TC --> BE
|
||||||
|
TC --> DO
|
||||||
|
end
|
||||||
|
subgraph apptest [app-test — VM App]
|
||||||
|
PR[Promtail DaemonSet]
|
||||||
|
API[backend / cabinet / …]
|
||||||
|
PT -.->|sync| PR
|
||||||
|
BE -.->|sync| API
|
||||||
|
end
|
||||||
|
subgraph mgmt [Mgmt — Loki]
|
||||||
|
LOKI[Loki]
|
||||||
|
end
|
||||||
|
PR -->|логи| LOKI
|
||||||
|
```
|
||||||
|
|
||||||
|
| Уровень | Где крутится | Что делает |
|
||||||
|
|---------|--------------|------------|
|
||||||
|
| **Argo CD** | Edge | Читает Git `sova/sova-deploy`, ветка **`test`** |
|
||||||
|
| **test-contour** | Edge, NS `argocd` | Создаёт дочерние `Application` из `argocd/child-apps/test/` |
|
||||||
|
| **promtail-test**, **backend-test**, … | CR на Edge | Каждый указывает **куда** деплоить workload |
|
||||||
|
| **Поды приложений** | **app-test** | Реальные сервисы в `sova-test`, `monitoring`, … |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## `test-contour` — зонтик (App-of-Apps)
|
||||||
|
|
||||||
|
**Назначение:** одна точка входа GitOps для всего test-контура. Синхронизирует папку:
|
||||||
|
|
||||||
|
`sova-deploy/argocd/child-apps/test/`
|
||||||
|
|
||||||
|
**Откуда в UI:**
|
||||||
|
|
||||||
|
| Поле | Значение (локально) |
|
||||||
|
|------|---------------------|
|
||||||
|
| Path | `argocd/child-apps/test` |
|
||||||
|
| Destination | **in-cluster** (сам Edge) |
|
||||||
|
| Namespace | **`argocd`** (только CR приложений, не поды API) |
|
||||||
|
| Ветка | **`test`** |
|
||||||
|
| Repo URL (локально) | `http://<IP Git VM>:30300/sova/sova-deploy.git` — **не** `git.sova.local` (из pod ArgoCD DNS не видит hosts Mac) |
|
||||||
|
|
||||||
|
**Дочерние Application (примеры):** `backend-test`, `adminpanel-test`, `cabinet-test`, `docs-test`, `mocks-test`, `data-test`, **`promtail-test`**.
|
||||||
|
|
||||||
|
**Типичная ошибка (исправлена):** `InvalidSpecError` — проект `sova` не разрешал destination `argocd` на Edge. В `argocd/projects/sova-project.yaml` добавлено разрешение namespace `argocd`.
|
||||||
|
|
||||||
|
**Локальный bootstrap:** при `LOCAL_NONPROD=1` скрипт `bootstrap-argocd-multicluster.sh` ставит **только** `test-contour`, без ручного `kubectl apply` каждого child-app (иначе дубли в UI).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## `promtail-test` — агент логов
|
||||||
|
|
||||||
|
**Назначение:** Helm-релиз **Promtail** на кластере **`app-test`**, namespace **`monitoring`**.
|
||||||
|
|
||||||
|
**Зачем отдельно виден в UI:** это **дочерний** Application из той же папки, что подхватывает `test-contour`. В списке Argo CD он на одном уровне с зонтиком — так устроен App-of-Apps.
|
||||||
|
|
||||||
|
**Что делает Promtail:**
|
||||||
|
|
||||||
|
- читает логи подов (в т.ч. `sova-test`);
|
||||||
|
- отправляет в **Loki** на Mgmt (`LOKI_PUSH_URL`, порт 3100);
|
||||||
|
- смотреть в **Grafana → Explore → Loki**, запрос `{namespace="sova-test"}`.
|
||||||
|
|
||||||
|
**Почему часто Healthy, когда `test-contour` был красным:** `promtail-test` деплоится на **`app-test`**, что разрешено в проекте `sova` с самого начала. Ошибка была только у **родителя** (`test-contour`), а не у Promtail.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Как обновить / починить
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd k8s
|
||||||
|
|
||||||
|
# 1. Залить sova-deploy (ветка test) в Gitea
|
||||||
|
cd sova-deploy && git checkout test
|
||||||
|
git add argocd/
|
||||||
|
git commit -m "fix(argocd): test-contour — project argocd NS, repoURL Git VM IP"
|
||||||
|
# push в Gitea (см. scripts в k8s/)
|
||||||
|
|
||||||
|
# 2. Применить проект и test-contour на Edge
|
||||||
|
export KUBECONFIG=~/.kube/config-k8s-edge
|
||||||
|
LOCAL_NONPROD=1 GITEA_REPO_URL=http://192.168.252.4:30300 \
|
||||||
|
LOKI_PUSH_URL=http://<MGMT_IP>:3100/loki/api/v1/push \
|
||||||
|
./scripts/bootstrap-argocd-multicluster.sh ~/.kube/config-k8s-app-test
|
||||||
|
|
||||||
|
# 3. Синхронизация
|
||||||
|
argocd app sync test-contour --force
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
## Связанные документы
|
||||||
|
|
||||||
|
- [Запуск 4 VM](./local-nonprod)
|
||||||
|
- [Доступы](./access)
|
||||||
|
- [ArgoCD в test-контуре (k3s)](../test-contour/guides/argocd)
|
||||||
|
- [ArgoCD: sova-root и data-test](../test-contour/argocd-apps)
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# Redmine #27: ветки в Gitea (k8s)
|
||||||
|
|
||||||
|
Задача [#27](http://redmine.sova.local/issues/27) — content CRUD (backend + adminpanel) и доработки cabinet. Исходный код живёт в **monorepo** `apps/{backend,adminPanel,cabinet}`; в ферме k8s — отдельные репозитории `sova-*` на Gitea.
|
||||||
|
|
||||||
|
## Ветки
|
||||||
|
|
||||||
|
| Репозиторий Gitea | Ветка | Откуда | Назначение |
|
||||||
|
|-------------------|-------|--------|------------|
|
||||||
|
| `sova/backend` | `issues/27` | `apps/backend` | Интеграционный CRUD API (не для review; см. `feature/content-crud-*`) |
|
||||||
|
| `sova/adminpanel` | `issues/27` | `apps/adminPanel` | UI «как `/promotions`» — отдельные страницы на ресурс |
|
||||||
|
| `sova/adminpanel` | `issues/27-future` | `apps/adminPanel` | Рекомендуемый UI: `ContentListPage`, `apiContent`, [док](/apps/admin-panel-content-crud) |
|
||||||
|
| `sova/cabinet` | `issues/27` | `apps/cabinet` | MIS-сессия, онлайн-визит/оплата |
|
||||||
|
| `sova/cabinet` | `issues/27-cabinet-registration` | только k8s/k3s-test | Docker/webpack + регистрация на test |
|
||||||
|
| `sova/cabinet` | `issues/27-cabinet-owl-fix` | только k8s/k3s-test | Lazy `owl.carousel` для Stimulus |
|
||||||
|
|
||||||
|
Ветки **`prod` / `test` / `stage`** — контур деплоя (ArgoCD). Feature-ветки **не** триггерят CI на push (только `workflow_dispatch` или merge в `test` + тег).
|
||||||
|
|
||||||
|
## Перенос / обновление из monorepo
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd k8s
|
||||||
|
./scripts/migrate-issues-27-branches.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Скрипт:
|
||||||
|
|
||||||
|
1. `git checkout` нужной ветки в `apps/*`;
|
||||||
|
2. `rsync` в `sova-*` (сохраняет k8s-артефакты: `Dockerfile`, `.gitea/`, `docker/`, `.env.ci`);
|
||||||
|
3. коммит на одноимённой ветке;
|
||||||
|
4. `git push gitea` на `vm-k8s-git`.
|
||||||
|
|
||||||
|
Альтернатива с историей коммитов (только backend/adminpanel): `scripts/migrate-monorepo-branch.sh` + диапазон коммитов monorepo.
|
||||||
|
|
||||||
|
## Локальная работа
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# backend CRUD на test
|
||||||
|
cd k8s/sova-backend && git checkout issues/27
|
||||||
|
|
||||||
|
# adminpanel (generic UI)
|
||||||
|
cd k8s/sova-adminpanel && git checkout issues/27-future
|
||||||
|
|
||||||
|
# собрать образ вручную или merge → test → ./scripts/release-tag.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
После merge в `test` — релизный тег (`backend-v*`, `adminpanel-v*`) и ArgoCD sync, как в [CI/CD и Loki](./ci-and-logs).
|
||||||
|
|
||||||
|
## Связанные документы
|
||||||
|
|
||||||
|
- [Backend content CRUD](/apps/backend-content-crud)
|
||||||
|
- [Adminpanel content CRUD](/apps/admin-panel-content-crud)
|
||||||
|
- [Git-flow](./git-flow)
|
||||||
Reference in New Issue
Block a user