Helm 최신 명령어 가이드 - 쿠버네티스 패키지 관리자 완전 정복
Helm은 쿠버네티스를 위한 패키지 관리자로, 복잡한 애플리케이션을 쉽게 배포하고 관리할 수 있게 해주는 강력한 도구입니다. 이 가이드에서는 Helm의 최신 명령어들을 체계적으로 정리하여 실무에서 바로 활용할 수 있도록 안내해드리겠습니다.
Helm 설치하기
먼저 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
macOS에서 Homebrew로 설치
brew install helm
Snap을 사용한 설치
sudo snap install helm --classic
기본 Helm 명령어
도움말 보기
Helm의 모든 명령어와 옵션을 확인할 수 있습니다.
helm help
특정 명령어의 도움말을 보려면:
helm get -h
차트 저장소 관리
Helm은 차트 저장소를 통해 사전 구성된 애플리케이션 패키지를 제공합니다.
저장소 추가
helm repo add [NAME] [URL] [flags]
실제 예시:
helm repo add bitnami https://charts.bitnami.com/bitnami
저장소 목록 확인
helm repo list
저장소 업데이트
로컬 저장소 인덱스를 최신 상태로 업데이트합니다.
helm repo update
저장소 제거
helm repo remove <repo_name>
차트 검색
저장소에서 차트를 검색합니다.
helm search repo <keyword>
예시:
helm search repo bitnami
Artifact Hub에서 공개적으로 사용 가능한 차트를 검색:
helm search hub <keyword>
차트 관리 명령어
새 차트 생성
helm create <name>
예시:
helm create mychart
차트 패키징
차트를 버전화된 아카이브 파일로 패키징합니다.
helm package <chart-path>
차트 검증
차트를 검사하고 잠재적인 문제를 식별합니다.
helm lint <chart>
차트 정보 확인
차트의 내용과 정보를 확인합니다.
helm show all <chart>
helm show values <chart>
차트 다운로드
helm pull <chart>
helm pull <chart> --untar=true
helm pull <chart> --verify
helm pull <chart> --version <number>
의존성 관리
차트의 의존성 목록을 표시합니다.
helm dependency list <chart>
릴리스 설치 및 관리
차트 설치
기본 설치 구문:
helm install [NAME] [CHART] [flags]
실제 예시:
helm install happy-panda bitnami/wordpress
자동 이름 생성으로 설치:
helm install bitnami/mysql --generate-name
중요한 설치 옵션들
값 설정
# 명령행에서 값 설정
helm install --set key1=val1,key2=val2 myapp ./chart
# 파일에서 값 설정
helm install -f values.yaml myapp ./chart
# 문자열 값 설정
helm install --set-string long_int=1234567890 myredis ./redis
# 파일에서 값 설정
helm install --set-file my_script=dothings.sh myredis ./redis
네임스페이스 및 기타 옵션
helm install myapp ./chart \
--create-namespace \
--namespace production \
--wait \
--timeout 10m \
--atomic
드라이런 및 디버그
실제 설치 없이 렌더링된 템플릿을 확인:
helm install --debug --dry-run goodly-guppy ./mychart
릴리스 목록 확인
helm list [flags]
릴리스 상태 확인
helm status <release-name>
릴리스 업그레이드
helm upgrade <release> <chart>
업그레이드 옵션들:
helm upgrade <release> <chart> --atomic
helm upgrade <release> <chart> --dependency-update
helm upgrade <release> <chart> --version <version_number>
helm upgrade <release> <chart> --values values.yaml
helm upgrade <release> <chart> --set key1=val1,key2=val2
helm upgrade <release> <chart> --force
설치 또는 업그레이드
릴리스가 존재하지 않으면 설치하고, 존재하면 업그레이드합니다.
helm upgrade --install <release name> --values <values file> <chart directory>
릴리스 롤백
helm rollback <release> <revision>
helm rollback <release> <revision> --cleanup-on-fail
릴리스 값 확인
helm get values <release-name>
helm get values <release-name> --all
helm get values <release-name> --revision <number>
릴리스 제거
helm uninstall RELEASE_NAME [...] [flags]
예시:
helm uninstall mysql-1612624192
템플릿 명령어
템플릿 렌더링
로컬에서 차트 템플릿을 렌더링합니다.
helm template [NAME] [CHART] [flags]
템플릿 검증
helm template myapp ./chart --validate
특정 템플릿만 출력
helm template myapp ./chart --show-only templates/deployment.yaml
테스트 명령어
차트 테스트 실행
helm test <release-name>
예시:
helm install demo demo --namespace default
helm test demo
플러그인 관리
플러그인 설치
helm plugin install <path|url> [flags]
플러그인 제거
helm plugin uninstall <plugin>... [flags]
차트 저장소 고급 관리
저장소 인덱스 생성
helm repo index <DIR>
helm repo index <DIR> --merge # 기존 인덱스와 병합
차트 푸시
원격 저장소에 차트를 푸시합니다.
helm push [chart] [remote] [flags]
자동 완성 설정
Bash 자동 완성
현재 세션용:
source <(helm completion bash)
Zsh 자동 완성
영구 설정:
helm completion zsh > "${fpath[1]}/_helm"
실전 예제 시나리오
WordPress 설치 및 관리
- 저장소 추가 및 업데이트:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
- 차트 정보 확인:
helm show values bitnami/wordpress
- 커스텀 값으로 설치:
echo '{mariadb.auth.database: user0db, mariadb.auth.username: user0}' > values.yaml
helm install -f values.yaml my-wordpress bitnami/wordpress
- 업그레이드:
helm upgrade -f panda.yaml my-wordpress bitnami/wordpress
- 상태 확인:
helm status my-wordpress
helm get values my-wordpress
차트 개발 워크플로우
- 새 차트 생성:
helm create mychart
- 차트 검증:
helm lint ./mychart
- 템플릿 테스트:
helm template test-release ./mychart --debug --dry-run
- 차트 설치 및 테스트:
helm install test-release ./mychart
helm test test-release
고급 설정
SQL 스토리지 백엔드 사용
export HELM_DRIVER=sql
export HELM_DRIVER_SQL_CONNECTION_STRING=postgresql://helm-postgres:5432/helm?user=helm&password=changeme
RBAC 설정
클러스터 범위 접근을 위한 ClusterRoleBinding 생성:
kubectl create clusterrolebinding sam-view \
--clusterrole view \
--user sam
kubectl create clusterrolebinding sam-secret-reader \
--clusterrole secret-reader \
--user sam
마무리
이 가이드에서는 Helm의 핵심 명령어들을 체계적으로 정리했습니다. Helm을 효과적으로 사용하려면:
- 기본 워크플로우 이해: 저장소 추가 → 차트 검색 → 설치 → 관리
- 값 관리:
--set
,-f values.yaml
등을 활용한 유연한 설정 - 릴리스 생명주기: 설치, 업그레이드, 롤백, 제거의 전체 과정 숙지
- 차트 개발:
helm create
,helm lint
,helm template
등을 활용한 개발 워크플로우
Helm은 쿠버네티스 환경에서 애플리케이션 배포와 관리를 크게 단순화해주는 강력한 도구입니다. 이 가이드의 명령어들을 참고하여 효율적인 쿠버네티스 운영을 경험해보시기 바랍니다.