쿠버네티스는 리소스가 여러 개 필요한 경우가 많다.
- 파드 노출을 담당하는 서비스(Service)
- 애플리케이션 설정에 관련된 컨피그맵(ConfigMap)
- 기밀 정보를 다루는 시크릿(Secret)
다양한 리소스를 각각 관리하지 않고 하나의 패키지로 관리하는 도구가 헬름(Helm)이다.
주요 구성 요소
- 헬름 차트(Helm Chart):
- 여러 리소스의 묶음
- 헬름 차트 하나로 여러 어플리케이션을 일괄 설치 가능
- Chart.yaml: 차트에 대한 정보가 담긴 yaml 파일
- values.yaml: 차트의 기본 템플릿 변수 파일
- charts/: 차트에 종속된 차트들을 포함하는 디렉터리
- crds/: 커스텀 자원 정의
- templates/: values 파일과 같이 유효한 쿠버네티스 매니페스트 파일을 생성하는 템플릿
- 헬름 리포지토리(Helm Repository)
- 헬름 차트를 저장하고 공유하는 저장소
- yum과 유사
- 많은 솔루션 업체들이 직접 헬름 리포지토리를 제공함
- ex) ArtifactHub 다양한 헬름 차트 허브 제공
- 헬름 템플릿(Helm Template)
- 설치와 관련한 파일들 관리한다.
- 일정한 형식 또는 포맷을 의미
- 이름, 날짜 등의 특정 변수만 수정하여 해당 파일을 사용할 수 있다.
- 여러 템플릿 파일에서 공통으로 사용하는 변수를 단일 values.yaml 파일에서 관리한다.
해당 파일만 수정하면 전체 템플릿 파일에서 사용하는 변수를 한꺼번에 수정할 수 있다. - Ex) favoriteDrink: coffee
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello world"
drink: {{ .Value.favoriteDrink }}
helm install geared-marsupi ./mychart --dry-run --debug
이렇게 치면 drink에 coffee라는 변수가 들어간 모습을 볼 수 있다.
헬름 설치
curl -fsSL -o get_heml.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
./get_heml.sh
Downloading https://get.helm.sh/helm-v3.14.1-darwin-arm64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
Password:
helm installed into /usr/local/bin/helm
nhn@AL01600616 ~ helm version
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /Users/nhn/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /Users/nhn/.kube/config
version.BuildInfo{Version:"v3.13.1", GitCommit:"3547a4b5bf5edb5478ce352e18858d8a552a4110", GitTreeState:"clean", GoVersion:"go1.21.3"}
- helm repo add: 애플리케이션 설치에 사용되는 헬름 리포지토리를 로컬 환경에 추가한다.
- helm pull: 헬름 차트 파일을 로컬 호스트로 내려받는다.
- cp values.yaml my-values.yaml: 원본 템플릿 변수 파일의 이력을 관리하기 위해 새 파일로 복사
- helm install {helm name} -f my-values.yaml: 애플리케이션 설치
- helm ls: 헬름 차트 목록 확인
- helm get manifest: 주로 디버깅 용도로 사용하며, 현재 실행 중인 헬름 차트의 전체 yaml 파일 목록 및 상세 설정을 확인할 수 있다.
- helm upgrade: 기존 헬름 차트의 변수 등을 수정해서 재배포한다.
- helm delete: 헬름 차트를 삭제한다.
'Kubernetes > 활용' 카테고리의 다른 글
Helm 헬름 활용(3) (0) | 2024.02.19 |
---|---|
Helm 헬름 활용(2) (0) | 2024.02.19 |
잘못된 pod 생성 트러블 슈팅 (0) | 2024.02.15 |
쿠버네티스 트러블슈팅의 기본 프로세스 (0) | 2024.02.15 |
yaml 파일을 이용한 쿠버네티스 오브젝트 관리 (0) | 2024.02.08 |