Helm

지원 버전: Helm v3.x 마지막 업데이트: 2026년 2월 23일

개요

Helm은 Kubernetes 애플리케이션을 패키징, 배포, 관리하기 위한 패키지 매니저입니다. Chart라는 패키지 형식을 사용하여 복잡한 애플리케이션을 쉽게 정의, 설치, 업그레이드할 수 있습니다.

Helm 핵심 개념

Helm v3 아키텍처

┌─────────────────────────────────────────────────────────┐
│                      Helm Client                         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────┐  │
│  │   helm CLI  │  │  Chart SDK  │  │  Repository API │  │
│  └──────┬──────┘  └──────┬──────┘  └────────┬────────┘  │
└─────────┼────────────────┼──────────────────┼───────────┘
          │                │                  │
          ▼                ▼                  ▼
┌─────────────────────────────────────────────────────────┐
│                  Kubernetes API Server                   │
│  ┌─────────────────────────────────────────────────────┐│
│  │              Release Secrets (저장소)                ││
│  │         sh.helm.release.v1.<name>.v<ver>            ││
│  └─────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────┘

Helm v3에서는 Tiller가 제거되어 클라이언트가 Kubernetes API와 직접 통신합니다.

핵심 구성 요소

구성 요소
설명

Chart

Kubernetes 리소스를 정의하는 패키지

Release

클러스터에 설치된 Chart 인스턴스

Repository

Chart를 저장하고 공유하는 저장소

Values

Chart 템플릿에 전달되는 구성 값

Chart 구조

기본 디렉토리 구조

Chart.yaml 예시

Helm 명령어

저장소 관리

Chart 설치 및 관리

릴리스 관리

Chart 개발

템플릿 작성

기본 문법

내장 객체

조건문과 반복문

헬퍼 템플릿

유용한 함수들

Values 관리

values.yaml 구조화

환경별 Values 파일

의존성 관리

Chart 의존성 정의

의존성 명령어

서브차트 값 전달

Hooks

Hook 유형

Hook
설명

pre-install

템플릿 렌더링 후, 리소스 생성 전

post-install

모든 리소스 생성 후

pre-delete

삭제 요청 후, 리소스 삭제 전

post-delete

모든 리소스 삭제 후

pre-upgrade

업그레이드 요청 후, 리소스 업데이트 전

post-upgrade

모든 리소스 업데이트 후

pre-rollback

롤백 요청 후, 리소스 복원 전

post-rollback

모든 리소스 복원 후

test

helm test 실행 시

Hook 삭제 정책

정책
설명

before-hook-creation

새 Hook 실행 전 이전 Hook 삭제

hook-succeeded

Hook 성공 시 삭제

hook-failed

Hook 실패 시 삭제

테스트

테스트 정의

GitOps 통합

ArgoCD Application

Flux HelmRelease

보안 모범 사례

시크릿 관리

RBAC 템플릿

문제 해결

디버깅

일반적인 오류

오류
원인
해결 방법

Error: INSTALLATION FAILED: cannot re-use a name

같은 이름의 릴리스 존재

helm uninstall 또는 다른 이름 사용

Error: rendered manifests contain a resource that already exists

리소스 충돌

기존 리소스 삭제 또는 --force 사용

Error: UPGRADE FAILED: has no deployed releases

실패한 릴리스 상태

helm rollback 또는 --force 사용

Error: template: ... not defined

정의되지 않은 템플릿

_helpers.tpl 확인

참고 자료

마지막 업데이트