Files
docs/infrastructure/local-k8s/argocd-contours.md
T
Valery Petrov a71fee4187
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
issues/27: add argocd and issues-27 branch docs
2026-06-03 18:40:03 +03:00

4.6 KiB
Raw Blame History

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

Связанные документы