
Kubernetes의 패키지 매니저인 Helm에 대해서 알아보자.
쿠버네티스 오픈 소스 패키지 매니저,
npm·pip처럼 Kubernetes의 패키지 관리를 돕는다.
helm 명령어로 chart를 설치하여 리소스를 배포할 수 있다.--set flag로 cli에서 사용한다.
curl -fsSL -o get_helm.sh \
https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
# get_helm.sh를 실행 가능하게 설정
chmod 700 get_helm.sh
./get_helm.sh
helm init # Helm v2에서만 사용되던 명령어, Tiller Pod 설치
helm install 명령어를 통해 value 값을 주입받고,# chart별 디렉토리 구조
Chart/
├──Chart.yaml # 차트 메타 정보
├──values.yaml # 기본 설정 값
├──templates/ # 템플릿 리소스들 (deployment.yaml, service.yaml 등)
└── charts/ # 하위 의존성 차트들
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.name }}
labels:
app: {{ .Values.name }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Values.name }}
template:
metadata:
labels:
app: {{ .Values.name }}
spec:
containers:
- name: {{ .Values.name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.service.port }}
# templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.name }}
labels:
app: {{ .Values.name }}
spec:
type: {{ .Values.service.type }}
selector:
app: {{ .Values.name }}
ports:
- port: {{ .Values.service.port }}
targetPort: {{ .Values.service.port }}
# values.yaml
name: my-nginx
replicaCount: 2
image:
repository: nginx
tag: "1.23"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
# Chart.yaml
apiVersion: v2
name: nginx
description: A simple nginx Helm chart
version: 0.1.0 # 이 Helm chart 자체의 버전 (chart version)
appVersion: "1.23" # 실제로 배포할 애플리케이션 (nginx)의 버전
kubectl apply와 유사하되, release 상태 추적 등 추가 기능이 있다.values.yaml 값을 읽어 templates 폴더 내 yaml 파일에 채워 넣어 이를 클러스터에 적용한다.helm template . # value가 템플릿에 정상적으로 주입되는지 확인
helm install myapp ./Chart # 최종 YAML로 렌더링 후 kubectl apply 역할 수행
# repository 등록 및 해당 repo를 사용하여 release
# chart를 저장소에서 자동으로 다운로드하여 사용
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install myapp bitnami/nginx
# 템플릿 구조나 values를 보고 싶다면 chart를 로컬에 다운로드
helm pull bitnami/nginx --untar
| 명령 | 동작 설명 |
|---|---|
helm install | Chart → 리소스 → Kubernetes API로 배포 → Release 저장 |
helm upgrade | 기존 Release → 새로운 values로 덮어쓰기, Revision 증가 |
helm rollback | 이전 Revision으로 되돌림 |
helm delete | 리소스 삭제 + Release 메타데이터 삭제 가능 (soft delete) |
helm repo add/update | 외부 차트 저장소 등록 및 갱신 |
helm lint | YAML 템플릿 문법 오류 확인 |
helm history | log와 revision 확인 |
helm status | Release 상태 추적 후 구성 정보 다시 읽기 |
helm search [hub / repo] | 공개적으로 사용 가능한 차트 찾기 |
helm create | chart 생성, 디렉토리 내 관련 파일 생성 |
helm ls | helm chart로 배포된 모든 Release 확인 |