Kubernetes 설정을 효율적으로 관리하고 싶으신가요? 그렇다면 오늘 소개할 Kustomize의 베이스(Base)와 오버레이(Overlay) 개념을 꼭 알아두세요!
마치 기본 옷(Base) 위에 액세서리(Overlay) 를 더해 상황에 맞는 스타일을 완성하듯, 설정도 그렇게 관리할 수 있습니다. 지금부터 Kustomize 설정의 마법 같은 구조를 소개합니다. ✨
1️⃣ 시작하며: 왜 Base와 Overlay가 중요한가요?
Kustomize는 설정 파일을 조합하여 여러 환경에 맞는 Kubernetes 리소스를 손쉽게 생성하는 도구입니다.
그 핵심에 있는 것이 바로 Base
와 Overlay
개념입니다.
🧵 비유로 이해하기
- Base = 모든 환경에서 공통으로 사용하는 기본 옷
- Overlay = 특정 상황에 맞춰 추가하는 액세서리
→ 환경에 따라 입고 벗으며 설정을 커스터마이징합니다!
🎯 이 글의 목표
- ✅ Base와 Overlay의 개념과 역할 이해
- ✅ 설정 구조 및 파일 구성 방법 익히기
- ✅ 실습을 통해 환경별 설정을 적용하는 법 배우기
🧱 2. Base란? 공통 설정의 핵심
📌 Base의 역할
- 여러 환경에서 공통으로 사용하는 설정
- 중복을 줄이고 유지보수 효율 향상
- 주로
Deployment
,Service
등 기본 리소스를 포함
💡 Base 예시
📁 디렉토리 구조
base/
├── deployment.yaml
├── service.yaml
└── kustomization.yaml
📄 base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
🎨 3. Overlay란? 환경별 맞춤 설정
📌 Overlay의 역할
- 개발(dev), 운영(prod), 테스트 환경처럼 환경별 차이점을 정의
- 주로
patch
,transformers
를 통해 Base를 수정
💡 Overlay 예시
📁 디렉토리 구조
overlays/
└── dev/
├── patch-dev.yaml
└── kustomization.yaml
📄 overlays/dev/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
patches:
- patch-dev.yaml
📄 patch-dev.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: my-app
image: my-registry/my-app:v1.0-dev
🔀 4. Base + Overlay: 조화로운 설정 관리
✅ 조합의 이점
- 중복 제거 → 코드 재사용성 향상
- 환경별 설정 분리 → 유지보수 용이
- 설정 변경에도 안정성 확보
⚙️ 변경 흐름
- Base 변경 → Overlay는 자동 반영됨
- Overlay는 Base를 확장하거나 수정함
- 환경별 맞춤 설정을 쉽고 안전하게 구현
🧪 5. 실전 예제: 환경별 설정 관리
📁 디렉토리 구조
.
├── base
│ ├── deployment.yaml
│ ├── service.yaml
│ └── kustomization.yaml
└── overlays
├── dev
│ ├── patch-dev.yaml
│ └── kustomization.yaml
└── prod
├── patch-prod.yaml
└── kustomization.yaml
✅ dev 환경 적용
kubectl apply -k ./overlays/dev
✅ prod 환경 적용
kubectl apply -k ./overlays/prod
-k
옵션은 해당 디렉토리의kustomization.yaml
을 기준으로 설정을 조합합니다.