# 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)