-
[Helm] Helm 설치공부/쿠버네티스&헬름 2025. 3. 3. 23:11
Helm 설치
Helm(이하 헬름)을 성공적으로 설치하려면 다음과 같은 전제 조건이 필요합니다.
- 쿠버네티스 클러스터
- 설치를 위해 어떤 보안 구성을 사용할 것인지 결정하기(필요시)
- 헬름 설치 및 구성
맥OS 기준으로 설치는 homebrew를 사용하면 간단합니다.
$ brew install helm
Helm 사용하기
주요 개념 3가지
Helm은 쿠버네티스 애플리케이션의 패키지 관리 도구로 다음 세 가지 핵심 개념을 중심으로 작동합니다.
- 차트 (Chart)
- 쿠버네티스 애플리케이션을 구성하는 모든 리소스 정의(YAML 파일)를 담고 있는 패키지
- 쿠버네티스에서의 Homebrew 포뮬러, Apt dpkg, YUM RPM 파일과 유사하게 애플리케이션 배포에 필요한 모든 요소를 묶어 제공
- 저장소 (Repository)
- Helm 차트를 모아두고 공유하는 저장소
- Perl의 CPAN 아카이브나 페도라 패키지 데이터베이스처럼 쿠버네티스 패키지들을 관리하고 제공하는 역할
- 릴리스 (Release)
- 쿠버네티스 클러스터에 설치된 차트의 인스턴스
- 하나의 차트를 여러 번 설치하여 동일한 클러스터 내에 여러 인스턴스를 생성할 수 있으며 각 설치는 고유한 릴리스 이름을 가짐
- 예를 들어, MySQL 차트를 두 번 설치하면 두 개의 릴리스가 생성되어 각각 별도의 MySQL 데이터베이스 인스턴스를 운영할 수 있음
명령어
helm search: 차트 찾기
Helm은 강력한 검색 명령어를 제공하여 사용자가 원하는 Helm 차트를 쉽게 찾을 수 있도록 돕습니다. Helm 검색 명령어는 크게 두 가지 소스를 검색할 수 있습니다.
helm search hub
- Helm Hub 검색
- 여러 Helm 저장소에 있는 차트를 포괄적으로 검색하는 명령어
- 다양한 공개 Helm 차트를 한 번에 검색하여 원하는 차트를 찾을 수 있음
$ helm search hub wordpress URL CHART VERSION APP VERSION DESCRIPTION https://hub.helm.sh/charts/bitnami/wordpress 7.6.7 5.2.4 Web publishing platform for building blogs and ... https://hub.helm.sh/charts/presslabs/wordpress-... v0.6.3 v0.6.3 Presslabs WordPress Operator Helm Chart https://hub.helm.sh/charts/presslabs/wordpress-... v0.7.1 v0.7.1 A Helm chart for deploying a WordPress site on ...
위와 같이 하면 헬름 허브에서 모든
wordpress
차트를 찾습니다. 만약 필터 없이helm search hub
을 실행하면 사용 가능한 모든 차트를 보여줍니다.helm search repo
- 로컬 저장소 검색:
helm repo add
명령어를 사용하여 로컬 Helm 클라이언트에 추가된 저장소를 검색하는 명령어- 로컬에 저장된 데이터베이스를 기반으로 검색하므로 인터넷 연결 없이도 빠르게 검색할 수 있음
- 자신이 추가한 저장소에서만 검색이 가능
$ helm repo add brigade https://brigadecore.github.io/charts "brigade" has been added to your repositories $ helm search repo brigade NAME CHART VERSION APP VERSION DESCRIPTION brigade/brigade 1.3.2 v1.2.1 Brigade provides event-driven scripting of Kube... brigade/brigade-github-app 0.4.1 v0.2.1 The Brigade GitHub App, an advanced gateway for... brigade/brigade-github-oauth 0.2.0 v0.20.0 The legacy OAuth GitHub Gateway for Brigade brigade/brigade-k8s-gateway 0.1.0 A Helm chart for Kubernetes brigade/brigade-project 1.0.0 v1.0.0 Create a Brigade project brigade/kashti 0.4.0 v0.4.0 A Helm chart for Kubernetes
helm repo add: 로컬에 저장소 추가
helm repo add
명령어는 새로운 Helm 저장소를 로컬 Helm 클라이언트에 추가하는 데 사용됩니다. 이를 통해 사용자는 특정 저장소에서 차트를 검색하고 설치할 수 있습니다. 명령어 형식은helm repo add [저장소 이름] [저장소 URL]
로 사용합니다. 추가된 저장소는helm search repo
명령어를 사용하여 검색할 수 있습니다.helm install: 패키지 설치
helm install
명령어는 Helm 차트를 쿠버네티스 클러스터에 설치하는 데 사용됩니다. 이 명령어는 차트를 다운로드하고 필요한 쿠버네티스 리소스를 생성하여 애플리케이션을 배포합니다. 명령어 형식은helm install [릴리스 이름] [차트 이름]
입니다. 릴리스 이름은 설치된 차트의 인스턴스를 식별하는 데 사용되며 차트 이름은 설치할 차트를 지정합니다.helm install
명령어를 사용하여 여러 소스에서 설치를 수행할 수 있습니다.- 차트 저장소
helm install happy-panda stable/mariadb
- 로컬 차트 압축파일
helm install foo foo-0.1.1.tgz
- 압축해제된 차트 디렉토리
helm install foo path/to/foo
$ helm install happy-panda stable/mariadb Fetched stable/mariadb-0.3.0 to /Users/mattbutcher/Code/Go/src/helm.sh/helm/mariadb-0.3.0.tgz happy-panda Last Deployed: Wed Sep 28 12:32:28 2016 Namespace: default Status: DEPLOYED Resources: ==> extensions/Deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE happy-panda-mariadb 1 0 0 0 1s ==> v1/Secret NAME TYPE DATA AGE happy-panda-mariadb Opaque 2 1s ==> v1/Service NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE happy-panda-mariadb 10.0.0.70 <none> 3306/TCP 1s Notes: MariaDB can be accessed via port 3306 on the following DNS name from within your cluster: happy-panda-mariadb.default.svc.cluster.local To connect to your database run the following command: kubectl run happy-panda-mariadb-client --rm --tty -i --image bitnami/mariadb --command -- mysql -h happy-panda-mariadb
위 코드는
helm install
명령어를 사용하여 MariaDB 차트를 설치하면 새로운 릴리스 오브젝트가 생성됩니다. 릴리스 이름은 사용자가 지정하거나-generate-name
옵션을 사용하여 Helm이 자동으로 생성하도록 할 수 있습니다. 예시에서 릴리스의 이름은 happy-panda입니다.Helm 클라이언트는 설치 과정에서 생성되는 리소스, 릴리스 상태, 추가 설정 단계 등 유용한 정보를 출력합니다. Helm은 모든 리소스가 완전히 실행될 때까지 기다리지 않습니다. 많은 차트가 대용량 Docker 이미지를 필요로 하므로, 설치 완료까지 상당한 시간이 소요될 수 있습니다.
helm upgrade 및 helm rollback: 릴리스 업그레이드 및 실패 복구
새로운 버전의 차트가 릴리스되었을 때나 릴리스의 구성을 변경하고자 할 때,
helm upgrade
명령어를 사용할 수 있습니다.업그레이드는 현존하는 릴리스를 가지고 사용자가 입력한 정보에 따라 업그레이드합니다. 쿠버네티스 차트는 크고 복잡할 수 있기 때문에 헬름은 최소한의 개입으로 업그레이드를 수행하려고 합니다. 최근 릴리스 이후로 변경된 것들만 업데이트하게 됩니다.
$ helm upgrade -f panda.yaml happy-panda stable/mariadb Fetched stable/mariadb-0.3.0.tgz to /Users/mattbutcher/Code/Go/src/helm.sh/helm/mariadb-0.3.0.tgz happy-panda has been upgraded. Happy Helming! Last Deployed: Wed Sep 28 12:47:54 2016 Namespace: default Status: DEPLOYED ...
위의 경우,
happy-panda
릴리스의 차트가 업그레이드되는데 새 YAML 파일도 반영됩니다.mariadbUser: user1
helm get values
를 사용하여 새로운 설정이 적용되었는지 확인해 볼 수 있습니다.$ helm get values happy-panda mariadbUser: user1
helm get
명령어는 클러스터에서 릴리스 정보를 확인할 때 유용한 도구입니다. 위의 예에서panda.yaml
의 새로운 값이 클러스터에 배포되었음을 확인할 수 있습니다.릴리스가 계획대로 되지 않는다면
helm rollback [RELEASE] [REVISION]
를 사용하여 이전 릴리스로 간단히 롤백할 수 있습니다.$ helm rollback happy-panda 1
위와 같이 하면 happy-panda가 맨 첫번째 릴리스 버전으로 롤백됩니다. 릴리스 버전은 증분 리비전(incremental revision)을 나타냅니다. 설치, 업그레이드, 롤백 등이 실행될 때마다 리비전 번호는 1씩 증가합니다. 첫 번째 리비전 번호는 항상 1이며 특정 릴리스의 리비전 번호를 확인하기 위해서는
helm history [RELEASE]
를 사용할 수 있습니다.레퍼런스
https://helm.sh/ko/docs/intro/quickstart/
https://helm.sh/ko/docs/intro/using_helm/
https://helm.sh/ko/docs/chart_template_guide/getting_started/