2.2. 설치 — Kubernetes
OPENMARU Observability를 Kubernetes 클러스터에 설치하는 방법을 안내합니다.
개요
OPENMARU Observability는 Helm 차트를 사용하여 Kubernetes 클러스터에 설치합니다. 하나의 Helm 차트 로 서버, UI, 데이터 저장소, 에이전트 등 모든 구성 요소가 함께 배포됩니다.
설치가 완료되면 노드 에이전트(Node Agent)가 각 노드(Node)에서 메트릭(Metric), 로그(Log), 추적(Trace), 프로파일링(Profiling) 데이터를 자동으로 수집하기 시작합니다. 애플리케이션(Application) 코드를 수정하거나 별도 SDK를 설치할 필요가 없습니다.
COP로 설치 시 자동 구성: OPENMARU COP(Container Orchestration Platform) 로 플랫폼을 구축하면 OPENMARU Observability와 필요한 의존 구성 요소(스토리지 프로비저너, cert-manager, 인그레스, SSO, OTel Operator, APM 서버 등)가 자동으로 설치·구성됩니다. 이 경우 이 장의 수동 Helm 설치 절차는 필요하지 않습니다. 이 장의 절차는 이미 운영 중인 Kubernetes 클러스터에 OPENMARU Observability만 별도로 추가할 때 사용합니다.
비-Kubernetes 설치: 이 장은 Kubernetes 클러스터에 Helm 차트로 설치하는 방법을 다룹니다. Kubernetes 없이 일반 Linux 호스트에 Docker Compose 로 서버 스택을 설치·운영하는 방식(인터넷 차단 air-gap·오프라인 설치 포함)도 지원하며, 이는 별도의 설치·운영 가이드로 제공됩니다. 비-Kubernetes 설치가 필요하면 제품 담당자에게 별도로 문의하세요.
설치되는 구성 요소
| 구성 요소 | 역할 | 배포 방식 |
|---|---|---|
| 서버 | 수집된 데이터를 처리하고 UI에 제공합니다 | StatefulSet (기본 1 복제본) |
| UI | 브라우저를 통해 접근하는 웹 인터페이스입니다 | Deployment |
| 클러스터 에이전트(Cluster Agent) | Kubernetes 클러스터 전반의 메트릭(Metric)과 리소스 메타데이터(클러스터 상태)를 수집합니다 | Deployment |
| 노드 에이전트(Node Agent) | 각 노드(Node)에서 시스템 메트릭, 로그, 추적, 프로파일 데이터를 수집합니다 | DaemonSet (노드당 1개) |
| ClickHouse | 로그, 추적, 프로파일링 데이터를 저장합니다 | Deployment |
| VictoriaMetrics | 메트릭 데이터를 저장하는 시계열 데이터베이스입니다 | Deployment |
| PostgreSQL | 설정 및 사용자 정보를 저장합니다 | Deployment |
| kube-state-metrics | Kubernetes 리소스 상태를 메트릭으로 노출합니다 | Deployment |
| OTel Collector | OpenTelemetry 데이터를 수신하는 수집기입니다 | Deployment |
시스템 요구사항
Kubernetes 클러스터
| 항목 | 요구사항 |
|---|---|
| Kubernetes 버전 | 1.23 이상 |
| Helm 버전 | 3.x 이상 |
| 스토리지 클래스 | PersistentVolume을 프로비저닝할 수 있는 스토리지 클래스 필요 |
노드(Node) 요구사항
노드 에이전트는 eBPF를 사용하여 애플리케이션 코드 수정 없이 자동으로 추적과 메트릭을 수집합니다. 이를 위해 아래 요건을 충족해야 합니다.
| 항목 | 요구사항 |
|---|---|
| 운영체제 | RHEL 8.2 이상 (또는 호환 리눅스 배포판) |
| 커널 버전 | 4.16 이상 (eBPF 지원 필수) |
| CPU 아키텍처 | x86_64 (amd64) 또는 arm64 (aarch64) |
| 접근 권한 | 호스트 PID, cgroup, tracefs, debugfs 접근 필요 (privileged 모드로 실행) |
참고: eBPF는 Linux 커널에서 코드를 안전하게 실행할 수 있는 기술로, 노드 에이전트가 이를 활용하여 네트워크 요청, 시스템 호출 등을 자동으로 관측합니다. 커널 4.16 미만의 환경에서는 노드 에이전트가 정상적으로 동작하지 않을 수 있습니다.
권장 리소스
아래는 각 구성 요소의 기본 리소스 요청값입니다. 클러스터 규모에 따라 조정이 필요할 수 있습니다.
| 구성 요소 | CPU (요청) | 메모리 (요청) | CPU (상한) | 메모리 (상한) | 스토리지 |
|---|---|---|---|---|---|
| 서버 (x1 복제본) | 500m | 1Gi | - | - | 50Gi |
| UI | 100m | 512Mi | - | - | - |
| 클러스터 에이전트 | 100m | 1Gi | - | - | - |
| 노드 에이전트 (DaemonSet, 노드당) | 500m | 500Mi | - | 4Gi | - |
| ClickHouse | 1,000m | 2Gi | - | - | 300Gi |
| VictoriaMetrics | - | - | - | - | 20Gi |
| PostgreSQL | - | 512Mi | - | 512Mi | 5Gi |
참고: VictoriaMetrics는 리소스 요청/상한이 설정돼 있지 않으므로, 대규모 클러스터에서는 커스텀
values.yaml로 지정하세요. 메트릭 기본 보존 기간은 3일(--retentionPeriod=3d)이며values.yaml로 변경할 수 없어, 늘리려면 VictoriaMetrics 배포 템플릿의 인자를 직접 수정해야 합니다.
주의: 위 값은 기본 설정입니다. 클러스터 규모와 데이터 보존 기간에 따라 ClickHouse와 VictoriaMetrics의 스토리지를 충분히 확보하세요. 로그와 추적 데이터가 많을수록 더 많은 스토리지가 필요합니다.
스토리지 용량 사이징 (대/중/소)
PersistentVolume(PVC) 용량은 데이터 종류별로 증가 요인이 다릅니다. 각 저장소의 저장 대상과 용량을 좌우하는 주 변수는 다음과 같습니다.
| 저장소 | 저 장 대상 | 용량 증가 요인 | 기본 PV |
|---|---|---|---|
| ClickHouse | 분산추적(트레이스)·로그 | 트래픽량(초당 요청·스팬·로그 수) — 특히 로그 볼륨이 지배적. ClickHouse 자체 진단 로그(system.*_log)는 차트 기본 설정으로 비활성/7일 TTL 관리됨 — 구버전 차트는 진단 로그가 무한 축적되므로 최신 차트 설정 적용 필요 | 300Gi |
| VictoriaMetrics | 메트릭 시계열 | 카디널리티(서비스·컨테이너 수) × 보존 기간(기본 3일). 가득 차면 메트릭 수집 전체가 중단되므로 여유 확보 필수 | 20Gi |
| 서버 | 설정·상태 + 메트릭 조회 캐시 | 조회 대상 메트릭 수 | 50Gi |
| PostgreSQL | 설정 DB(사용자·규칙 등) + 알림 이력 + 사용자 수 추정 통계 | 알림 발생량·네임스페이스 수 × 보존 기간(알림·인시던트 이력은 기본 62일 보존으로 상한 수렴) | 5Gi |
용량을 주로 좌우하는 것은 ClickHouse(트래픽) 와 VictoriaMetrics(카디널리티) 입니다. 아래는 클러스터 규모별 시작 권장치입니다. 실제 사용량을 모니터링하며 조정하세요.
| 규모 | 대상 환경 | ClickHouse | VictoriaMetrics | 서버 | PostgreSQL |
|---|---|---|---|---|---|
| 소(小) | 개발·PoC, 노드 5대 이하·서비스 수십 개 | 300Gi(기본) — 로그 적은 개발 환경은 축소 가능 | 20Gi(기본) | 20~50Gi | 5Gi(기본) |
| 중(中) | 운영, 노드 10~30대·중간 트래픽 | 500~600Gi | 50~100Gi | 50Gi | 10Gi |
| 대(大) | 대규모, 노드 30대 이상·고트래픽 | 1Ti 이상 | 200Gi 이상 | 100Gi 이상 | 20Gi 이상 |
참고: 위 값은 제품 기본 설정과 일반적인 관측성 사이징 기준으로 도출한 시작점이며, 실측 벤치마크가 아닙니다. 트래픽·서비스 수·보존 기간에 따라 달라지므로 초기에는 넉넉히 잡고 실제 사용량을 보며 조정하는 것을 권장합니다.
참고: 추적·로그(ClickHouse) 데이터는 트래픽에 따라 급변합니다. 디스크 사용률이 임계치(기본 70%)를 넘으면 가장 오래된 데이터(하루 단위)부터 정리하여 지정한 디스크 용량 안에서 최대한 많은 이력을 유지합니다. 따라서 보존 기간을 고정하기보다 디스크 용량을 예산에 맞춰 정하는 방식이 안전합니다.
설치 전 준비
스토리지 클래스 확인
OPENMARU Observability는 데이터 저장을 위해 PersistentVolume을 사용합니다. Helm 차트의 기본 스토리지 클래스는 nfs-client입니다.
클러스터에서 사용 가능한 스토리지 클래스를 확인합니다.
kubectl get storageclass
사용할 스토리지 클래스 이름을 확인해 두세요. 기본값(nfs-client)과 다른 경우 설치 시 별도로 지정해야 합니다.
이미지 레지스트리 접근 확인
모든 컨테이너 이미지는 registry.openmaru.io에서 제공됩니다. 클러스터에서 해당 레지스트리에 접근할 수 있는지 확인하세요.
프라이빗 레지스트리를 사용하는 경우 imagePullSecrets를 설정해야 합니다. 해당 설정은 아래 주요 설정 항목 섹션을 참고하세요.
참고: 인터넷이 차단된 환경(에어갭 환경)에서는 이미지를 내부 레지스트리로 미리 옮겨두어야 합니다. 자세한 내용은 OPENMARU 기술 지원팀에 문의하세요.