1. Helm 개요/설치/사용
Helm
쿠버네티스의 응용 프로그램 정의/설치/업그레이드를 코드 형태로 관리/제공 (참고)
쿠버네티스 응용 프로그램을 패키지 형태로 손쉽게 관리 가능하도록 도와주는 도구,
deployment/service/ingress 등의 오브젝트에 대한 정의를 템플릿 기반의 YAML로 작성하여 배포
쿠버네티스 패키지 관리자 성격
Helm 기능
복잡한 어플리케이션 배포 관리
- 쿠버네티스 환경에서 Helm chart는 복잡한 어플리케이션 코드 관리 및 자동 배포
- 빠른 어플리케이션 배포로 다양한 테스트 환경 배포 및 운영환경 배포 시간 줄여서 개발 집중
Hook (어플리케이션 생명 주기 관리)
Helm chart로 설치/업그레이드/삭제/롤백 등의 어플리케이션 생명 주기에 개입가능한 Hook 기능 제공
릴리즈 관리
Helm으로 배포된 어플리케이션은 하나의 릴리즈, 해당 릴리즈는 배포된 응용 프로그램 버전 관리 가능
재사용성
Helm chart는 다른 환경에서 재사용하여 배포 관리 가능
Helm 구성
Helm Server (Tiller)
Helm Client 요청을 처리하기 위해 대기,
요청 발생시 쿠버네티스에 Helm Chart (YAML 형식) 설치 및 릴리즈 관리
Helm Client
외부 저장소에서 Helm Chart를 가져오거나 gRPC로 Helm Server와 통신하여 요청하는 역할
Helm Chart Repository
chart 저장소; chart에 대한 메타데이터를 포함한 저장소
- public / private repository로 구성 가능
Helm Chart
쿠버네티스에서 리소스를 만들기 위한 템플릿; YAML 형식
Helm 환경 구성
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 700 get_helm.sh
$ ./get_helm.sh
설치 확인
helm version
Helm Server (Tiller) 구성
Tiller account 생성
- kubectl -n kube-system create sa tiller
- serviceaccount 생성 확인 : kubectl get serviceaccount -n kube-system
cluster-admin role 부여
- kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
- clusterrolebinding 확인 : kubectl get clusterrolebinding
Helm 명령
helm
helm <명령> --help : 해당 명령에 대한 도움말
Helm 명령 사용 방법 및 명령 목록
helm env
Helm 환경 정보
helm repo
Helm repository 관련 명령
helm repo add <이름> <레포지토리 URL> : 레포지토리 추가
helm repo add brigade https://brigadecore.github.io/charts
: Helm 공식 stable 차트
helm repo add stable https://brigadecore.github.io/charts
: Helm 공식 stable 차트
helm repo list
: 레포지토리 목록
helm repo update
: 레포지토리 정보 갱신
helm search
검색 명령
- helm search hub <chart 명> : hub에서 chart 검색 (hub는 repository 의미)
- helm search repo <chart 명> : repository에서 chart 검색, repository 추가 후 가능
helm install
chart를 이용한 어플리케이션 배포
- helm install repo stable/nginx-ingress : 현재 추가된 레포지토리에서 stable/nginx-ingress chart를 repo 이름으로 배포
- helm install stable/nginx-ingress --generate-name : 현재 추가된 레포지토리에서 stable/nginx-ingress chart를 임의의 이름으로 배포
helm ls
Helm 설치된 chart 목록 확인
helm history <chart 이름>
chart 릴리즈 관리
helm inspect [command] <chart 이름>
chart 상세 정보
- helm inspect values stable/nginx-ingress : stable/nginx-ingress chart 상세 정보
- 해당하는 chart에 설정된 key:value 형식의 속성과 릴리즈 수행시 설정가능한 key 정보 확인
helm status
현재 릴리즈된 chart 상세 정보
- helm status repo : repo 이름으로 릴리즈된 chart 상세정보
helm uninstall
현재 릴리즈된 chart 삭제
- helm uninstall repo : repo 이름으로 릴리즈된 chart 삭제
Helm을 이용한 어플리케이션 배포 (release) 방법
기존에 생성된 chart를 이용한 어플리케이션 배포
repository에 저장된 Helm chart 이용
사용자 정의 chart를 이용한 어플리케이션 배포
이건 다음시간에...