홈/엔지니어/Docker / 컨테이너/Helm 차트 기초 — Kubernetes 패키지 …
Docker / 컨테이너중급UbuntuDebianCentOShelmkubernetesk8s

Helm 차트 기초 — Kubernetes 패키지 관리

Helm 설치, 공개 차트 배포, values.yaml로 커스터마이징, 직접 차트 작성, 릴리즈 관리까지 Kubernetes 패키지 관리 필수 기초를 설명합니다.

목차
  1. Helm 설치
  2. 기본 개념
  3. 레포지토리 관리
  4. 차트 배포 (install / upgrade)
  5. 릴리즈 관리
  6. 직접 Chart 생성
  7. values.yaml 커스터마이징
  8. 템플릿 문법 기초

Helm 설치

Bash
# Linux
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# macOS
brew install helm

# 버전 확인
helm version

기본 개념

용어설명
ChartHelm 패키지 (k8s 리소스 템플릿 모음)
RepositoryChart 저장소
Release클러스터에 배포된 Chart 인스턴스
ValuesChart 설정값 (values.yaml)

레포지토리 관리

Bash
# 공식 stable 레포 추가
helm repo add stable https://charts.helm.sh/stable
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

# 레포 목록
helm repo list

# 레포 업데이트
helm repo update

# 차트 검색
helm search repo nginx
helm search repo bitnami/postgresql

차트 배포 (install / upgrade)

Bash
# 기본 설치
helm install my-nginx ingress-nginx/ingress-nginx

# 네임스페이스 지정
helm install my-nginx ingress-nginx/ingress-nginx   --namespace ingress-nginx   --create-namespace

# values.yaml 파일로 커스터마이징
helm install my-app bitnami/wordpress -f custom-values.yaml

# 커맨드라인으로 값 오버라이드
helm install my-pg bitnami/postgresql   --set auth.postgresPassword=MySecretPass   --set primary.persistence.size=20Gi

# 드라이런 (실제 배포 없이 확인)
helm install my-app bitnami/nginx --dry-run --debug

# 업그레이드 (없으면 설치)
helm upgrade --install my-nginx ingress-nginx/ingress-nginx

릴리즈 관리

Bash
# 배포된 릴리즈 목록
helm list
helm list -A            # 모든 네임스페이스

# 릴리즈 상태
helm status my-nginx

# 적용된 values 확인
helm get values my-nginx

# 릴리즈 히스토리
helm history my-nginx

# 롤백
helm rollback my-nginx 1    # 1번 리비전으로

# 삭제
helm uninstall my-nginx

직접 Chart 생성

Bash
helm create mychart

# 생성된 구조
mychart/
├── Chart.yaml           # 차트 메타데이터
├── values.yaml          # 기본 설정값
├── templates/           # k8s 리소스 템플릿
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── ingress.yaml
│   └── _helpers.tpl     # 공통 템플릿 함수
└── charts/              # 의존 차트

values.yaml 커스터마이징

YAML
# values.yaml
replicaCount: 3

image:
  repository: nginx
  tag: "1.25"
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 80

resources:
  limits:
    cpu: 500m
    memory: 128Mi
  requests:
    cpu: 100m
    memory: 64Mi

ingress:
  enabled: true
  host: myapp.example.com

템플릿 문법 기초

YAML
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "mychart.fullname" . }}
  labels:
    {{- include "mychart.labels" . | nindent 4 }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
      - name: {{ .Chart.Name }}
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        ports:
        - containerPort: {{ .Values.service.port }}
        {{- if .Values.resources }}
        resources:
          {{- toYaml .Values.resources | nindent 10 }}
        {{- end }}
Bash
# 템플릿 렌더링 확인
helm template mychart ./mychart -f my-values.yaml

# 린트
helm lint ./mychart
#helm#kubernetes#k8s#차트#패키지관리#devops
편집 안내 · Editorial Note

AI 도구가 초안 작성에 사용될 수 있습니다. 명령어의 실행 여부와 검증 환경은 각 가이드에 기재된 근거를 확인하세요. 적용 전 사용 중인 버전의 공식 문서를 확인하고, 오류는 이메일로 알려주세요. 이메일로 제보

주제 관련 공식 문서(자동 연결 · 문장별 근거 아님)Kubernetes 공식 문서 ↗Docker 공식 문서 ↗

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.