Helm charts

Yu Sang Min·2025년 7월 6일

CKA

목록 보기
96/110
post-thumbnail

✅ Helm Chart 구성요소 요약

📦 1. Helm Chart란?

  • Helm이 Kubernetes에 애플리케이션을 배포할 수 있도록 YAML 템플릿과 메타정보를 패키징한 디렉토리
  • 일종의 자동화된 배포 시나리오를 기술한 “설명서”

📁 2. Helm Chart 기본 디렉토리 구조

mychart/
├── Chart.yaml          # 차트 메타데이터 (중요!)
├── values.yaml         # 사용자 설정값 (변수)
├── templates/          # 쿠버네티스 리소스 템플릿
│   ├── deployment.yaml
│   └── service.yaml
├── charts/             # 의존성 차트 (서브차트)
├── README.md           # 문서
├── LICENSE             # 라이센스

🧾 Chart.yaml 설명

필드설명
apiVersion차트 API 버전 (v1 for Helm 2, v2 for Helm 3)
name차트 이름
version차트 자체의 버전 (앱 버전과는 다름!)
appVersion배포하려는 실제 애플리케이션 버전 (예: WordPress 6.4.2)
description차트 설명
typeapplication (기본값) 또는 library
dependencies이 차트가 의존하는 다른 차트들 (예: MariaDB)
keywords검색용 키워드
maintainers관리자의 이름과 이메일
home, icon공식 홈페이지 URL, 아이콘 이미지 주소 (옵션)

💡 apiVersion 필드 핵심 정리

Helm 버전apiVersion 값설명
Helm 2v1의존성, 타입 등의 필드 없음
Helm 3v2의존성(dependencies), 타입(type) 등 새로운 기능 도입

✅ 앞으로는 대부분 Helm 3 기준으로 v2 사용


🧰 values.yaml의 역할

  • 템플릿에서 사용하는 변수값을 정의하는 설정 파일
  • Helm Chart 사용자 입장에서 유일하게 자주 수정하는 파일
replicaCount: 3
image:
  repository: nginx
  tag: "1.17"
service:
  type: NodePort
  port: 80

이 값들은 templates/deployment.yaml 같은 파일에서 {{ .Values.image.repository }} 형태로 주입됨


🧠 Helm의 템플릿 렌더링 과정 요약

  1. 템플릿 파일(templates/*.yaml)에 Go 템플릿 문법 포함
  2. values.yaml의 설정값 주입
  3. Helm이 이 조합으로 최종 YAML 생성
  4. kubectl apply로 클러스터에 배포

🔗 Chart 의존성: dependencies

  • 복잡한 애플리케이션 (예: WordPress + MariaDB)은 여러 컴포넌트를 필요로 함
  • 각 컴포넌트를 별도 차트로 만들고, Chart.yamldependencies로 선언 가능
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 앱을 설치하기 위한 재사용 가능한 패키지로, 템플릿과 설정값을 분리하여 유지보수성과 확장성을 높인다.

profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글