From a71fee4187b656fbf1993fe6510ff5bfeea68faa Mon Sep 17 00:00:00 2001 From: Valery Petrov Date: Wed, 3 Jun 2026 18:40:03 +0300 Subject: [PATCH] issues/27: add argocd and issues-27 branch docs --- infrastructure/local-k8s/argocd-contours.md | 108 ++++++++++++++++++ .../local-k8s/issues-27-branches.md | 52 +++++++++ 2 files changed, 160 insertions(+) create mode 100644 infrastructure/local-k8s/argocd-contours.md create mode 100644 infrastructure/local-k8s/issues-27-branches.md diff --git a/infrastructure/local-k8s/argocd-contours.md b/infrastructure/local-k8s/argocd-contours.md new file mode 100644 index 0000000..c123e7b --- /dev/null +++ b/infrastructure/local-k8s/argocd-contours.md @@ -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
App-of-Apps] + PT[promtail-test
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://: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://: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) diff --git a/infrastructure/local-k8s/issues-27-branches.md b/infrastructure/local-k8s/issues-27-branches.md new file mode 100644 index 0000000..6371648 --- /dev/null +++ b/infrastructure/local-k8s/issues-27-branches.md @@ -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)