Kustomize는 보통 다음과 같은 구조로 리소스를 관리한다:
k8s/
├── base/
├── overlays/
│ ├── dev/
│ ├── prod/
│ └── community/
└── components/
├── logging/
└── caching/
base/: 공통 리소스를 정의하는 디렉토리overlays/: dev, prod 등 환경별 설정 디렉토리components/: 선택적 기능(로깅, 캐시 등)을 조립 가능한 단위로 구성한 디렉토리| 필드명 | 용도 | 설명 |
|---|---|---|
resources | 기본 리소스 포함 | Deployment, Service, Config 등 |
patchesStrategicMerge | YAML 구조 기반 병합 patch | 가장 많이 사용되는 patch 방식 |
patches | JSON 6902 방식 patch | 경로 기반으로 정확히 수정함 |
components | 선택적 기능 구성 | overlay에서 컴포넌트 조합 가능 |
secretGenerator, configMapGenerator | Secret, ConfigMap 생성기 | 실습에서 db-creds, logging-config 등 생성함 |
patchesStrategicMerge: 아래에 patch 파일을 나열containers.name 기준으로 병합됨예:
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-deployment
spec:
replicas: 3
patches: + target: + patch: 구조/spec/template/spec/containers/0/env/1 같은 정확한 경로로 수정 가능예:
patches:
- target:
group: apps
version: v1
kind: Deployment
name: api-deployment
patch: |-
- op: replace
path: /spec/replicas
value: 3
컴포넌트는 다음과 같은 목적에 유용하다:
components: 필드로 조립 가능예: components/caching/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- redis-depl.yaml
- redis-service.yaml
patchesStrategicMerge:
- api-patch.yaml
overlay에서 조립:
components:
- ../../components/caching
overlays/prod에서는 replica 수, 이미지 태그 등 변경overlays/community에서는 logging, metrics component만 활성화overlays/QA에서는 이미지 patch 등을 통해 QA 전용 구성 수행적용 예:
kubectl apply -k overlays/prod
미리보기:
kubectl kustomize overlays/prod