4.6 KiB
Argo CD: test-contour и promtail-test
На Edge-кластере (vm-k8s-edge) в UI Argo CD часто видны два приложения с похожими именами. Это не два «контура» окружения, а зонтик и один из его дочерних релизов.
Схема (локальная 4-VM ферма)
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.
Как обновить / починить
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