[Helm] 헬름 기초 다지기

2해승·2025년 1월 8일

HELM에 대하여

목록 보기
1/3

쿠버네티스는 알다시피 컨테이너 오케스트레이션 도구로 애플리케이션의 배포와 관리를 효율적으로 구축할 수 있게 도와준다.

쿠버네티스에 애플리케이션을 배포할 때 가장 기본적으로 사용되는 것은 YAML이다. 그러나 점점 복잡한 애플리케이션을 다루게 될 수록 YAML 파일만으로는 유지보수와 확장이 쉽지 않을 것이다.

이 문제를 해결하기 위해 등장한 것이 바로 Helm이다!

헬름이란?

헬름에 대해 알아보기에 앞서 헬름을 사용하는 이유에대해 알아보자.

헬름을 사용하는 이유?

애플리케이션이 점점 확장되고 복잡해짐에 따라 YAML 파일 관리에는 한계점이 들어나게 된다.

  • 애플리케이션 별 YAML 파일 생성
    여러 애플리케이션을 배포하려면 각 애플리케이션 마다 YAML 파일을 생성해야함

  • 환경 별 YAML 파일 생성
    동일한 애플리케이션이라도 개발, 테스트, 운영 환경마다 설정 값이 달라 각각의 YAML 파일을 생성해야함

  • 리소스 파일 증가로 인한 유지보수 부담


[이미지 출처 https://dobby-isfree.tistory.com/198]

정리하자면 YAML은 정적 파일이기 때문에 필요에 따라 파일을 개별로 만들어주어야 하는데 리소스가 많아질 경우 유지보수가 힘들어지게 된다.

따라서 템플릿을 통해 YAML을 동적으로 생성하게 해주는 도구인 헬름을 사용하는 이유이다.


헬름의 정의와 장점

헬름의 공식 문서에서 정의하는 바는 다음과 같다.

Helm is an open source package manager for Kubernetes. It provides the ability to provide, share, and use software built for Kubernetes.
(Helm은 Kubernetes를 위한 오픈소스 패키지 관리자입니다. Kubernetes를 위해 빌드된 소프트웨어를 제공, 공유 및 사용할 수 있는 기능을 제공합니다.)

즉, 헬름은 쿠버네티스 환경에서 패키지 관리 도구 역할을 하며 배포, 업그레이드, 롤백 등을 간편하게 관리할 수 있도록 도와준다. 여기서 말하는 패키지는 Helm Chart로, 이는 쿠버네티스 리소스를 하나의 단위로 묶은 개념이다.

Helm Chart는 쿠버네티스 애플리케이션을 정의하는 템플릿과 설정 파일들의 모음이다. 이를 통해 복잡한 애플리케이션 배포를 단순화 할 수 있으며 다양한 환경에서 유연하게 사용할 수 있다.

헬름의 주요 장점

1. 템플릿 기반 YAML 관리 (Helm Chart Template)

헬름 차트는 YAML의 반복적이고 정적인 문제를 템플릿화를 통해 해결한다.
예를들어 name이나 selector와 같은 리소스 속성을 변수화하여 각 환경에 맞게 설정을 변경할 수 있다.

2. 손쉬운 오픈소스 애플리케이션 설치

헬름은 공식 저장소 및 서드파티 저장소를 통해 제공되는 오픈소스 애플리케이션을 손쉽게 설치할 수 있다.


helm 명령어의 동작방식은 kubectl과 흡사하다(?)

helm 명령어 동작 방식을 이해하려면 kubectl 명령어가 쿠버네티스의 API Server와 어떻게 통신하는지 알아야한다. 헬름 또한 비슷한 방식으로 동작하기 때문에 이를 이해하면 helm 명령어의 동작 원리를 쉽게 이해할 수 있다.

kubectl 명령어 동작 방식

쿠버네티스를 설치하면 /etc/kubernetes/admin.conf 파일이 생성되는데 이 파일에는 API Server와 통신할 수 있는 정보가 담겨져있다.

  • API Server IP 주소
  • 접근 인증서
  • 사용자 및 컨텍스트 정보

kubectl이 동작하기 위해 필요한 이 정보들을 ~/.kube/config 파일로 복사하게 되면 kubectl은 해당 파일을 읽어 연결 대상을 인식하고 인증을 수행하여 쿠버네티스 클러스터와 통신하는 방식이다.

helm 명령어 동작 방식

helm 명령어 또한 kubectl과 동일한 원리를 사용한다. ~/.kube/config 파일을 참조하여 API Server의 정보를 읽고 클러스터와 통신하게 되는 것이다.


Helm Chart 구성 요소

Helm 차트는 기본적으로 다음과 같은 디렉토리 구조를 가지고 있다.

my-chart/
|-- Chart.yaml
|-- charts
|-- templates
|   |-- NOTES.txt
|   |-- _helpers.tpl
|   |-- deployment.yaml
|   |-- configmap.yaml
|   |-- ingress.yaml
|   |-- service.yaml
`-- values.yaml
  • Chart.yaml
    차트에 관한 정보를 정의하는 파일

  • templates/
    실제 쿠버네티스 리소스를 정의하는 템플릿 파일들이 위치해있음

  • values.yaml
    사용자 정의 값을 설정할 수 있는 파일로 템플릿에서 참조함



헬름은 쿠버네티스 애플리케이션 배포와 관리를 한층 더 편리하게 만들어주는 도구이다. YAML 파일의 복잡성을 줄이고 리소스를 관리하며 재사용 가능한 템플릿을 제공하기 때문에 현재 쿠버네티스 환경에서 필수 도구로 자리 잡은 것 같다.

다음 시간에는 톰캣을 이용한 실습과 내 차트를 간단하게 만들어봐도 좋겠다. 안뇽~@!


[참고자료]
인프런 강의 대세는 쿠버네티스 [Helm편]
https://helm.sh/ko/docs/
https://coding-start.tistory.com/310
https://etloveguitar.tistory.com/141
https://www.cncf.io/reports/helm-project-journey-report/

profile
Node 백엔드 개발자 / 데브옵스 취준생

0개의 댓글