관리 메뉴

피터의 개발이야기

[kubernetes] Helm 사용법 본문

Kubernetes/Helm

[kubernetes] Helm 사용법

기록하는 백앤드개발자 2022. 9. 17. 23:23
반응형

 

ㅁ 헬렘 설치하기 

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

ㅁ 설치 확인

helm version

 

 

ㅁ 헬렘 자동완성기능 추가

# helm zsh 자동완성기능 추가
$ echo 'source <(helm completion zsh)' >> ~/.zshrc

# helm 이후 탭클릭 시 안내문구
$ helm
completion  -- generate autocompletion scripts for the specified shell
create      -- create a new chart with the given name
dependency  -- manage a chart's dependencies
env         -- helm client environment information
get         -- download extended information of a named release
help        -- Help about any command
history     -- fetch release history
install     -- install a chart
lint        -- examine a chart for possible issues
list        -- list releases
package     -- package a chart directory into a chart archive
plugin      -- install, list, or uninstall Helm plugins
pull        -- download a chart from a repository and (optionally) unpack it in local directory
push        -- push a chart to remote
registry    -- login to or logout from a registry
repo        -- add, list, remove, update, and index chart repositories
rollback    -- roll back a release to a previous revision
search      -- search for a keyword in charts
show        -- show information of a chart
status      -- display the status of the named release
template    -- locally render templates
test        -- run tests for a release
uninstall   -- uninstall a release
upgrade     -- upgrade a release
verify      -- verify that a chart at the given path has been signed and is valid
version     -- print the client version information

 

 

 

[ec2-user@ip-172-31-43-214 ~]$ echo 'source <(helm completion bash)' >> ~/.bashrc
[ec2-user@ip-172-31-43-214 ~]$ helm
completion  (generate autocompletion scripts for the specified shell)                           push        (push a chart to remote)
create      (create a new chart with the given name)                                            registry    (login to or logout from a registry)
dependency  (manage a chart's dependencies)                                                     repo        (add, list, remove, update, and index chart repositories)
env         (helm client environment information)                                               rollback    (roll back a release to a previous revision)
get         (download extended information of a named release)                                  search      (search for a keyword in charts)
help        (Help about any command)                                                            show        (show information of a chart)
history     (fetch release history)                                                             status      (display the status of the named release)
install     (install a chart)                                                                   template    (locally render templates)
lint        (examine a chart for possible issues)                                               test        (run tests for a release)
list        (list releases)                                                                     uninstall   (uninstall a release)
package     (package a chart directory into a chart archive)                                    upgrade     (upgrade a release)
plugin      (install, list, or uninstall Helm plugins)                                          verify      (verify that a chart at the given path has been signed and is valid)
pull        (download a chart from a repository and (optionally) unpack it in local directory)  version     (print the client version information)

 ㅇ 개인적으로 자동완성기능을 통해 작업의 생산성은 200%가 되는 것 같다.

 ㅇ 당장 명령어에 대해 명확하지 않을 때에 자동완성을 통해 정확한 명령어를 작성할 수 있다.

 ㅇ 자동완성기능의 최대 장점은 내가 쓸 수 있는 명령어들을 알 수 있어 교육적으로 나를 성장시켜주는 역할을 하기도 한다.

 

 

ㅁ helm search

헬름은 2가지 소스 유형을 검색하는데 사용할 수 있다.

 

 ㅇ helm search hub는 여러 저장소들에 있는 헬름 차트들을 포괄하는 헬름 허브를 검색한다.

 ㅇ helm search repo는 helm repo add를 사용하여 로컬 헬름 클라이언트에 추가된 저장소들을 검색한다. 검색은 로컬 데이터 상에서 이루어지며, 퍼블릭 네트워크 접속이 필요하지 않다.

 

hub -- Artifact Hub 또는 자체 허브 인스턴스에서 차트 검색
repo -- 차트에서 키워드에 대한 저장소 검색

 ㅇ 자동완성에서도 위처럼 설명을 해 주고 있다.

 

 

ㅁ helm search hub 공개된 차트 검색

$ helm search hub mysql
URL                                               	CHART VERSION	APP VERSION            	DESCRIPTION
https://artifacthub.io/packages/helm/bitnami/mysql	9.3.3        	8.0.30                 	MySQL is a fast, reliable, scalable, and easy t...
https://artifacthub.io/packages/helm/ygqygq2/mysql	4.5.3        	5.7.26                 	Chart to create a Highly available MySQL cluster
https://artifacthub.io/packages/helm/saber/mysql  	8.8.21       	8.0.27                 	Chart to create a Highly available MySQL cluster

 ㅇ 공개된 char의 목록과 설명을 확인할 수 있다.

 

 

ㅁ helm search repo 추가된 저장소 검색

$ helm search repo redmine
NAME           	CHART VERSION	APP VERSION	DESCRIPTION
bitnami/redmine	20.3.3       	5.0.2      	Redmine is an open source management applicatio...
stable/redmine 	14.1.12      	4.1.0      	DEPRECATED A flexible project management web ap...

 

 

ㅁhelm repo 조회 추가 삭제

# 조회
$ helm repo list
NAME   	URL
stable 	https://charts.helm.sh/stable
bitnami	https://charts.bitnami.com/bitnami

# 삭제
$ helm repo remove stable
"stable" has been removed from your repositories

# 추가
$ helm repo add stable https://charts.helm.sh/stable
"stable" has been added to your repositories

 

 ㅇ repo의 자동완성 기능에서 add, remove, list 뿐만 아니라 update, index 명령어도 안내하 주고 있다.

 

 ㅇ repo를 추가하는 과정에서 명령어를 어떻게 해야 할 지 몰라 --help을 요청하였다.

 ㅇ 기본 사용설명과 Flag의 의미도 설명해 주고 있다.

 

  ㅇ repo 삭제 시 탭을 이용하면 현재 저장된 repo 목록을 확인할 수 있었다.

 

 

 

ㅁ helm install 패키지 설치

$ helm install peter bitnami/mongodb
NAME: peter
LAST DEPLOYED: Sat Sep 17 23:08:08 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mongodb
CHART VERSION: 13.1.2
APP VERSION: 6.0.1

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

MongoDB&reg; can be accessed on the following DNS name(s) and ports from within your cluster:

    peter-mongodb.default.svc.cluster.local

To get the root password run:

    export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace default peter-mongodb -o jsonpath="{.data.mongodb-root-password}" | base64 -d)

