티스토리 뷰

카테고리 없음

Helm 챠트 사용법!!

미니대왕님 2023. 8. 24. 16:23

# Helm을 설치!

 
 
[root@m-k8s vagrant]# curl -LO https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0tar -zxvf helm-v3.7.0-linux-amd64.tar.gz
 
 
$ tar -zxvf helm-v3.7.0-linux-amd64.tar.gz
 
[root@m-k8s vagrant]# tar -zxvf helm-v3.7.0-linux-amd64.tar.gz
linux-amd64/
linux-amd64/helm
linux-amd64/LICENSE
linux-amd64/README.md
 
 
$ sudo mv linux-amd64/helm /usr/local/bin/helm
[root@m-k8s vagrant]# sudo mv linux-amd64/helm /usr/local/bin/helm
m

# Helm 바이너리를 공식 GitHub 저장소에서 다운로드합니다. 
   아래 명령은 Linux용 Helm 바이너리를 다운로드하는 예시입니다.

Helm 버전 확인:

 
$ helm version
 
[root@m-k8s vagrant]# helm version
version.BuildInfo{Version:"v3.7.0", GitCommit:"eeac83883cb4014fe60267ec6373570374ce770b", GitTreeState:"clean", GoVersion:"go1.16.8"}
 

# Helm은 Kubernetes 애플리케이션을 쉽게 배포하고 관리하기 위한 패키징 도구입니다.

Helm을 사용하면 애플리케이션을 "차트"라고 불리는 패키지로 묶어서 관리할 수 있습니다. 아래는 Helm 차트를

사용하는 기본적인 단계와 명령어에 대한 간략한 소개입니다.

  1. Helm 설치: 먼저 Helm을 설치해야 합니다. 공식 Helm 웹사이트에서 설치 방법을 찾을 수 있습니다. 주로 Helm CLI(Command Line Interface)와 Helm 서버인 Tiller가 설치됩니다. 하지만 최신 버전의 Helm은 Tiller를 사용하지 않는 방향으로 변경되었습니다.

  2. 차트 생성: Helm 차트를 생성하려면 helm create 명령을 사용합니다. 이 명령을 실행하면 기본 구조를 가진 새로운 차트가 생성됩니다.

$ helm create my-chart

[root@m-k8s vagrant]# helm create my-chart
Creating my-chart

 

# 차트 구조: 생성된 차트 디렉토리는 charts, templates, values.yaml 등의 파일과 디렉토리를 포함합니다.

                      charts 디렉토리는 종속 차트를 포함하는 곳이며, templates 디렉토리는 Kubernetes 오브젝트 정의
                      템플릿을 가지고 있습니다.

# 템플릿 수정: templates 디렉토리에 있는 템플릿 파일을 수정하여 Kubernetes 오브젝트를 정의할 수 있습니다.
                     예를 들어, deployment.yaml, service.yaml 등의 파일이 포함될 수 있습니다.

                     값 구성: values.yaml 파일을 사용하여 차트의 설정 값을 정의할 수 있습니다. 이 파일에 정의한 값은
                      템플릿 파일에서 사용될 수 있습니다.

# 차트 패키징: 차트를 패키징하여 배포 가능한 형식으로 만들 수 있습니다.

 
$ helm package my-chart
 
[root@m-k8s vagrant]#  helm package my-chart
Successfully packaged chart and saved it to: /home/vagrant/my-chart-0.1.0.tgz

[root@m-k8s vagrant]# ll
total 13612
-rwx------. 1 root root    11345 Aug 23 17:02 get_helm.sh
-rw-r--r--. 1 root root 13861119 Aug 24 16:08 helm-v3.7.0-linux-amd64.tar.gz
drwxr-xr-x. 2 3434 3434       38 Aug 24 16:08 linux-amd64
drwxr-xr-x. 3 root root       96 Aug 23 17:42 minio
-rw-r--r--. 1 root root    20822 Aug 23 17:25 minio-5.0.13.tgz
drwxr-xr-x. 4 root root       93 Aug 24 16:11 my-chart
-rw-r--r--. 1 root root     3759 Aug 24 16:21 my-chart-0.1.0.tgz
-rw-r--r--. 1 root root    31260 Aug 23 17:41 velero-5.0.2.tgz
 

# 차트 설치: 패키지로 만든 차트를 설치할 수 있습니다.

 
$ [root@m-k8s vagrant]# helm  install my-chart ./my-chart-0.1.0.tgz 
 
NAME: my-chart
LAST DEPLOYED: Thu Aug 24 16:26:30 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
 
1. Get the application URL by running these commands:
  export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=my-chart,app.kubernetes.io/instance=my-chart" -o jsonpath="{.items[0].metadata.name}")
  export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
[root@m-k8s vagrant]# 
 
 

 

#차트 업그레이드: 이미 배포한 차트를 업그레이드하려면 helm upgrade 명령을 사용합니다.

 
$ [root@m-k8s vagrant]# helm upgrade my-chart  ./my-chart
my-chart/           my-chart-0.1.0.tgz  
[root@m-k8s vagrant]# helm upgrade my-chart  ./my-chart-0.1.0.tgz 
Release "my-chart" has been upgraded. Happy Helming!
NAME: my-chart
LAST DEPLOYED: Thu Aug 24 16:27:49 2023
NAMESPACE: default
STATUS: deployed
REVISION: 2
NOTES:
1. Get the application URL by running these commands:
  export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=my-chart,app.kubernetes.io/instance=my-chart" -o jsonpath="{.items[0].metadata.name}")
  export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
[root@m-k8s vagrant]# 
 
 

 

#차트 삭제: 차트를 삭제할 때는 helm uninstall 명령을 사용합니다.

 
$ helm uninstall my-release
 

위의 단계는 Helm을 기본적으로 사용하는 방법을 보여줍니다. 더 복잡한 설정이나 특수한 상황에서는 Helm 공식 문서나 다른 자료를 참고하는 것이 좋습니다. Helm은 더 많은 기능과 옵션을 제공하므로 심층적으로 공부해보시기 바랍니다.

 

# helm 조회

 
[root@m-k8s vagrant]# helm  ls
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS CHART            APP VERSION                 
minio           default           1               2023-08-23 17:43:11.905030268 +0900 KST failed minio-5.0.13     RELEASE.2023-07-07T07-13-57Z
my-chart        default         2               2023-08-24 16:27:49.190050422 +0900 KST deployemy-chart-0.1.0   1.16.0                      
[root@m-k8s vagrant]# 
[root@m-k8s vagrant]# 
 

 

댓글