Kubernetes(K8S): Helm + Prometheus + Grafana
오늘은 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 까지 구성해 보았습니다.