반응형

1. 설치

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod +x get_helm.sh
$ ./get_helm.sh

# 심볼릭
$ ln -s /usr/local/bin/helm /usr/bin/helm

# 혹은 /etc/profile에 path 추가
$ echo "export PATH=\$PATH:/usr/local/bin" >> /etc/profile
$ source /etc/profile

 

 

명령어 자동 완성 추가하기

# 현재 사용중인 세션
$ source <(helm completion bash)

# 새로운 세션 연결시
$ helm completion bash > /etc/bash_completion.d/helm

 

 

설치를 완료했으니, 필요한 패키지를 설치하기 위한 저장소가 필요합니다.

https://artifacthub.io/

 

Artifact Hub

Find, install and publish Cloud Native packages

artifacthub.io

 

 

페이지에서 설치가 필요한 패키지를 검색합시다.

 

 

저는 예시로 nginx 를 사용할거고, bitnami 저장소를 이용하겠습니다.

 

 

박스 모양에 커서를 갖다대면 repo URL이 나오는데 복사합시다.

 

 

해당 URL로 repo 추가를 합시다.

# Repo 추가
$ helm repo add bitnami https://charts.bitnami.com/bitnami

# Repo 패키지 리스트 업데이트
# yum 혹은 apt 같은 패키지 관리자의 update 기능이라고 생각하시면 편합니다.
$ helm repo update

 

 

저장소 추가 후에 검색해보면 잘 나옵니다.

 

 

설치 방법은 이전의 사이트에서 install 를 클릭하면 확인 할 수 있고, 하단의 See all을 누르면 배포 패키지의 버전 리스트를 확인 할 수 있습니다.

 

 

해당 페이지에서 안내하는 install 방법은 아래와 같습니다.

helm install은 helm install [NAME] [CHART] [flags] 순이며, 차트를 참조하거나 디렉토리를 직접적으로 참조 할 수도 있습니다.

$ helm install my-nginx bitnami/nginx --version 18.1.7

# ex 예시
# 차트 참조 : helm install $(my-nginx) nginx/nginx
# 패키지 차트 경로 : helm install $(my-nginx) ./nginx-1.2.3.tgz
# 압축을 푼 차트 디렉토리 경로 : helm install $(my-nginx) ./nginx
# 절대 URL : helm install $(my-nginx) https://example.com/charts/nginx-1.2.3.tgz
# 차트 참조 및 저장소 URL : helm install --repo https://example.com/charts/ mynginx nginx

 

 

해당 명령어로 생성 후에 조회해보면 정상적으로 생성되는 것을 확인 할 수 있습니다.

 

 

근데 우리는 values 값에 대한 수정이 필요하기 때문에 이걸로 설치 할 수 없습니다, 따라서 helm pull을 통해 패키지를 직접적으로 가져와야 합니다.

$ mkdir nginx
$ cd nginx
$ helm pull bitnami/nginx
$ tar -xvf nginx-*.tgz
$ cd nginx

 

 

압축을 푼 디렉토리로 이동하면 여러개의 yaml과 디렉토리가 존재하는 걸 볼 수 있습니다.

 

 

여기서 패키지를 설치할 때 차트의 기본 구조는 아래와 같습니다.

values.yaml을 통해 해당 인스턴스를 값을 정의하고, templates가 정의된 값을 통해 인스턴스를 구성합니다.

nginx-chart/
├── Chart.yaml
├── values.yaml
├── crds/
│   └── mycustomresource.yaml # 필요시 작성하는 커스텀 yaml
└── templates/
    ├── deployment.yaml
    ├── svc.yaml
    └── ingress.yaml
    └── ....

 

 

pull하여 가져온 chart에서 업로더가 제공한 README 등을 통해 양식에 맞게 values.yaml을 수정하고,

helm install을 통해 설치하면 되겠습니다.

$ helm install my-nginx . # 현재 디렉토리를 참조하여 my-nginx 패키지 설치

 

2. 여담

 

명령어 

helm list : helm chart 조회

 

 

helm uninstall $(charts) [...]  [flags] : charts 삭제

 

 

helm status $(charts) : charts 상태 조회

반응형