java
CHAPTER 97 / 99
읽기 약 2분
FUNCTION
헬름 차트: K8s 패키지 관리
핵심 개념
Helm install/upgrade/rollback·values.yaml — Spring 마이크로서비스 Helm 차트.
본문
Helm 기본
# 설치
brew install helm # 또는 OS별
# 차트 검색
helm search repo bitnami/postgresql
# 추가 + 설치
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-postgres bitnami/postgresql --namespace ohs-prod
# 업그레이드
helm upgrade my-postgres bitnami/postgresql --set auth.password=newpass
# 롤백
helm history my-postgres
helm rollback my-postgres 1차트 구조
ohs-backend/
├── Chart.yaml # 차트 메타데이터
├── values.yaml # 기본값
├── values-prod.yaml # 환경별 오버라이드
├── values-dev.yaml
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── configmap.yaml
│ ├── secret.yaml
│ ├── hpa.yaml
│ └── _helpers.tpl
└── charts/ # 의존 차트Chart.yaml
apiVersion: v2
name: ohs-backend
description: OHS Backend
type: application
version: 1.0.0
appVersion: "1.0.0"
dependencies:
- name: postgresql
version: "13.4.0"
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- name: redis
version: "18.6.0"
repository: https://charts.bitnami.com/bitnami
condition: redis.enabledvalues.yaml — 기본값
replicaCount: 3
image:
repository: myorg/ohs-backend
tag: "1.0.0"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
targetPort: 8080
ingress:
enabled: true
hosts:
- host: api.openhyperstep.com
paths:
- path: /
pathType: Prefix
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "1000m"
autoscaling:
enabled: true
minReplicas: 3
maxReplicas: 20
targetCPUUtilizationPercentage: 70
postgresql:
enabled: true
auth:
database: ohsdb
redis:
enabled: true
env:
SPRING_PROFILES_ACTIVE: prodtemplates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "ohs-backend.fullname" . }}
labels:
{{- include "ohs-backend.labels" . | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "ohs-backend.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "ohs-backend.selectorLabels" . | nindent 8 }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.service.targetPort }}
env:
{{- range $key, $val := .Values.env }}
- name: {{ $key }}
value: {{ $val | quote }}
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 12 }}templates/_helpers.tpl
{{- define "ohs-backend.fullname" -}}
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 -}}
{{- end -}}
{{- define "ohs-backend.labels" -}}
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/managed-by: helm
{{- end -}}
{{- define "ohs-backend.selectorLabels" -}}
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}환경별 배포
# 개발
helm install ohs-backend ./ohs-backend \
-f values.yaml -f values-dev.yaml \
--namespace ohs-dev --create-namespace
# 프로덕션
helm upgrade --install ohs-backend ./ohs-backend \
-f values.yaml -f values-prod.yaml \
--namespace ohs-prod \
--set image.tag=1.1.0CI/CD에서 사용
- name: Deploy to K8s
run: |
helm upgrade --install ohs-backend ./helm/ohs-backend \
-f ./helm/values-${{ env.ENVIRONMENT }}.yaml \
--set image.tag=${{ github.sha }} \
--namespace ohs-${{ env.ENVIRONMENT }} \
--wait \
--timeout 5m다음 챕터
CH.29 "12-Factor App" — 클라우드 네이티브 원칙.
AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
내 Spring 코드의 Helm 차트 부분을 분석해서 템플릿 안전성·재사용와 개선 우선순위를 알려줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
Helm 차트 vs 다른 패턴 비교를 실전 사례 5개로 보여주고 Helm vs Kustomize를 알려줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
내 코드베이스 전체를 분석해서 Helm 차트 관련 Helm 안티패턴를 보고해줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
2026년 한국 기업의 Helm 차트 채택률과 한국 K8s 사용자 Helm 채택률를 솔직히 알려줘.
⭐ 이것만 기억하세요
헬름 차트: K8s 패키지 관리는 이 3가지만 확실히 잡으세요
1.Helm은 K8s 매니페스트의 패키지·템플릿·버전 관리
2.values.yaml로 환경별 설정 분리 + dependencies로 PostgreSQL/Redis 통합
3.다음 챕터 CH.29에서 12-Factor App — 클라우드 네이티브 원칙
공유하기
진행도 97 / 99