Files
service-catalog/manifests/helm/victoria-metrics-auth/0.33.0/custom-values.yaml
T
2026-06-25 15:16:21 +09:00

57 lines
3.1 KiB
YAML

# =============================================================================
# vmauth — PaaSup 커스텀 오버라이드 (Keycloak JWT/OIDC 멀티테넌시)
# 차트: victoria-metrics/victoria-metrics-auth
# 포트: 8427 / 역할: vmselect·vlselect 앞단 인증·라우팅 프록시
#
# 인증 모델: 전면 JWT/OIDC (vmauth v1.138.0+, Enterprise 아님)
# - 클라이언트는 Keycloak이 발급한 액세스 토큰(JWT)을 Bearer로 제시
# - vmauth가 jwt.oidc.issuer Discovery로 공개키를 자동 fetch/rotate → 서명 검증
# - 토큰의 vm_access 클레임(metrics_account_id 등)으로 테넌트를 동적 라우팅
# - 테넌트 추가 = Keycloak 그룹/attribute 추가만 → vmauth 재배포 불필요
#
# Keycloak 측 준비: vm_access 클레임을 주입하는 Protocol Mapper 필요
# {"vm_access": {"metrics_account_id": <N>, "logs_account_id": <N>}}
# 자세한 절차는 CUSTOM-README.md 참조.
# =============================================================================
replicaCount: 1
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 128Mi
config:
users:
# ── 권장: Keycloak JWT 검증 + vm_access 동적 라우팅 ──────────────────────
# 모든 사용자/팀이 단일 항목을 공유한다. 테넌트 구분은 토큰의 vm_access 클레임이 담당.
- jwt:
oidc:
# 배포 환경에 항상 존재하는 paasup realm 사용 (realm 신규 생성 금지)
issuer: "https://keycloak.example.org/realms/paasup"
url_map:
# 메트릭(PromQL): vm_access.metrics_account_id → URL 경로 /select/{accountID}/ (경로 기반 격리)
- src_paths: ["/api/v1/.*"]
url_prefix: "http://vmcluster-victoria-metrics-cluster-vmselect.monitoring.svc.cluster.local:8481/select/{{.MetricsAccountID}}/prometheus"
# 로그(LogsQL): vlselect + AccountID 헤더 (VictoriaLogs는 헤더 기반 테넌트 격리)
- src_paths: ["/select/logsql/.*"]
url_prefix: "http://vlogs-victoria-logs-cluster-vlselect.monitoring.svc.cluster.local:9471"
headers:
- "AccountID: {{.LogsAccountID}}"
- "ProjectID: 0"
# ── 대안(주석): 정적 basic-auth ──────────────────────────────────────────
# 토큰을 사용할 수 없는 CI/레거시 클라이언트에 한해 추가한다. 평문 금지 → %{ENV_VAR} 치환 사용.
# - username: ci-bot
# password: "%{CI_BOT_PASSWORD}"
# url_map:
# - src_paths: ["/api/v1/.*"]
# url_prefix: "http://vmcluster-victoria-metrics-cluster-vmselect.monitoring.svc.cluster.local:8481/select/9000/prometheus"
# 주의: unauthorized_user를 두지 않는다. 두면 무토큰/무효토큰 요청이 해당 accountID로
# 무인증 접근되어 격리가 약해진다(E2E에서 acct0 200 확인). vmalert는 vmselect에 직결하므로
# vmauth 폴백이 불필요 → 모든 vmauth 접근은 유효 JWT를 요구(미인증=401).