Kubernets 배포를 위한 Helm 설치방법

George(박상조)
번개장터 기술 블로그
4 min readSep 5, 2019

안녕하세요. 번개장터 소프트웨어 엔지니어 박상조입니다. 이번에 쿠버네티스에서 패키지 매니저 역할을 하는 Helm을 소개하고 기초적인 사용법에 대해 알아보고자 합니다.

Helm이란?

Kubernetes가 환경을 구성하고 Scaling을 하는 데 있어 많은 도움을 주기는 하지만 아직 불편한 점들이 몇 가지 남아있습니다. 비슷한 애플리케이션들을 배포할 일이 있으면 그에 따라 yaml 파일들을 하나하나 수정해서 배포해야 합니다. 또 같은 애플리케이션이라 하더라도 환경에 따라 조금씩 다르게 배포할 일이 있을 수 있습니다. 그럴 때 그런 요소들을 변수화해서 쉽게 관리할 수 있게 해주는 패키지 매니저가 Helm입니다.

Helm의 패키지 매니징 방식

Helm은 기본적으로 패키지를 chart라는 단위로 관리합니다. chart는 templates와 values 그리고 다시 chart로 구성되어 있습니다. templates는 우리가 배포할 Deployment, Service 등의 Kubernetes Object들의 템플릿들을 정의해 놓은 것이고 values는 그 템플릿에 우리가 변수화해놓은 변수들을 넣어줄 파일입니다. chart는 이 chart에서 사용할 외부 chart라고 생각하시면 됩니다. 이렇게 그 애플리케이션에 기본적으로 들어가야 할 내용은 탬플릿으로 만들어놓고 상황에 따라 바뀌어야 할 부분들은 변수로 관리합니다.

Helm의 구조

Helm은 Client-Server 구조를 취하고 있습니다. 사용자가 사용하는 CLI가 Helm이고 실제로 Kubernetes에서 배포를 하고 관리하는 서버는 tiller라고 부릅니다. 그래서 사용자는 우선 Helm을 로컬에 설치하고 tiller를 서버에 배포해서 사용하게 됩니다.

Helm 설치

위에서 설명해 드린 것처럼 Helm은 두 가지 구성요소가 있습니다. 그럼 먼저 CLI인 Helm을 설치해 보도록 하겠습니다.
( Mac OS를 기준으로 설명하겠습니다 .)

Helm CLI 설치

  1. 아래 에서 OS에 맞는 파일을 다운로드 합니다.

2. 압축을 풀고 helm 파일을 /usr/local/bin으로 옮깁니다.

3. 아래 명령어를 통해 Helm이 제대로 설치되었는지 확인합니다. 아직 tiller가 없어서 Client의 버전만 잘 나오는지 확인하시면 됩니다.

helm version

4. 아래 내용으로 yaml 파일을 생성합니다.

apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system

5. 생성한 yaml 파일을 적용합니다.

kubectl apply -f rbac-tiller.yaml

6. tiller를 배포합니다.

helm init --service-account tiller

8. 이제 tiller가 잘 배포됐는지 확인합니다.

helm version

이제 Helm 설치를 완료했고 사용할 준비가 됐습니다. chart를 생성하고 배포하는 방법은 다음에 포스팅 하도록 하겠습니다. 감사합니다.

--

--