날씨 정보를 불러오는 중...

Helm 차트 생성기

Helm 차트의 Chart.yamlvalues.yaml 기본 골격을 만듭니다.

Chart.yaml
values.yaml
차트 구조와 명령어
Helm을 왜 쓰나요?

YAML을 그냥 kubectl apply 하면 되는데 왜 Helm이 필요한지 의문이 들 수 있습니다. 핵심은 같은 앱을 환경별로 다르게 배포할 때입니다. 개발/스테이징/운영에서 replica 수, 이미지 태그, 도메인만 다르고 나머지는 같다면, YAML을 세 벌 복사하는 대신 템플릿 하나에 values.yaml만 바꿔 끼우면 됩니다.

helm install myapp ./myapp -f values-prod.yaml
helm install myapp-dev ./myapp -f values-dev.yaml
차트 디렉터리 구조
myapp/
├── Chart.yaml          # 차트 이름·버전 등 메타데이터
├── values.yaml         # 기본값 (사용자가 덮어쓸 수 있는 설정)
├── templates/
│   ├── deployment.yaml # {{ .Values.replicaCount }} 같은 템플릿
│   ├── service.yaml
│   ├── ingress.yaml
│   └── _helpers.tpl    # 이름 생성 등 공통 함수
└── charts/             # 의존 차트

templates/ 안의 파일에서 .Values.replicaCount처럼 참조하면 values.yaml의 값이 들어갑니다.

version과 appVersion의 차이
  • version차트 자체의 버전. 템플릿을 고치면 올립니다.
  • appVersion담고 있는 애플리케이션의 버전. 앱을 1.0.0에서 1.1.0으로 올렸을 때 바꿉니다.

둘은 독립적입니다. 앱은 그대로인데 차트 템플릿만 고쳤다면 version만 올라갑니다.

배포 전에 결과를 미리 보세요

Helm은 템플릿이라 실수하기 쉽습니다. 적용 전에 렌더링 결과를 확인하는 습관이 중요합니다.

# 실제 적용 없이 렌더링된 YAML만 출력
helm template myapp ./myapp

# 클러스터에 붙어서 검증까지 (실제 설치는 안 함)
helm install myapp ./myapp --dry-run --debug

# 문법·구조 검사
helm lint ./myapp
업그레이드와 롤백
helm upgrade myapp ./myapp
helm history myapp          # 배포 이력
helm rollback myapp 1       # 1번 리비전으로 되돌리기
helm uninstall myapp

Helm은 배포할 때마다 리비전을 기록해서 롤백이 쉽습니다. kubectl apply만 쓸 때보다 나은 점 중 하나입니다.

이 도구는 골격만 만들어 줍니다. templates/ 안의 파일은 Deployment 생성기, Service 생성기로 만든 YAML을 넣고 값만 {{ .Values.x }}로 바꾸면 됩니다. 아니면 helm create 이름으로 완성된 예제를 받아 수정하는 편이 빠릅니다.

← 도구 전체 보기