To connect to your database, create a MongoDB&reg; client container:

    kubectl run --namespace default peter-mongodb-client --rm --tty -i --restart='Never' --env="MONGODB_ROOT_PASSWORD=$MONGODB_ROOT_PASSWORD" --image docker.io/bitnami/mongodb:6.0.1-debian-11-r1 --command -- bash

Then, run the following command:
    mongosh admin --host "peter-mongodb" --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD

To connect to your database from outside the cluster execute the following commands:

    kubectl port-forward --namespace default svc/peter-mongodb 27017:27017 &
    mongosh --host 127.0.0.1 --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD

 ㅇ mongodb 차트를 설치하였다. 차트를 설치하여 새로운 peter release 오브젝트가 생성되었다.

 

 

ㅁ helm status

$ helm status peter
NAME: peter
LAST DEPLOYED: Sat Sep 17 23:08:08 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mongodb
CHART VERSION: 13.1.2
APP VERSION: 6.0.1

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

MongoDB&reg; can be accessed on the following DNS name(s) and ports from within your cluster:

    peter-mongodb.default.svc.cluster.local

To get the root password run:

    export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace default peter-mongodb -o jsonpath="{.data.mongodb-root-password}" | base64 -d)

To connect to your database, create a MongoDB&reg; client container:

    kubectl run --namespace default peter-mongodb-client --rm --tty -i --restart='Never' --env="MONGODB_ROOT_PASSWORD=$MONGODB_ROOT_PASSWORD" --image docker.io/bitnami/mongodb:6.0.1-debian-11-r1 --command -- bash

Then, run the following command:
    mongosh admin --host "peter-mongodb" --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD

To connect to your database from outside the cluster execute the following commands:

    kubectl port-forward --namespace default svc/peter-mongodb 27017:27017 &
    mongosh --host 127.0.0.1 --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD

 ㅇ 차트를  생성하는 데에는 시간이 필요하다.

 ㅇ 우선 도커이미지를 다운받아야 하고 컨테이너를 구성하고 기동하기까지 많은 시간이 소요된다.

 ㅇ helm status [release] 명령어로  생성 완료를 확인 할 수 있다.

 ㅇ status: deployed 를 통해 구성이 완료된 것을 확인 할 수 있다. 

 ㅇ 사용상 유의점도 함께 확인할 수 있다.

 

 ㅇ 자동완성기능에서는 현재 설치된 release목록과 상태를 간략하게 안내해 주고 있다.

 

 

ㅁ 참조

https://helm.sh/ko/docs/intro/install/

 

헬름 설치하기

헬름 설치하고 작동하는 방법 배우기.

helm.sh

https://helm.sh/ko/docs/intro/using_helm/

 

헬름 사용하기

헬름의 기본사항을 설명한다.

helm.sh

반응형
Comments