Add VictoriaMetrics observability stack + sync catalog for monitoring test

- VM stack 10 charts: victoria-metrics-cluster/auth, victoria-logs-cluster,
  victoria-metrics-agent/alert, opentelemetry-collector, kube-state-metrics,
  prometheus-node-exporter, alertmanager, perses (JWT/OIDC, Infisical-ready)
- ArgoCD ApplicationSet (syncWave) + per-chart dip-values overlays
- doc/victoria-metrics-architecture.md, define-chart-resources updates
- includes pending working-tree changes (mlflow, kubeflow, apisix, CLAUDE.md)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
wbsong111
2026-06-25 11:10:51 +09:00
parent a55427730e
commit 6290322f1b
514 changed files with 68103 additions and 40 deletions
@@ -0,0 +1,36 @@
# VictoriaMetrics 스택 ArgoCD ApplicationSet
VM 옵저버빌리티 스택(10개 차트)을 ArgoCD ApplicationSet으로 배포한다. 전체 아키텍처는 [doc/victoria-metrics-architecture.md](../../../../doc/victoria-metrics-architecture.md) 12장 참조.
## 구성
- **`applicationset.yaml`** — list generator로 10개 Application 생성. element마다 `chartPath`/`baseValues`/`valuesPath`/`syncWave`.
- **`*-values.yaml`** — 차트별 **환경 오버레이 템플릿**. dip-console이 `$VAR`(도메인/Keycloak/Infisical)를 렌더해 값 repo(`dip/values-*`)의 `victoria-metrics/<chart>-values.yaml`로 커밋한다.
## 값 적용 순서 (2단)
각 Application은 두 values 파일을 병합한다(나중 파일 우선).
1. **베이스**: 카탈로그 차트의 `custom-values.yaml`(또는 otelcol-events는 `custom-values-events.yaml`) — 큰 정적 설정(스크레이프/파이프라인/알림 규칙 등) 재사용.
2. **환경 오버레이**: `$values/victoria-metrics/<chart>-values.yaml` — 도메인/시크릿/issuer 등 환경 고유값만.
> Helm 병합 규칙: map은 병합, **배열은 교체**. 그래서 `config.users`(vmauth)·`oidc`(perses)·`extraSecretMounts`(alertmanager)처럼 배열을 바꿀 땐 오버레이에 해당 배열 전체를 재정의한다.
## syncWave 순서
| wave | 차트 |
|------|------|
| 0 | vmcluster, vlogs, kube-state-metrics, node-exporter, alertmanager |
| 1 | vmauth, vmagent, otelcol, otelcol-events, vmalert |
| 2 | perses |
## 사전 준비 (배포 전, ArgoCD 밖)
- **dip-console**: Keycloak(`vm-access` scope, `perses`/`perses-vmauth` client) · Infisical 시크릿(`$INFISICAL_*`) · `root-ca-cert` 복사 · `vmagent-relabel-configs` 테넌트 ConfigMap.
- **플랫폼 기본**: StorageClass(longhorn), Ingress controller + cert-manager(`root-ca-issuer`), DNS.
- **GitOps**: ArgoCD에 카탈로그 repo·값 repo 등록, 값 repo에 렌더된 `victoria-metrics/*-values.yaml`.
- **대시보드**: perses 대시보드 ConfigMap은 별도 경로 소스로 적용(아래).
## perses 대시보드
`manifests/helm/perses/0.21.0/files/perses-dashboards.yaml`(정적 대시보드 ConfigMap)를 별도 ArgoCD Application(directory 소스)으로 배포하면 사이드카가 자동 로드한다. 데이터소스/시크릿(`perses-provisioning.yaml`의 datasource/secret)은 환경별이라 dip-console/Infisical로 관리한다.