자격증 학원 › CKA › 아키텍처 · 설치 · 구성

강의 17 / 28 · 약 25분

Helm 과 Kustomize

2025 개정으로 들어온 패키지·구성 관리 도구. Helm 저장소·설치·값 덮어쓰기·template, Kustomize 의 namespace·images·replicas·patches.

이 강의를 마치면

  • Helm 저장소를 추가하고 차트를 버전·값을 지정해 설치·업그레이드·제거할 수 있다
  • helm template 으로 매니페스트만 뽑을 수 있다
  • kustomization.yaml 로 네임스페이스·이미지·레플리카를 바꿔 apply -k 할 수 있다

Helm — 쿠버네티스의 패키지 관리자

차트(chart) = 템플릿 묶음, 값(values) = 템플릿에 넣을 설정, 릴리스(release) = 차트를 클러스터에 설치한 한 번의 인스턴스.

# 저장소
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm repo list
helm search repo bitnami/nginx --versions     # 버전 목록

# 차트 살펴보기
helm show values bitnami/nginx | less          # 바꿀 수 있는 값
helm show chart bitnami/nginx

# 설치
helm install web bitnami/nginx \
  --version 21.1.2 \
  -n web --create-namespace \
  --set replicaCount=2 \
  --set service.type=ClusterIP
# 또는 값 파일로: -f my-values.yaml

# 관리
helm list -A
helm status web -n web
helm get values web -n web                    # 내가 준 값
helm upgrade web bitnami/nginx -n web --set replicaCount=3
helm upgrade --install web bitnami/nginx -n web   # 없으면 설치, 있으면 업그레이드
helm rollback web 1 -n web
helm uninstall web -n web

릴리스는 네임스페이스에 속합니다. helm list 에 안 보이면 -n 이나 -A 를 빼먹은 것입니다.

helm template — 매니페스트만 뽑기

helm template argocd argo/argo-cd --version 8.3.0 -n argocd \
  --set crds.install=false > /opt/argo.yaml
  • 클러스터에 아무것도 설치하지 않습니다. 결과를 검토하거나 kubectl apply -f 로 직접 넣을 때 씁니다.
  • CRD 빼기: --skip-crds 는 차트의 crds/ 폴더에 든 CRD 만 뺍니다. 차트가 CRD 를 템플릿으로 넣는 경우(argo-cd 가 그렇다)에는 차트 값(crds.install=false)으로 꺼야 합니다. 차트마다 다르니 helm show values 로 확인하는 것이 정석입니다.

Kustomize — 템플릿 없이 덧씌우기

Kustomize 는 원본 YAML 을 건드리지 않고, kustomization.yaml 에 적은 변경을 덧씌워 결과를 만듭니다. kubectl 에 내장되어 있습니다.

app/
├── deployment.yaml
├── service.yaml
└── kustomization.yaml
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: staging              # 모든 리소스의 네임스페이스
namePrefix: stg-                # 이름 앞에
labels:                         # (commonLabels 의 후속)
- pairs:
    env: staging
  includeSelectors: false
resources:
- deployment.yaml
- service.yaml
images:                         # 이미지 태그·이름 바꾸기
- name: nginx
  newTag: "1.27"
replicas:                       # 레플리카 바꾸기
- name: portal
  count: 3
configMapGenerator:             # ConfigMap 생성(내용 해시가 이름에 붙는다)
- name: app-config
  literals:
  - MODE=staging
patches:                        # 부분 수정
- target:
    kind: Deployment
    name: portal
  patch: |-
    - op: add
      path: /spec/template/spec/containers/0/env
      value: [{name: TIER, value: web}]
kubectl kustomize app/          # 결과 미리 보기 ★ 적용 전에 꼭
kubectl apply -k app/           # 적용
kubectl delete -k app/          # 삭제

base 와 overlay

환경별 차이만 overlay 에 둡니다.

base/        (deployment.yaml, service.yaml, kustomization.yaml)
overlays/
  dev/kustomization.yaml       → resources: [../../base], namespace: dev
  prod/kustomization.yaml      → resources: [../../base], replicas: 5, images: …

무엇을 언제 쓰나

HelmKustomize
방식템플릿 + 값원본 + 덧씌우기
남이 만든 소프트웨어 설치◎ (차트 생태계)△
내 앱의 환경별 배포○◎
설치 이력·롤백릴리스 단위로 관리없음(git 으로)

교과과정 표현은 “Use Helm and Kustomize to install cluster components” 입니다. 시험에서는 저장소 추가 → 버전 지정 설치 → 값 지정, template 으로 뽑기, kustomization 고쳐서 apply -k 가 핵심입니다.

⌨️ 직접 해 보기

브라우저 실습 터미널에서 풀고 자동 채점을 받습니다.

✅ 확인 문제

과정 목차