안녕하세요. J4J입니다.
이번 포스팅은 helm 입문을 위한 기본 개념 설명하는 시간을 가져보려고 합니다.
Helm 이란?
helm이라고 하는 것은 kubernetes를 사용하는 환경에서 kubernetes cluster가 관리하는 영역에 애플리케이션을 쉽고 편리하게 배포 및 관리할 수 있도록 도와주는 패키지 매니저입니다.
처음 접해 보는 분들이 helm이 무엇인지에 대해서 가장 쉽게 이해하기 위한 대표적인 비유로 node에서 패키지 매니저인 npm과 python에서 패키지 매니저인 pip 같은 것들을 얘기할 수 있습니다.
이런 패키지 매니저들은 각 환경에서 registry에 관리되어 있는 패키지들을 명령어들을 통해 가져와 쉽고 편리하게 사용할 수 있는 사용자 경험을 제공합니다.
helm은 kubernetes에 배포되어야 하는 deployment, service, configMap 등을 다른 패키지 매니저들과 동일하게 registry에 저장되어 있는 정보를 활용하여 편리하게 배포하는 것으로 생각해 주시면 됩니다.
또한 registry에서 관리되고 있는 상세한 설정 정보들을 일부 커스터마이징 하여 배포하는 것도 가능하게 도와줍니다.
Chart 란?
helm이라는 용어를 접하게 되면 helm chart, chart 등 연관된 용어를 함께 접하게 됩니다.
여기서 말하는 chart는 배포되어야 하는 애플리케이션의 리소스가 정의되어 있는 yaml 파일들을 템플릿 화해서 묶어 놓은 파일 모음이라고 얘기할 수 있습니다.
예를 들어, 애플리케이션을 배포하기 위해 설정되어야 하는 것들이 deployment, service, ingress가 있다고 가정할 때 각각을 배포하기 위한 yaml 파일들을 모두 작성하게 될 것이고 helm을 사용하지 않는다면 kubernetes 명령어를 통해 각각 배포할 수도 있을 것입니다.
chart 안에는 위에서 얘기한 것들이 배포되기 위해 작성된 yaml 파일들을 일괄적으로 보관한다고 말할 수 있습니다.
다만 chart에서는 values.yaml 이라는 파일을 통해 환경 설정하는 값들을 별도로 보관할 수 있습니다.
이 얘기는 무엇이냐면, 동일한 설정이 이루어져야 하는 애플리케이션이 여러 개가 있을 경우 배포되어야 하는 yaml 파일들을 정의한 뒤 서로 다른 values.yaml 정보를 이용하여 서로 다른 애플리케이션을 위한 배포를 할 수 있다는 얘기입니다.
즉, yaml 파일들을 모두 템플릿화 한 뒤 템플릿을 재 사용하며 서로 다른 환경의 애플리케이션 배포를 제공합니다.
chart의 더 자세한 설명과 구조에 대해서는 helm chart 공식 문서를 통해 더 많은 내용을 확인할 수 있습니다.
차트
차트 형식을 설명하고, 헬름으로 차트를 빌드하기 위한 기본지침을 제공한다.
helm.sh
helm chart에 대해서 처음 보시는 분들은 이해가 잘 안 되실 수도 있지만 문서를 정독하고 한번씩 chart를 이용한 간단한 테스트를 수행하신다면 모두가 이해되실 수 있다고 생각합니다.
Registry 란?
helm에서 registry는 helm chart를 보관하는 저장소로 다른 패키지 매니저들이 각각의 registry를 가지고 있는 것과 동일한 역할을 수행합니다.
하지만 제가 처음 helm을 사용하면서 registry 부분에서 어색했던 것은 다른 패키지 매니저들은 보통 오픈되어 있는 registry 저장소를 한 곳만 주로 사용했었는데 helm registry는 그렇지 않은 부분입니다.
예를 들어, helm을 이용하여 kafka를 설치하기 위해서는 bitnami라는 registry를 활용할 수도 있고 grafana를 설치하기 위해서는 grafana라는 registry를 활용할 수 있습니다.
또한, kafka를 설치할 때 bitnami가 아닌 다른 registry를 활용할 수도 있는 것처럼 registry의 정보가 다양합니다.
그러다 보니 chart를 가져와 사용하려고 할 때 필요한 registry 정보를 추가하는 과정이 여러 번 필요할 수 있습니다.
registry가 다양하게 있기 때문에 오픈되어 있는 helm chart를 가져와 사용하고 싶을 때 어떤 registry에 어떤 chart가 관리되고 있는지 정보가 필요할 수 있습니다.
그럴 때 Artifact Hub라는 곳을 이용할 수 있습니다.
Artifact Hub
Find, install and publish Cloud Native packages
artifacthub.io
artifact hub라는 곳은 helm chart가 보관되어 있는 저장소의 정보를 알고 싶을 때 사용할 수 있는 곳이며 이곳에는 공개적으로 사용할 수 있도록 오픈해 둔 모든 helm chart 정보가 관리되고 있습니다.
그래서 만약 helm을 이용하여 kafka를 설치하고 싶은데 어떤 곳을 활용할 수 있는지 알고 싶다면 Kafka 설치 Artifact Hub 링크와 같이 artifact hub에서 검색하면 정보를 확인할 수 있습니다.
Artifact Hub
Find, install and publish Cloud Native packages
artifacthub.io
버전 관리
다른 패키지 매니저 registry에 담겨 있는 패키지 정보들과 동일하게 helm chart 들에도 버전 관리가 이루어지고 있습니다.
예를 들어, bitnami kafka를 클릭해 보면 현재 기준 아래 사진과 같이 chart version이 나오는 것을 확인할 수 있습니다.

그래서 helm chart를 가져와 사용할 때 원하는 버전 정보가 있다면 특정 버전을 설치하여 배포해볼 수 있습니다.
다만, 다른 것들과 마찬가지로 버전 정보를 명시하지 않으면 가장 최신 버전을 가져와 사용하게 됩니다.
그리고 버전 정보에 대해 알고 싶으신 분들은 각 버전 별로 변경 사항들이 무엇인지에 대해서도 알고 싶을 수 있습니다.
artifact hub에서 helm chart를 선택한 뒤 오른쪽을 보면 아래와 같이 changelog를 확인할 수 있는 버튼이 별도로 있지만 일반적으로 활성화가 되어 있지는 않습니다.

그래서 버전 변경 사항에 대한 정보를 알고 싶다면 각 registry의 github에 들어가서 확인하는 것이 일반적입니다.
예를 들어, 위에서 얘기한 bitnami kafka의 버전 정보들의 변경 사항을 알고 싶다면 Bitnami Kafka Changelog.md를 통해 확인할 수 있습니다.
charts/bitnami/kafka/CHANGELOG.md at main · bitnami/charts
Bitnami Helm Charts. Contribute to bitnami/charts development by creating an account on GitHub.
github.com
다만, 모든 helm chart 들에서 버전 정보에 대한 changelog를 관리하지는 않습니다.
제공되는 곳에서만 정보를 확인할 수 있기 때문에 버전 변경 사항에 대해서 알고 싶으신 분들은 참고해주셔야 합니다.
이상으로 helm 입문을 위한 기본 개념 설명에 대해 간단하게 알아보는 시간이었습니다.
읽어주셔서 감사합니다.
'Infra, Cloud > Helm' 카테고리의 다른 글
| Window에서 Chocolately로 Helm 설치하기 & Helm 명령어 정리 (2) | 2025.07.14 |
|---|
댓글