[k8s]Helm & Prometheus

타샤's 월드·2025년 5월 1일

Helm

  • chart.yml/ chart.taml : 대충 package.json
  • template : 오브젝트들의 공통 내용 정의 디렉토리
  • values.yml : 차트에서 변수 기본 값 정의

명령어

  • 특정 주소 레포지토리에 있는 헬름 차트를 현재 로컬 환경으로 불러옴
    helm repo add <레포지토리명> <주소>
  • 헬름 차트를 내 쿠버네티스에 설치
    helm install <helm release> <helm chart @> -f values.yml
  • 헬름 리스트 조회
    helm list
  • 헬름 삭제
    helm uninstall <helm release>
  • 업그레이드
    helm upgrade <helm release> -f values.yml

릴리즈란

이미지 : 컨테이너 = 차트 : 릴리즈

artifacthub - kubernetes dashboard 설치

대시보드 설치

helm repo add k8s-dashboard https://kubernetes.github.io/dashboard

helm install my-kubernetes-dashboard k8s-dashboard/kubernetes-dashboard --version 7.12.0

대시보드 클러스터 포트포워드

  • 서비스와 파드 디플로이먼트가 각각 5개 씩 기본으로 생성된걸 확인할 수 있음

kubectl -n default port-forward svc/mykubernetes-dashboard-kon-proxy 8443:443

443 포트는 ssl이 필수라 접근 불가

  • 서비스 어카운트 생성 : kube-system 네임스페이스에 dashboard-admin-sa 라는 어카운트를 만든다
    kubectl create serviceaccount dashbord-admin-sa -n kube-system

  • 클러스터롤 바인딩 : cluster-admin 이라는 최고권한을 준다
    kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin-sa

  • 토큰 생성 : kube-system 네임스페이스에 있는 das 에 토큰 부여
    kubectl create token dashboard-admin-sa -n kube-system

kube-system은 쿠버네티스 클러스터 내부에서 시스템 수준의 리소스(파드, 서비스 등)를 실행시키는 네임스페이스

Helm Chart

  • 시작:
    helm create sparta

  • templates 안에 변수 할당한 오브젝트들 정의
  • values.yml 파일에 변수 정의
#values.yml

replicaCount: 1
appName: "nginx"
image: "nginx:latest"
appPort: 80
  • values.yml 로 실행
    helm install sparta-nginx-app ./sparta --create-namespace --namespace sparta

  • new-values.yml로 실행
    helm install sparta-nginx-app ./sparta --create-namespace --namespace sparta -f new-values.yml

  • 끝 : 탬플릿으로 쫙쫙 공장처럼 찍어낼 수 있다 ㅇ0ㅇ

Prometheus & Grafana

Prpmetheus

  • 시간의 흐름에 따라 값을 저장하는 데이터베이스 (모니터링)
  • 그라파나는 프로메테우스를 조회하기 위한 gui툴

Kube-Prometheus-Stack

  • 설치
    helm install my-kube-prometheus-stack oci://ghcr.io/prometheus-community/charts/kube-prometheus-stack --version 71.1.0

kubectl --namespace default get pods -l "release=my-kube-prometheus-stack"

  • 서비스 확인해보면 grafana가 함께 포함되어 있음

  • 포트포워드
    kubectl port-forward service/my-kube-prometheus-stack-grafana 8001:80

Demon set

  • 레플리카셋이랑 비슷하지만 각 노드 별로 지정된 갯수의 파드를 강제로 실행함.
  • 모니터링에 주로 사용
profile
그때 그때 꽂힌것 하는 개발블로그

0개의 댓글