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,42 @@
# VictoriaMetrics Cluster 배포
URL 기반 멀티테넌시를 지원하는 고가용 시계열 메트릭 스토리지. vminsert(쓰기)·vmselect(조회)·vmstorage(저장) 3개 컴포넌트로 구성된다.
## 1. 배포 방법
```sh
helm upgrade vmcluster ./ -f custom-values.yaml --install -n monitoring
```
배포 시 주의:
- `vmstorage`는 StatefulSet + PVC를 사용한다. `persistentVolume.size`(기본 10Gi)와 StorageClass를 환경에 맞게 조정한다.
- 인증/라우팅은 이 차트가 담당하지 않는다. 사용자/외부 접근은 **victoria-metrics-auth(vmauth)** 차트를 앞단에 둔다.
## 2. custom-values.yaml 설정 설명
| 컴포넌트 | 포트 | 역할 |
|----------|------|------|
| vminsert | 8480 | 쓰기 수신 — `/insert/{accountID}/prometheus/api/v1/write` |
| vmselect | 8481 | 쿼리 — `/select/{accountID}/prometheus/api/v1/query` |
| vmstorage | 8482 | 데이터 저장 (PVC, 보존기간 `retentionPeriod`) |
## 3. 멀티테넌시
`accountID`를 URL 경로에 포함하여 **스토리지 레벨에서 완전 격리**된다.
- 쓰기: vmagent가 `/insert/{accountID}/...`로 전송
- 조회: vmauth가 JWT `vm_access`의 accountID로 `/select/{accountID}/...` 라우팅
- 전체 집계: `/select/multitenant/prometheus` (vmalert 등 플랫폼 레벨)
## 4. 의존 관계
- **쓰기**: vmagent → vminsert:8480
- **조회**: vmauth → vmselect:8481, vmalert → vmselect multitenant
- **알림 메트릭**: vmalert remoteWrite → vminsert:8480 `/insert/0/`
## 5. 검증
```sh
kubectl get pods -n monitoring -l app.kubernetes.io/instance=vmcluster
kubectl port-forward -n monitoring svc/vmcluster-victoria-metrics-cluster-vmselect 8481:8481
curl -s 'http://localhost:8481/select/0/prometheus/api/v1/query?query=up' | jq '.status'
```