kube-prometheus-stack helm chart는 Grafana 설치시에 가장 많이 이용하는 helm 이다.
배포를 하면 총 6가지의 POD가 올라온다. Alertmanager는 옵션이지만 나머지는 필수적으로 설치해야한다.
| Pod | 역할 | 배포방식 |
| Prometheus | 시계열 DB, 메트릭 저장 | StatefulSet |
| Prometheus Operator | Prometheus 자동 관리 | Deployment |
| Node Exporter | 노드 레벨 메트릭(CPU, Memory, Disk) 수집 | DaemonSet |
| Grafana | 대시보드 시각화 | Deployment |
| kube-state-metrics | K8s 리소스 레벨 상태 메트릭 | Deployment |
| Alertmanager | 알림 관리/발송 (enabled 시) | StatefulSet |
📌 Prometheus Operator 역할 보충설명
1. Prometheus 설정 자동 갱신
2. ServiceMonitor 추가하면 자동 반영
3. PrometheusRule 추가하면 알림 규칙 자동 반영
4. Prometheus Pod 장애 시 자동 복구
5. 버전 업그레이드 관리
📌 kube-state-metrics 역할 보충설명
1. Pod 상태 (Running, Pending, Failed)
2. Deployment replica 수
3. Service 정보
4. PVC 상태
5. Node 상태 (Ready, NotReady)

helm이 설치되어있지않다면 helm 설치부터 진행하면 된다. 난 helm 설치는 되어있어서 건너뛰었다. promethues repo를 추가하고 압축을 해제하면 구조를 확인할 수 있다.
# 레포 추가
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# 다운로드
helm pull prometheus-community/kube-prometheus-stack
# 압축 해제
tar -xzf kube-prometheus-stack-*.tgz
# 구조 확인
ls kube-prometheus-stack/
# values.yaml 파일 수정
kube-prometheus-stack/
├── values.yaml
├── charts/
│ ├── grafana/
│ ├── ...
# install (kube-prometheus-stack 폴더 안에서 진행)
helm upgrade --install prometheus . \
--namespace monitoring \
--create-namespace \
-f ./values.yaml
values.yaml 파일 내에서 꼭 수정이 필요한 부분들을 정리하고자 한다.
1. Prometheus PV, PVC 및 보관주기 설정
Prometheus는 기본적으로 Pod가 재시작되거나 노드가 교체되어도 메트릭 데이터를 보존하려면 PV,PVC 설정이 꼭 필요하다.
재시작이 없다면 기본적으로 로그를 보관주기 설정에 맞게 보관하지만 재시작이 되거나 노드가 교체된다면 로그 보관주기와 상관없이 데이터가 날라간다. 그래서 retention을 유지하려면 PV, PVC 설정이 필수이다.
# 로그 보관주기 변경
prometheus:
prometheusSpec:
retention: 20d <- 수정
# prometheus PV, PVC 설정
prometheus:
prometheusSpec:
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: nfs-sc <- 환경에 맞게 변경
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
selector: {} <- 미지원 시 삭제 필요 (AWS EBS는 미지원)
2. Grafana PV, PVC 및 admin ID/PW 설정
kube-prometheus-stack은 Grafana 대시보드를 ConfigMap으로 관리해서 PV,PVC 설정이 필수는 아니지만, 해당 설정을 안해주면 Grafana pod가 재시작되거나 노드가 교체되었을때 Grafana 커스텀 대시보드가 날라간다. Grafana 커스텀 대시보드를 사용한다면 PV 설정은 필수이다.
storageSpec: {} 이 기본으로 되어있는데 {} 삭제하고 작성해주면 된다. {} 삭제하지 않고 storageSpec: 설정 시에는 Pod 오류가 발생한다. 기본적으로 아래 코드가 주석처리 되어있어서 주석을 풀고 storageClassName과 storage만 작성하면 된다.
# sc명 확인
kubectl get storageclass
# grafana pv, pvc 설정
grafana:
persistence:
enabled: true
type: pvc
storageClassName: nfs-sc # 환경에 맞게 변경
accessModes: ["ReadWriteOnce"]
size: 5Gi
# admin ID/PW 설정
grafana:
adminUser: admin
adminPassword: "your-password"
3. Grafana ingress.yaml 작성
grafana 대시보드는 외부에서 접속이 필요하기 때문에 ingress 리소스가 필요하다. values.yaml 내에서 추가하는 방식도 있지만 추가적으로 yaml 파일을 작성해서 관리하는것이 편해서 그렇게 했다. 나는 nginx ingress controller와 HTTPS를 사용하여 그 기준으로 작성하였다.
# values.yaml 파일 외 별도로 ingress.yaml 파일 작성
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: grafana-dashboard
namespace: monitoring
spec:
rules:
- host: grafana.co.kr <- 수정필요
http:
paths:
- backend:
service:
name: kube-prometheus-stack-grafana
port:
number: 80
path: /
pathType: Prefix
tls:
- hosts:
- grafana.co.kr <- 수정필요
secretName: tls
'Monitoring' 카테고리의 다른 글
| 🔑 Loki + Promtail 기반의 데이터 인프라 로그 파이프라인 구축 (0) | 2026.05.09 |
|---|---|
| 📊 인프라/어플리케이션 메트릭 모니터링 (Prometheus, Telegraf, PostgreSQL) (0) | 2026.05.02 |