[쿠버네티스 튜토리얼] 6. Helm 설치 및 애플리케이션 관리
Kubernetes에서는 복잡한 애플리케이션 배포를 쉽게 하기 위해 Helm 패키지 매니저를 널리 사용한다.
Helm은 차트(Chart)라는 단위로 Kubernetes 매니페스트들을 묶어 패키징하고, 템플릿화하여 재사용 가능하게 한다.
차트는 애플리케이션(예: WordPress, MySQL 등)의 Kubernetes 리소스 정의들을 포함하며, 값 파일(values.yaml)을 통해 환경별 설정을 바꿀 수 있다.
간단히 말해, Helm은 Kubernetes 세계의 apt/yum/npm 같은 패키지 매니저이다. (사용법은 도커허브와 유사하다.)
차트를 이용하여 복잡한 앱을 한 줄로 설치하거나, 버전 관리를 할 수 있다.
Helm CLI 설치 (로컬 환경)
Helm 설치
Ubuntu에서는 snap으로 설치하거나, 스크립트를 통해 설치할 수 있다. 여기서는 snap을 사용해보자.


차트 리포지토리 추가
Helm Hub 또는 특정 차트 저장소를 추가할 수 있다.
예로 Bitnami 저장소를 추가해보자.

- Bitnami는 다양한 인기 애플리케이션의 차트를 제공한다.
차트 검색
저장소에 어떤 차트들이 있는지 검색할 수 있다.

- bitnami/nginx라는 차트가 있음을 알 수 있다.
애플리케이션 배포 (helm install)
사용법은 docker hub에서 이미지를 가져올 때(docker pull)와 유사하다.
이제 Helm 차트를 이용해 애플리케이션을 배포해보자.
간단한 Nginx를 Helm으로 설치해보자.
사실 Nginx는 차라리 Deployment로도 충분하지만, Helm 사용법 시연 목적이다.

- helm install <릴리스명> <차트명> 명령으로 릴리스를 설치했다.
- 릴리스명은 같은 차트를 여러 번 설치할 때 구분 용이며, 여기선 my-nginx로 지정했다.
Helm은 해당 차트의 템플릿을 렌더링하여 Kubernetes 리소스들을 생성한다.
helm list 명령으로 현재 설치된 릴리스들을 볼 수 있다.

STATUS가 deployed로 나오면 설치가 완료된 것이다.
kubectl get all로 생성된 자원들을 확인해보자.

Helm chart에 정의된 내용에 따라 Deployment, Service 2개 등이 생성된 것을 볼 수 있다.
my-nginx 서비스가 NodePort로 80->31751포트로 연결했다.
접속 테스트
NodePort 31751로 nginx를 노출했으므로 curl을 날려보자.
각자 연결된 포트에 맞추길 바란다.

Nginx 응답이 오면 성공이다.
Helm 릴리스 삭제
Helm이 생성한 리소스들을 지우려면 다음 명령어를 사용하자.

이 명령으로 Deployment, Service 등 관련 리소스들이 한번에 삭제된다.
Helm 차트 활용 및 장점
패키징과 버전관리
- Helm 차트는 특정 버전으로 릴리스되어 관리된다.
- helm install 시 --version으로 차트 버전을 지정할 수 있고, helm upgrade로 릴리스를 새 버전 차트로 업그레이드할 수 있다.
- 예시로 helm upgrade my-nginx bitnami/nginx --version 13.2.18 등으로 버전 변경이 가능하다.
설정 커스터마이징
대부분의 차트는 기본값(values.yaml)이 있고, 사용자가 --set 또는 -f custom-values.yaml로 override할 수 있다.
- 예를 들어 NodePort 대신 LoadBalancer로 서비스 타입을 바꾸고 싶다면
- $ helm install my-nginx bitnami/nginx --set service.type=LoadBalancer
- 이런 식으로 값 주입이 가능하다.
템플릿 기능
Helm chart 내부는 Go 템플릿으로 작성되어, 조건문이나 반복문 등 로직을 활용한 매니페스트 생성이 가능하다.
이를 통해 복잡한 앱도 하나의 차트로 여러 경우에 대응할 수 있다.
요약
Helm을 통해 쿠버네티스 앱 설치를 자동화하고 효율화하는 방법을 배웠다.
- Helm CLI 설치 및 저장소 추가, 차트 검색, 차트 설치(helm install) 등의 기본 흐름을 실습했다.
- Helm 차트는 여러 리소스를 묶은 패키지로, 한 번의 명령으로 관련 리소스들을 생성할 수 있고, Helm이 릴리스 단위로 관리해준다.
- helm uninstall로 깨끗하게 제거도 가능하다.
배운 개념
- Helm의 장점인 재사용 가능한 배포(차트)
- 구성값 템플릿화(다른 환경에 같은 차트 사용)
- 커뮤니티 차트 활용(bitnami 등)
나중에 추가 개념으로 helm upgrade/rollback 등도 배워보자.