6290322f1b
- 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>
2.4 KiB
2.4 KiB
VictoriaMetrics 스택 ArgoCD ApplicationSet
VM 옵저버빌리티 스택(10개 차트)을 ArgoCD ApplicationSet으로 배포한다. 전체 아키텍처는 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 파일을 병합한다(나중 파일 우선).
- 베이스: 카탈로그 차트의
custom-values.yaml(또는 otelcol-events는custom-values-events.yaml) — 큰 정적 설정(스크레이프/파이프라인/알림 규칙 등) 재사용. - 환경 오버레이:
$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-accessscope,perses/perses-vmauthclient) · 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로 관리한다.