Helm을 본격적으로 쓰기 전에, Helm이 “무엇을 어떻게 관리하는 도구인지”를 구성요소 단위로 정확히 잡고 가면 이후 실습(install/upgrade/rollback)이 훨씬 깔끔해집니다. 이 글은 강의 스크립트 흐름대로 Helm의 핵심 개념을 CLI → Chart → Release/Revision → Repository → Metadata 저장 방식 순서로 정리합니다.
1) Helm CLI: 우리가 실제로 쓰는 인터페이스
Helm은 기본적으로 로컬에 설치된 helm CLI로 클러스터에 작업을 요청합니다.
자주 쓰는 대표 액션:
- install (차트 설치)
- upgrade (업그레이드)
- rollback (이전 상태로 복구)
- uninstall (삭제)
- status/history/get (상태/이력/매니페스트 확인)
확인부터:
helm version
helm help
2) Chart: “쿠버네티스 오브젝트 묶음 + 설치 방법” 패키지
Chart는 Helm에서 배포 단위가 되는 “패키지”입니다.
- 여러 Kubernetes 오브젝트(Deployment, Service, PVC, Secret, Ingress 등)를
- 어떤 규칙으로 생성/배치할지에 대한 “설계도”를
- 파일 묶음으로 들고 있는 형태
즉 Helm은 “YAML 여러 장을 각각 apply”하는 대신, Chart라는 패키지 하나를 설치해서 애플리케이션을 올립니다.
Chart 기본 디렉토리 구조(가장 흔한 형태)
my-chart/
Chart.yaml # 차트 메타 정보(이름, 버전 등)
values.yaml # 사용자/환경별로 바꿀 설정값 기본값
templates/ # 실제 K8s 리소스 템플릿(Deployment/Service/Ingress 등)
charts/ # 의존 차트(서브차트)
.helmignore # 빌드/패키징에서 제외할 파일
3) 템플레이팅(Templating)과 values.yaml: “바꿀 값은 한 곳에서”
강의에서 말한 핵심이 이겁니다:
- Chart의
templates/*.yaml에는 고정 값이 아니라 템플릿 표현식이 들어가고 - 실제 값은 보통
values.yaml에서 주입됩니다.
예를 들어 Deployment 템플릿이 이런 식으로 작성됩니다(개념 예시):
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
spec:
replicas: {{ .Values.replicaCount }}
template:
spec:
containers:
- name: app
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
그리고 values.yaml은 이런 식으로 “입력값”을 제공합니다:
replicaCount: 2
image:
repository: nginx
tag: "1.27"
현업 체감 포인트:
- 보통 우리는 차트를 “직접 개발”하기보다 공개 차트를 가져다 쓰는 경우가 많고
- 그럴 때 실질적으로 만지는 건 대부분
values.yaml입니다. - 즉
values.yaml은 “Helm 차트의 설정 파일/입력 파일”에 가깝습니다.
4) Release: “차트를 클러스터에 설치한 인스턴스(설치 결과물)”
차트를 클러스터에 적용(helm install)하면 Release가 만들어집니다.
Release = “특정 차트를 특정 이름으로 설치한 1회 설치본”
예:
helm install my-site bitnami/wordpress -n blog --create-namespace
여기서:
bitnami/wordpress= Chartmy-site= Release 이름 (설치본의 식별자)
왜 굳이 Release 이름이 필요할까?
가장 중요한 이유: 같은 차트로 여러 개를 설치할 수 있기 때문입니다.
helm install my-site bitnami/wordpress -n blog
helm install my-second-site bitnami/wordpress -n blog
두 개는 같은 차트를 기반으로 하지만:
- 서로 완전히 독립적으로 추적/업데이트/롤백/삭제할 수 있는 서로 다른 릴리즈입니다.
실무에서 자주 나오는 활용:
prod릴리즈와dev릴리즈를 동일 차트로 “클론처럼” 운영- dev에서 검증한 values 변경을 prod로 이관
5) Revision: Release 내부의 “스냅샷(변경 이력)”
Release에는 Revision(리비전)이 쌓입니다.
- 최초 설치 = revision 1
helm upgrade= revision 증가(2, 3, …)helm rollback도 “새 리비전”으로 기록되는 편(예: rollback 수행 후 revision 3 생성)
확인 커맨드:
helm list -n blog
helm status my-site -n blog
helm history my-site -n blog
롤백:
helm rollback my-site 1 -n blog
6) Repository: 차트를 가져오는 “차트 저장소”
Docker 이미지가 Docker Hub 같은 레지스트리에 있는 것처럼, Helm 차트도 Repository에 있습니다.
대표 흐름:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm search repo wordpress
차트의 기본 values를 확인하고 내 설정으로 설치:
helm show values bitnami/wordpress > values.yaml
# values.yaml 수정 후
helm install my-site bitnami/wordpress -n blog -f values.yaml
7) Artifact Hub: “차트를 검색하는 허브(카탈로그)”
강의에서는 “Helm Hub(현재는 Artifact Hub로 많이 부름)” 이야기가 나옵니다.
요지는:
- 전 세계 다양한 repo(예: Bitnami 등)에 차트가 흩어져 있는데
- 차트를 찾을 때 저장소를 일일이 뒤질 필요 없이
- Artifact Hub에서 검색/탐색할 수 있다는 것
실무 팁:
- 가능하면 Verified/Official(검증된 퍼블리셔) 성격의 차트를 우선 검토하는 편이 안전합니다.
- 다만 “검증 배지”가 있다고 해도 운영 전에는 values/default, 보안 설정, 리소스 요구량, PV 정책 등을 반드시 확인해야 합니다.
8) Metadata: Helm이 “자기가 뭘 했는지” 클러스터에 저장하는 방식
Helm은 릴리즈/차트/리비전/상태 같은 정보를 저장해야 합니다. 이걸 강의에서 metadata(data about data) 라고 부릅니다.
중요 포인트는 “어디에 저장하느냐”입니다.
- 로컬에 저장하면 팀원이 바뀌거나 다른 환경에서 작업할 때 문제가 생김
- 그래서 Helm은 클러스터 내부에 저장합니다.
- Helm 3 기준으로 대표적으로 Kubernetes Secret에 저장합니다.
즉, 클러스터가 유지되는 한:
- 팀원이 동일 클러스터에 접근할 수만 있으면
- Helm은 언제든 릴리즈 이력/리비전을 보고 upgrade/rollback 등을 수행할 수 있습니다.
실제로 Secret을 확인해보면?
(네임스페이스는 릴리즈가 설치된 곳)
kubectl get secrets -n blog | head
보통 Helm 릴리즈 메타데이터는 Helm 전용 Secret들로 보이며, 형태는 대개 이런 패턴을 띱니다.
sh.helm.release.v1.<release-name>.v<revision>
참고: Secret은 기본적으로 base64 인코딩일 뿐 “암호화”는 아닙니다. 민감도가 높은 환경이면 etcd encryption at rest 등도 같이 고려하는 게 일반적입니다.
9) 지금 단계에서 꼭 기억할 한 줄 요약
- Chart: 앱 설치 설계도(템플릿 + values)
- Release: 차트를 설치한 “인스턴스(설치본)”
- Revision: release의 스냅샷/변경 이력
- Repository / Artifact Hub: 차트를 가져오고 찾는 곳
- Metadata: Helm이 클러스터에 남기는 “내 작업 기록”(주로 Secret)
함께 보면 좋은 커맨드 묶음(실습용)
# Repo/차트 탐색
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm search repo nginx
helm show values bitnami/nginx > values.yaml
# 설치/확인
helm install my-nginx bitnami/nginx -n demo --create-namespace -f values.yaml
helm list -n demo
helm status my-nginx -n demo
helm history my-nginx -n demo
# 업그레이드/롤백
helm upgrade my-nginx bitnami/nginx -n demo -f values.yaml
helm rollback my-nginx 1 -n demo
# 삭제
helm uninstall my-nginx -n demo'CKA' 카테고리의 다른 글
| Helm - CLI (0) | 2026.01.07 |
|---|---|
| Helm - Charts (0) | 2026.01.07 |
| Helm - Helm 2 vs Helm 3 (0) | 2026.01.07 |
| Helm (0) | 2026.01.07 |
| Deploy k8s - kubeadm으로 배포하기 (0) | 2026.01.06 |