IT/CLOUD(AWS,Azure,GCP,Docker)

Helm 설치하기

알콩달콩아빠 2022. 6. 20. 10:05
728x90
반응형

Helm 설치하기

 

Helm은 Kubernetes의 패키지 매니저입니다. Kubernetes에서 애플리케이션을 배포할 경우 같은 애플리케이션이어도 환경에 따라 설정이 달라지는 경우가 발생하는데 이에 따라 설정을 매번 변경해줘야하는 불편함이 생깁니다. Helm은 이렇게 배포 환경에 따라 달라지는 설정값을 정의하고 배포할 수 있도록 패키지 매니징을 지원합니다. 

 

Helm

Helm - The Kubernetes Package Manager.

helm.sh

 

 

1. Helm 구성


Helm의 기본 구조는 다음과 같습니다. (Helm 3.0 기준으로 확인한 내용입니다)

 

 

Helm 3 Architecture

 

 

  • Charts
    yaml 파일을 묶어서 정의한 package입니다. kubernetes app 빌드를 위한 리소스가 정의되어 있습니다. 
  • Repository
    생성된 차트들의 저장소입니다.
  • Release
    kubernetes 클러스터에 로드된 chart instance들의 버전입니다. chart로 배포된 app들은 각각 고유한 버전을 갖고 있습니다. 

 

 

2. Helm 설치하기


Kubernetes 클러스터가 구성된 환경에서 다음 명령어를 실행하여 Helm을 설치해줍니다.

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

Helm v3.6.3 is available. Changing from version v3.6.1.
Downloading https://get.helm.sh/helm-v3.6.3-darwin-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /helm
Password:
helm installed into /bin/helm

 

설치가 완료되면 버전을 확인해줍니다.

$ helm version

version.BuildInfo{Version:"v3.6.3", GitCommit:"d506314abfb5d21419df8c7e7e68012379db2354", GitTreeState:"clean", GoVersion:"go1.16.5"}

 

 

3. Helm 사용하기


3.1. 차트 Repository 추가 및 업데이트

 

Helm 차트를 사용하기 위해 차트 repository를 추가해줍니다.

$ helm repo add stable https://charts.helm.sh/stable

"stable" has been added to your repositories

 

추가된 repository를 확인해줍니다.

$ helm repo list

NAME  	URL                          
stable	https://charts.helm.sh/stable

 

추가된 repository에 어떤 차트가 있는지 검색하여 확인해줍니다.

$ helm search repo stable

NAME                                 	CHART VERSION	APP VERSION            	DESCRIPTION                                       
stable/acs-engine-autoscaler         	2.2.2        	2.1.1                  	DEPRECATED Scales worker nodes within agent pools 
stable/aerospike                     	0.3.5        	v4.5.0.5               	DEPRECATED A Helm chart for Aerospike in Kubern...
stable/airflow                       	7.13.3       	1.10.12                	DEPRECATED - please use: https://github.com/air...
stable/ambassador                    	5.3.2        	0.86.1                 	DEPRECATED A Helm chart for Datawire Ambassador   
stable/anchore-engine                	1.7.0        	0.7.3                  	Anchore container analysis and policy evaluatio...
stable/apm-server                    	2.1.7        	7.0.0                  	DEPRECATED The server receives data from the El...
stable/ark                           	4.2.2        	0.10.2                 	DEPRECATED A Helm chart for ark                   
stable/artifactory                   	7.3.2        	6.1.0                  	DEPRECATED Universal Repository Manager support...
stable/artifactory-ha                	0.4.2        	6.2.0                  	DEPRECATED Universal Repository Manager support...
stable/atlantis                      	3.12.4       	v0.14.0                	DEPRECATED A Helm chart for Atlantis https://ww...
stable/auditbeat                     	1.1.2        	6.7.0                  	DEPRECATED A lightweight shipper to audit the a...
stable/aws-cluster-autoscaler        	0.3.4        	                       	DEPRECATED Scales worker nodes within autoscali...
stable/aws-iam-authenticator         	0.1.5        	1.0                    	DEPRECATED A Helm chart for aws-iam-authenticator 
...

 

최신 차트 리스트 사용을 위해 업데이트를 해줍니다.

$ helm repo update

Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈Happy Helming!⎈

 

 

3.2. Package 설치하기

 

helm install 명령어를 이용하여 패키지를 설치해줍니다. 설치할 때는 다음과 같이 릴리스 이름과 차트 이름을 지정해줍니다. postgresql을 'db'라는 이름의 namespace에 설치하였고 릴리스 이름은 'postgresql-v1'으로 지정해줬습니다.

 

설치 후엔 helm stauts 명령어로 릴리스의 상태를 확인할 수 있습니다.

$ kubectl create namespace db
$ helm install postgresql-v1 stable/postgresql --namespace db
$ helm status postgresql-v1

NAME: postgresql-v1
LAST DEPLOYED: Sun Sep 12 12:58:35 2021
NAMESPACE: db
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:

...

** Please be patient while the chart is being deployed **

PostgreSQL can be accessed via port 5432 on the following DNS name from within your cluster:

    postgresql-v1.db.svc.cluster.local - Read/Write connection

...

 

다음으로 pod과 service의 상태를 확인해줍니다.

$ kubectl get pods --namespace db

postgresql-v1-postgresql-0   1/1     Running   0          9m47s
$ kubectl get services --namespace db

NAME                     TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
postgresql-v1            ClusterIP   10.110.15.51   <none>        5432/TCP   14m
postgresql-v1-headless   ClusterIP   None           <none>        5432/TCP   14m

 

 

3.3. Upgrade & Rollback

 

새로운 버전의 차트가 릴리스 되거나 구성을 변경할 때는 다음과 같이 helm upgrade 명령어를 사용하여 업그레이드를 진행합니다.  

$ helm upgrade postgresql-v1 stable/postgresql --namespace db

Release "postgresql-v1" has been upgraded. Happy Helming!
NAME: postgresql-v1
LAST DEPLOYED: Sun Sep 12 13:17:37 2021
NAMESPACE: db
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:

...

** Please be patient while the chart is being deployed **

PostgreSQL can be accessed via port 5432 on the following DNS name from within your cluster:

    postgresql-v1.db.svc.cluster.local - Read/Write connection
    
...

 

반대로 릴리스를 롤백하기 위해서는 helm rollback 명령어를 사용하여 롤백을 진행해줍니다. 롤백할 때는 원하는 revision 번호를 찾아서 지정해주면 됩니다.

$ helm history postgresql-v1 --namespace db

REVISION	UPDATED                 	STATUS    	CHART           	APP VERSION	DESCRIPTION     
1       	Sun Sep 12 12:58:35 2021	superseded	postgresql-8.6.4	11.7.0     	Install complete
2       	Sun Sep 12 13:17:37 2021	deployed  	postgresql-8.6.4	11.7.0     	Upgrade complete
$ helm rollback postgresql-v1 1 --namespace db

Rollback was a success! Happy Helming!

 

 

3.4. Release 삭제하기

 

릴리스를 삭제하기 위해서는 helm uninstall 명령어를 사용해줍니다. uninstall 실행시 릴리스는 바로 삭제되기 때문에 리소스 롤백은 불가능하다는 것을 주의하여 사용해야 합니다.

$ helm uninstall postgresql-v1 --namespace db

release "postgresql-v1" uninstalled

 

출처: https://freestrokes.tistory.com/151 [FREESTROKES DEVLOG:티스토리]

728x90
반응형