공부합시다!/Kubernetes

Kubernetes(K8S): Helm + Prometheus + Grafana

간서치 2023. 1. 6. 00:15
728x90

오늘은 K8S의 패키지 관리 echo system인 helm을 이용해서 Prometheus Stack을 설치합니다.

1. Helm: K8S chart(Package) 관리 시스템

2. Prometheus Stack

 2.1. Prometheus: K8S Resource Mornitoring System(CPU, Memory 위주)

 2.2. Grafana: Mornitoring System 시각화

3. 설정 변경 후 확인

순서로 진행하겠습니다.

 

1. Helm: K8S chart(Package) 관리 시스템

 1.1. helm 설치 스크립트 다운로드 및 실행

 1.2. repository 구성 및 update

 1.3. 간단한 Helm 사용법

  1.3.1. helm 설치

# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
# chmod 700 get_helm.sh
# ./get_helm.sh

 1.3.2. 공식 리포지토리 추가, mysql chart 설치 및 삭제

# helm repo add stable https://charts.helm.sh/stable
helm 공식 리포지토리 추가

# helm search repo
리포지토리 chart 확인

# helm repo update
리포지토리 업데이트

# helm install stable/mysql --generate-name
mysql 설치

# helm list
helm으로 설치된 chart 확인

# helm uninstall mysql-1672897024
# helm list
chart 삭제 후 확인

 

2. Prometheus Stack

 2.1. chart 확인 및 설치

 2.2. pod, service, secret 확인

 2.2.1. service는 clusterIP -> NodePort로 변경

 2.2.2. secret에서 grafana admin 의 password 확인

# helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
prometheus 리포지토리 추가

# helm search repo prometheus
prometheus chart 확인
prometheus-community/kube-prometheus-stack 설치

# helm install prometheus-community/kube-prometheus-stack --generate-name
kube-prometheus-stack chart설치

# kubectl get pods,svc,deployment,secret -o wide
설치 후 확인 사항

service/kube-prometheus-stack-1672897171-grafana  ClusterIP 10.100.152.134 <none>  80/TCP
ClusterIP를 NodePort 변경 예정

secret/kube-prometheus-stack-1672897171-grafana   Opaque   3    70s
secret의 admin passwordk 확인 예정

 

3. 설정 변경 후 확인

 3.1. service NodePort 변경

 3.2. 패스워드 확인, 접속

# kubectl edit service/kube-prometheus-stack-1672897171-grafana
ClusterIP -> NodePort로 변경
# kubectl get svc
kube-prometheus-stack-1672897171-grafana   NodePort 10.100.152.134 <none> 80:30988/TCP
nodeport 30988 확인 추후 웹브라우저로 접속

# kubectl get secret/kube-prometheus-stack-1672897171-grafana -o jsonpath="{.data.admin-password}"|base64 --decode;echo
secret 리소스에서 admin password 를 확인하는 jsonpath 사용
admin password는 prom-operator

 주의) 위에서 jsonpath  경로는 .data.admin-password  가 되는 이유는 

.파일 전체를 의미

.data   파일에서 data 영역

. data.admin-password 영역

파일을 grafana의 secret의 resource를 kubectl edit 명령어로 open 합니다.

 

아래 빨간부분이 보이시죠! josnpath는 이렇게 설정합니다. 

 

그냥 저 패스워드를 디코딩하셔도 아래와 동일합니다.

 3.3. Test 

  3.3.1.  모든nodeIP:nodeport

 

4. 삭제

 4.1. 설치된 helm chart 확인

 4.2. helm uninstall 삭제

 4.3. 남은 Resource는 수동 삭제

# helm uninstall kube-prometheus-stack-1672897171

# kubectl get pods,svc,deployment,secret -o wide
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE   SELECTOR
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   12d   <none>
NAME                                          TYPE     DATA   AGE
secret/kube-prometheus-stack-1672-admission   Opaque   3      92m

# kubectl delete secret/kube-prometheus-stack-1672-admission
secret "kube-prometheus-stack-1672-admission" deleted
# kubectl get pods,svc,deployment,secret -o wide

 

자! 지금까지 helm, prometheus stack을 활용하여 prometheus와  Grafana 까지 구성해 보았습니다.

 

 

 

 

728x90