728x90
반응형
Helm (헬름) 이란?
헬름은 쿠버네티스 애플리케이션 관리하는 도구이다. 헬름 차트는 복잡한 쿠버네티스 애플리케이션도 편리하게 정의하여 설치하거나 업그레이드할 수 있다.
아키텍쳐
주요 특징
복잡성 관리
차트는 매우 복잡한 애플리케이션도 표현하고, 반복적인 애플리케이션 설치를 제공하며, 단일 권한으로 서비스할 수 있다.
쉬운 업데이트
즉시(in-place) 업그레이드와 커스텀 훅을 통해 업데이트하는 수고를 줄여줄 수 있다.
간단한 공유
차트는 버전 관리, 공유, 퍼블릭이나 프라이빗 서버 호스팅이 편리하다
롤백
helm rollback을 사용하여 릴리스를 예전 버전으로 간편하게 되돌릴 수 있다.
주요 개념 3가지
차트
쿠버네티스 애플리케이션의 인스턴스를 생성하는 데에 필요한 정보의 꾸러미이다.
설정
릴리스 가능한 객체를 생성하기 위해 패키징된 차트로 병합될 수 있는 설정 정보를 가진다.
릴리스
차트의 구동중 인스턴스이며, 특정 설정이 결합되어 있다.
설치방법
설치방법은 snap, source 등 여러가지 방법이 있지만 쉘 스크립트 방식으로 설치를 해본다.
1. 쉘 스크립트 다운로드
guru@master:~/temp$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
guru@master:~/temp$ chmod 700 get_helm.sh
guru@master:~/temp$ ls -al
합계 20
drwxrwxr-x 2 guru guru 4096 12월 28 20:18 .
drwxr-xr-x 17 guru guru 4096 12월 28 20:18 ..
-rwx------ 1 guru guru 11156 12월 28 20:18 get_helm.sh
2. 쉘 스크립트 실행
guru@master:~/temp$ ./get_helm.sh
Downloading https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
[sudo] guru의 암호:
helm installed into /usr/local/bin/helm
3. 버전 확인
guru@master:~/temp$ helm version
version.BuildInfo{Version:"v3.7.2", GitCommit:"663a896f4a815053445eec4153677ddc24a0a361", GitTreeState:"clean", GoVersion:"go1.16.10"}
'helm search': 차트 찾기
1. 헬름 허브 검색
helm search hub는 여러 저장소들에 있는 헬름 차트들을 포괄하는 헬름 허브를 검색한다.
guru@master:~$ helm search hub wordpress
URL CHART VERSION APP VERSION DESCRIPTION
https://artifacthub.io/packages/helm/kube-wordp... 0.1.0 1.1 this is my wordpress package
https://artifacthub.io/packages/helm/bitnami/wo... 12.2.7 5.8.2 Web publishing platform for building blogs and ...
https://artifacthub.io/packages/helm/bitnami-ak... 12.2.7 5.8.2 Web publishing platform for building blogs and ...
...
2. 로컬에서 검색
helm search repo는 helm repo add를 사용하여 로컬 헬름 클라이언트에 추가된 저장소들을 검색한다. 검색은 로컬 데이터 상에서 이루어지며, 퍼블릭 네트워크 접속이 필요하지 않다.
guru@master:~$ helm search repo brigade
Error: no repositories configured
guru@master:~$ helm repo add brigade https://brigadecore.github.io/charts
"brigade" has been added to your repositories
guru@master:~$ helm search repo brigade
NAME CHART VERSION APP VERSION DESCRIPTION
brigade/brigade 1.10.0 v1.5.0 Brigade provides event-driven scripting of Kube...
brigade/brigade-github-app 0.8.0 v0.4.1 The Brigade GitHub App, an advanced gateway for...
brigade/brigade-github-oauth 0.4.0 v0.20.0 The legacy OAuth GitHub Gateway for Brigade
brigade/brigade-k8s-gateway 0.3.0 A Helm chart for Kubernetes
brigade/brigade-project 1.1.0 v1.0.0 Create a Brigade project
brigade/kashti 0.7.0 v0.4.0 A Helm chart for Kubernetes
3. 차트 업데이트
guru@master:~$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "brigade" chart repository
Update Complete. ⎈Happy Helming!⎈
'helm install': 패키지 설치
기본 명령어
helm install <릴리즈명> <차트명> <옵션>
# 네임스페이스 지정시
helm install <릴리즈명> <차트명> --namespace <네임스페이스>
1. 설치
happy-panda 차트 이름으로 test-helm의 namespace에 bitnami/mariadb를 설치해보도록 한다.
guru@master:~$ helm install happy-panda bitnami/mariadb --namespace test-helm --create-namespace \
--set auth.rootPassword="a1234",primary.persistence.enabled=false,secondary.persistence.enabled=false
NAME: happy-panda
LAST DEPLOYED: Tue Dec 28 20:58:04 2021
NAMESPACE: test-helm
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mariadb
CHART VERSION: 10.1.1
APP VERSION: 10.5.13
** Please be patient while the chart is being deployed **
Tip:
Watch the deployment status using the command: kubectl get pods -w --namespace test-helm -l app.kubernetes.io/instance=happy-panda
Services:
echo Primary: happy-panda-mariadb.test-helm.svc.cluster.local:3306
Administrator credentials:
Username: root
Password : $(kubectl get secret --namespace test-helm happy-panda-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 --decode)
To connect to your database:
1. Run a pod that you can use as a client:
kubectl run happy-panda-mariadb-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mariadb:10.5.13-debian-10-r32 --namespace test-helm --command -- bash
2. To connect to primary service (read/write):
mysql -h happy-panda-mariadb.test-helm.svc.cluster.local -uroot -p my_database
To upgrade this helm chart:
1. Obtain the password as described on the 'Administrator credentials' section and set the 'auth.rootPassword' parameter as shown below:
ROOT_PASSWORD=$(kubectl get secret --namespace test-helm happy-panda-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 --decode)
helm upgrade --namespace test-helm happy-panda bitnami/mariadb --set auth.rootPassword=$ROOT_PASSWORD
2. 상태 확인
guru@master:~$ helm status happy-panda --namespace test-helm
NAME: happy-panda
LAST DEPLOYED: Tue Dec 28 20:58:04 2021
NAMESPACE: test-helm
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mariadb
CHART VERSION: 10.1.1
APP VERSION: 10.5.13
** Please be patient while the chart is being deployed **
Tip:
Watch the deployment status using the command: kubectl get pods -w --namespace test-helm -l app.kubernetes.io/instance=happy-panda
Services:
echo Primary: happy-panda-mariadb.test-helm.svc.cluster.local:3306
Administrator credentials:
Username: root
Password : $(kubectl get secret --namespace test-helm happy-panda-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 --decode)
To connect to your database:
1. Run a pod that you can use as a client:
kubectl run happy-panda-mariadb-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mariadb:10.5.13-debian-10-r32 --namespace test-helm --command -- bash
2. To connect to primary service (read/write):
mysql -h happy-panda-mariadb.test-helm.svc.cluster.local -uroot -p my_database
To upgrade this helm chart:
1. Obtain the password as described on the 'Administrator credentials' section and set the 'auth.rootPassword' parameter as shown below:
ROOT_PASSWORD=$(kubectl get secret --namespace test-helm happy-panda-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 --decode)
helm upgrade --namespace test-helm happy-panda bitnami/mariadb --set auth.rootPassword=$ROOT_PASSWORD
'helm list': 차트 리스트
리스트 확인
guru@master:~$ helm list --namespace test-helm
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
happy-panda test-helm 1 2021-12-28 20:58:04.232767233 +0900 KST deployed mariadb-10.1.1 10.5.13
'helm uninstall': 릴리스 언인스톨하기
guru@master:~$ helm uninstall happy-panda --namespace test-helm
release "happy-panda" uninstalled
728x90
반응형
'DevOps > Kubernetes' 카테고리의 다른 글
Kubernetes::스케쥴링 (Scheduling) (0) | 2023.12.19 |
---|---|
Kubernetes::핵심 개념 (Core Concepts) (0) | 2023.12.19 |
Kubernetes 대시보드 설치 (0) | 2021.12.08 |
Kubernetes - canary deployment (카나리 배포) (0) | 2021.12.03 |
Kubernetes - Ingress (인그레스) (0) | 2021.12.01 |