Helm은 쿠버네티스(Kubernetes)를 위한 패키지 관리자로,
애플리케이션의 생성, 패키징, 설정, 배포를 자동화하는 도구입니다.
쿠버네티스(Kubernetes)를 사용하다 보면, 복잡한 애플리케이션 배포를 자동화하고 관리할 방법이 필요합니다.
1. Helm 장점
Helm 의 핵심 장점은 패키징 입니다.
Helm 을 통해 애플리케이션을 배포하면 여러 개의 리소스를 하나의 패키지(Chart)로 묶어 배포할 수 있기 때문에 빠르고 일관되게 배포를 할 수 있으며, 버전 관리에 용이합니다. 또한 사용자 편의에 맞게 기존에 배포된 Helm Chart 를 공유하거나 커스터마이징을 할 수 있는데, 이런 장점 때문에 재사용성이 뛰어납니다. 커스터마이징은 values.yaml 파일 등을 사용해 환경 별로 쉽게 기능을 추가/제거 할 수 있습니다.
2. Helm 핵심 개념
a. 패키지(Chart)
쿠버네티스 클러스터에서 애플리케이션이 실행되기 위해 필요한 모든 리소스가 포함되어 있습니다. 쿠버네티스 YAML 파일들을 그룹화한 템플릿과 기타 파일들의 묶음입니다.
b. 저장소(Repository)
차트를 모아두고 공유하는 장소입니다. 여기서 필요한 차트를 검색하고 다운로드할 수 있습니다.
c. 릴리즈(Release)
쿠버네티스 클러스터에서 구동되는 차트 인스턴스입니다. 동일한 차트를 여러 번 설치할 수 있으며, 각 설치는 새로운 릴리즈로 관리됩니다.
3. Helm 차트 구조
Helm Chart는 여러 개의 파일과 디렉터리로 구성되어 있습니다. 기본적인 Chart 구조는 다음과 같습니다:
chart/
├── Chart.yaml # 차트의 메타데이터 정보(이름, 버전 등)
├── values.yaml # 차트의 기본 설정값(사용자 수정 가능)
├── charts/ # 의존성 차트들이 위치하는 디렉토리(서브 차트)
└── templates/ # 쿠버네티스 리소스 템플릿 파일들
├── deployment.yaml
├── service.yaml
├── ingress.yaml
├── _helpers.tpl
└── ...
- Chart.yaml: Chart의 이름, 버전, 설명 등을 포함하는 메타데이터 파일입니다.
- values.yaml: Chart에서 사용할 기본 설정값을 정의하는 파일입니다.
- templates/: Kubernetes 매니페스트 파일(YAML)을 템플릿화하여 저장하는 디렉터리입니다.
- charts/: 다른 Helm Chart를 포함하여 의존성을 관리하는 디렉터리입니다.
4. Helm의 작동 방식
Helm의 작동 방식은 간단합니다.
- 쿠버네티스 클러스터 내부에 Helm Chart를 원하는 Repository에서 검색 후 설치
- 각 설치에 따른 새로운 Release 생성
Helm은 버전 3부터 아키텍처가 변경되었습니다. 버전 2에서 사용되던 Tiller(Pod)가 보안 문제로 제거되었고, 이제 클라이언트에서 직접 API 서버로 요청합니다
Helm 설치 & 사용
리눅스 기준입니다.
# Linux 설치
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 설치 확인
helm version
Helm 기본 명령어 및 예제
1. chart 검색
# helm search repo [키워드]
helm search repo bitnami
2. Helm hub 에서 검색
# helm search hub [키워드]
helm search hub bitnami
3. Helm 저장소 추가
# helm repo add [저장소명] [url]
helm repo add bitnami https://charts.bitnami.com/bitnami
4. 배포된 릴리스 목록 확인
helm repo list
5. 저장소 업데이트
helm repo update
6. Chart 설치
# helm install [릴리즈명] [차트명] -n [네임스페이스]
helm install my-release bitnami/nginx
7. 설치된 차트 확인
helm list -Aa
8. 배포된 릴리스 상세 정보 확인
helm status my-release
9. 배포된 릴리스 업그레이드
# helm upgrade [릴리즈명] [차트경로/이름] -n [네임스페이스]
helm upgrade my-release bitnami/nginx
# 옵션도 함께 가능
# --set service.type=LoadBalancer / -f values.yaml
10. 배포된 릴리즈 히스토리 확인
# helm history [릴리즈명]
helm history my-release
11. 배포된 릴리스 롤백
# helm rollback [릴리즈명] [버전번호]
helm rollback my-release 1
12. 배포된 릴리스 제거
# helm uninstall [릴리즈명]
helm uninstall my-release
감사합니다.
'Infra > Kubernetes' 카테고리의 다른 글
pv / pvc (0) | 2025.03.10 |
---|---|
CNI (0) | 2025.03.06 |
서비스 (0) | 2025.02.21 |
CRI & 컨테이너 런타임 (0) | 2025.02.20 |
파드 생성 과정 (0) | 2025.02.18 |