mychart/
├── Chart.yaml # 차트 메타데이터 (중요!)
├── values.yaml # 사용자 설정값 (변수)
├── templates/ # 쿠버네티스 리소스 템플릿
│ ├── deployment.yaml
│ └── service.yaml
├── charts/ # 의존성 차트 (서브차트)
├── README.md # 문서
├── LICENSE # 라이센스
| 필드 | 설명 |
|---|---|
apiVersion | 차트 API 버전 (v1 for Helm 2, v2 for Helm 3) |
name | 차트 이름 |
version | 차트 자체의 버전 (앱 버전과는 다름!) |
appVersion | 배포하려는 실제 애플리케이션 버전 (예: WordPress 6.4.2) |
description | 차트 설명 |
type | application (기본값) 또는 library |
dependencies | 이 차트가 의존하는 다른 차트들 (예: MariaDB) |
keywords | 검색용 키워드 |
maintainers | 관리자의 이름과 이메일 |
home, icon | 공식 홈페이지 URL, 아이콘 이미지 주소 (옵션) |
apiVersion 필드 핵심 정리| Helm 버전 | apiVersion 값 | 설명 |
|---|---|---|
| Helm 2 | v1 | 의존성, 타입 등의 필드 없음 |
| Helm 3 | v2 | 의존성(dependencies), 타입(type) 등 새로운 기능 도입 |
✅ 앞으로는 대부분 Helm 3 기준으로
v2사용
replicaCount: 3
image:
repository: nginx
tag: "1.17"
service:
type: NodePort
port: 80
이 값들은
templates/deployment.yaml같은 파일에서{{ .Values.image.repository }}형태로 주입됨
templates/*.yaml)에 Go 템플릿 문법 포함kubectl apply로 클러스터에 배포Chart.yaml에 dependencies로 선언 가능dependencies:
- name: mariadb
version: 11.0.0
repository: https://charts.bitnami.com/bitnami
➤ 이 방식은 MariaDB 템플릿을 직접 복사해서 넣는 것보다 유지보수에 강함
| 구분 | 포인트 |
|---|---|
| Chart Version과 App Version은 다르다 | Chart는 템플릿 구조, App은 실제 배포 대상 소프트웨어 |
| Helm은 Git처럼 상태를 추적한다 | Install → Upgrade → Rollback 시 "Revision"이 생긴다 |
| chart.yaml = Helm의 메타정보, values.yaml = 사용자 설정값 | 두 파일은 역할이 분명히 다르다 |
| Helm 3 = 더 간결, 더 안전 | Helm 2의 Tiller는 제거되고, apiVersion: v2로 통일됨 |
Helm Chart는 Kubernetes 앱을 설치하기 위한 재사용 가능한 패키지로, 템플릿과 설정값을 분리하여 유지보수성과 확장성을 높인다.