issues/27: add argocd and issues-27 branch docs
docs-ci-cd / parse-tag (push) Successful in 28s
docs-ci-cd / test (push) Failing after 32m37s
docs-ci-cd / build-and-push (push) Has been skipped
docs-ci-cd / deploy-gitops (push) Has been skipped

This commit is contained in:
Valery Petrov
2026-06-03 18:40:03 +03:00
parent 100170a71b
commit a71fee4187
2 changed files with 160 additions and 0 deletions
+108
View File
@@ -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)