Kubernetes

Kubernetes 기초 - Helm(1)

사실 나도 모름 2024. 1. 25. 02:40
  1. Helm 소개
  2. Helm 설치
  3. Helm 구성
  4. Helm 사용
  5. Helm 차트 구조

1. Helm 소개

https://helm.sh/

 

Helm

Helm - The Kubernetes Package Manager.

helm.sh

 

 

Helm은 쿠버네티스 패키지 매니저다.

Helm을 통해 애플리케이션을 가져와서 실행하고, 내가 만들어서 배포하는 등 Repository로써의 역할을 한다.

Repository라고 하면 우리가 잘아는 CentOS와 같은 RedHat 계열의 yum 저장소, Ubuntu와 같은 Debian 계열의 apt 저장소가 대표적인 예라고 할 수 있다.

Helm은 Kubernetes에서 가장 많이 사용되는 Repository(저장소)로 배포, 업데이트, 버전 관리, 등 애플리케이션을 효과적으로 패키지화하고 관리할 수 있는 강력한 도구로 널리 사용되고 있다.

더군다나 Helm은 CNCF 프로젝트 중 하나로서 개발과 지원이 커뮤니티에 의해 활발히 이루어지고 있다.

 

 

 

 


2. Helm 설치

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

 

헬름 설치하기

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

helm.sh

 

 

Helm도 다양한 운영체제에서 설치하도록 지원한다.

Script, hombrew(MacOS), chocolatey/Scoop(Windows), Apt(Debian, Ubuntu), dnf/yum(Fedora), Snap, pkg(freeBSD) 등 여러 버전을 지원하니 자신에게 맞는 방법을 이용하여 설치하면 된다.

 

나는 Script를 활용하여 설치할 것이다.

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 명령어 자동 완성을 위한 명령

source <(helm completion bash)
echo "source <(helm completion bash)" >> ~/.bashrc

 

 

helm의 사용 방법에 대한 자세한 정보는 --help를 통해 확인 가능하다.

helm --help

 

 

 

 


