Skip to main content

Helm을 이용한 패키지 배포

Helm을 이용한 패키지 배포

  • Helm (https://helm.sh/docs/)
  • helm이란 쿠버네티스 패키지 매니저입니다. centOS에서 yum이나 python에서는 pip, macOS에서 brew와 같이 패키지를 관리해주는 툴입니다. helm을 이용하면 원하는 패키지들을 쿠버네티스에 쉽게 설치할 수 있습니다.
  • helm은 docker hub와 비슷하게 helm 패키지들을 저장하고 있는 저장소(repository)가 있습니다. 사용자는 저장소를 추가하고 해당 저장소의 패키지를 install하기만 하면 됩니다. helm 차트로 원하는 패키지를 install할 때 values.yaml을 이용하여 사용자의 환경에 따라 커스텀하여 사용할 수 있습니다.
  • Helm의 기능
    • 새로운 차트 생성
    • chart로 chart archive(tgz) files로 패키지화 하기
    • chart가 저장되는 chart 저장소와 상호작용
    • Kubernetes cluster에 chart의 설치 및 제거, 릴리즈 주기관리
  • Helm의 구성
    • chart: helm 패키지, k8s application, tool, service를 구동하는데 필요한 resource의 집합(mariadb, nginx redis 등)
    • Repository: helm chart를 모아두고 공유하는 저장소
      • 원격저장소 - bitnami, Artifact HUB
      • 로컬저장소 - Chart Museum

Helm 설치 (https://helm.sh/docs/intro/install)

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

Helm 사용하기

  • Repository 추가/삭제: helm repo add [name] [url]
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo list
  • Repository에서 제공하는 chart 검색: helm search repo [keyword]
helm search repo
helm search repo mariadb
  • chart 정보 보기:
    • helm show chart [chart]
    • helm inspect values [chart]
helm show chart bitnami/mariadb
https://github.com/bitnami/bitnami-docker-mariadb - Parameters 확인
helm inspect values bitnami/mariadb
  • chart 아카이브 설치: helm install chart_name [chart]
# chart를 설치하고 설치된 패키지 운영 요약 메시지 출력
helm install app-db bitnami/mariadb
helm install app-db --set auth.rootPassword=secretpassword,auth.database=app_database bitnami/mariadb
helm list
  • chart 아카이브 삭제: helm uninstall [chart_nmae]
# chart를 설치하고 설치된 패키지 운영 요약 메시지 출력
helm uninstall app-db
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo list

helm search repo
helm search repo bitnami/mariadb

# 차트 정보 확인
helm show chart bitnami/mariadb

# 설치된 아카이브 없음
helm list

helm install app-db --set auth.rootPassword=secretpassword,auth.database=app_database bitnami/mariadb

kubectl get all

# 설치된 패키지와 차트 확인 (app-db) - mariadb
helm list

# 패키지 삭제
helm uninstall app-db

kubectl get all

# 저장소 삭제
helm repo list
helm repo remove bitnami

# 삭제 확인
helm repo list
Helm을 이용해 nginx 웹 서버를 배포하세요.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo list

helm search repo bitnami/nginx
helm install ckad-webserver bitnami/nginx

kubectl get pods -o wide | grep -i ckad-webserver
...
ckad-webserver-nginx-747f476b9c-bvns8 1/1 Running 0 80s 192.168.104.31 node2 <none> <none>

kubectl get all

kubectl get svc
...
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
app-service NodePort 10.103.71.190 <none> 80:31745/TCP 73m
app-svc NodePort 10.97.102.131 <none> 80:31222/TCP 23h
canary-svc NodePort 10.111.100.221 <none> 80:30227/TCP 22h
ckad-webserver-nginx LoadBalancer 10.100.49.36 <pending> 80:30525/TCP 113s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 17d

curl node2:30525