3. Helm 구성

  • Charts : helm 패키지. k8s application, tool, service를 구동하는데 필요한 resource의 집합(mariadb, nginx, redis 등)
  • Repository : helm chart를 모아두고 공유하는 저장소
    • bitnami(https://bitnami.com/stacks)
    • https://bitnami.com/stacks/helm
    • Bitname는 가상 어플라이언스 및 웹 애플리케이션, 개발 스택용 소프트웨어 패키지 및 설치 라이브러리

Repository 추가/제거/확인하는 법

helm repo [add|remove|list] [Name] [URL]

 

 

Helm Repository를 확인하는 명령

helm repo list

아무 것도 없다.

 

뭘 추가한 것이 없으니 아무것도 없다.

리포지토리를 추가해보자.

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo list

bitnami라는 차트를 추가

 

https://bitnami.com/stacks/helm

 

Helm Charts

Redmine Bug Tracking,Project Management,Developer Tools,Ruby on Rails,Phusion Passenger,Apache,MariaDB,redmine

bitnami.com

 

참고로 Bitnami는 우리가 잘 아는 대부분의 애플리케이션이 포함된 리포지토리다.

궁금하면 helm search repo를 입력하면 전체 목록을 볼 수 있다.

 

생성한 리포지토리 삭제하는 법

helm repo remove bitnami

 

 

 

 


4. Helm 사용

Helm 하위 명령어

명령어 의미
helm search Helm Hub 및 Helm Repositories에서 차트 검색
helm install Kubernetes에 차트 설치
helm uninstall 실행중인 차트 삭제
helm list 주어진 kubernetes 네임 스페이스의 모든 릴리즈 나열
helm show 차트에 대한 정보 출력
helm inspect 차트에 대한 상세 구성 정보 출력
helm upgrade 릴리스를 기본 차트의 새 버전으로 업그레이드
helm pull Helm 허브 또는 Helm 저장소에서 차트 다운로드 및 추출
helm create 새로운 Helm 차트를 기본 차트 구조 형태로 생성
helm lint 차트의 유효성 검증
helm upgrade 실행중인 차트를 업그레이드
helm rollback 실행중인 차트를 이전 버전으로 복구
helm repo 차트 저장소 추가, 업데이트, 색인 생성, 나열 또는 제거
helm package 현재 폴더에 차트 아카이브 생성

 

 

리포지토리에서 nginx 차트가 있는 지 확인하는 방법

helm search repo nginx

nginx 차트

 

 

차트에 대한 정보를 보는 방법

helm show chart bitnami/nginx

 

 

 

nginx차트의 values.yaml파일의 구성 정보를 보여주는 명령

helm inspect values bitnami/nginx

 

 

inspect의 하위 명령들

  • all : 차트의 전체 정보 출력
  • chart : 차트의 definition을 출력
  • crds : 차트의 CRDs를 출력
  • readme : 차트의 README를 출력
  • values : 차트의 값을 출력

 

values 로 정보를 출력하면 bitnami/nginx에 대한 모든 세부적인 설정과 service, configmap, secret 등 기본으로 구성되어 있는 리소스들의 정보를 볼 수 있다.

 

 

이러한 정보를 바탕으로 helm install로 해당 애플리케이션 차트 아카이브를 Kubernetes에서 실행할 수 있다.

helm install webserver bitnami/nginx

 

 

values에 의하면 bitnami/nginx 내부에 service 기본 타입이 LoadBalancer로 되어있다.

하지만 나는 다르게 값을 조정하여 사용하고 싶다면 그것도 가능하다.

helm install webserver --set service.type=NodePort bitnami/nginx

실행

 

실행을 하면 어떻게 내부에서 실행되고 있는지 정보를 화면에 출력한다.

 

내부에서 무엇이 실행되었는지 확인하면 다음과 같다.

bitnami/nginx 실행 후 생성된 리소스

 

차트를 실행하면 deployment와 ClusterIP, NodePort가 각각 생성된 것을 볼 수 있다.

잘 실행된다.

 

생성된 NodePort로 접속을 시도했을 때 해당 포트로 잘 접속이 되는 것을 볼 수 있다.

 

 

여기서 실행중인 차트 정보를 확인하는 방법은 다음과 같다.

helm list

webserver 하나 실행 중

 

revision 정보가 있는 것으로 보아 버전을 업데이트하거나 rollback하는 일도 가능할 것이라 예측이 가능하다.

 

 

실행한 helm 차트 삭제

helm uninstall webserver

 

 

values.yaml파일을 수정하여 실행하는 방법

helm inspect values bitnami/nginx > nginx_values.yaml

 

해당 리소스 정보를 파일로 생성했으면 vim 에디터로 556라인에 있는 type을 NodePort로 변경하여 저장한다.

 

 

변경된 정보로 차트 실행

helm install webserver -f nginx_values.yaml  bitnami/nginx

동일하게 실행된다.
생성된 리소스

 

이전과 동일하게 실행이 된다.

하지만 이번에는 값을 커맨드라인에서 바꾸지 않고 수정된 yaml 파일을 적용하여 실행시켰다.

단순히 한두가지의 정보만 수정한다면 커맨드라인에서 수정하는 것이 편하지만 변경할 부분이 많다면 방금과 같은 방식으로 yaml파일 자체를 수정하여 실행하는 것이 더 편하다.

 

 

리소스 정리

helm uninstall webserver

 

 

 


5. Helm 차트 구조

helm pull bitnami/nginx

 

차트를 내려 받으면 다음과 같은 .tgz 파일이 생긴다.

.tgz 파일

 

압축을 해제한다.

tar zxvf nginx-15.9.1.tgz

압축해제
nginx 디렉토리 생성

 

 

해당 디렉토리의 구조를 tree 명령으로 확인한다.

tree nginx

nginx 디렉토리 내부 구조

 

우리가 inspect 명령으로 알아본 values.yaml파일의 정보와 그 외 모든 리소스들의 정보들이 들어있다.

 

 


 

 

아래 영상을 참조하였습니다.

https://youtube.com/playlist?list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&si=QfnuyP_2OpoDOsX1

 

[따배쿠 Advance] 쿠버네티스 심화 시리즈

 

www.youtube.com

 

'Kubernetes' 카테고리의 다른 글

Kubernetes 기초 - Helm(3)  (0) 2024.01.30
Kubernetes 기초 - Helm(2)  (0) 2024.01.27
Kubernetes 기초 - Custom Resources  (0) 2024.01.24
kubernetes 기초 - RBAC(2)  (0) 2024.01.24
Kubernetes 기초 - RBAC(1)  (0) 2024.01.23