

Kustomize 사용하기
개념
Kustomize는 쿠버네티스(Kubernetes)의 구성(Configuration)을 선언적으로 관리하고 커스터마이징하기 위한 도구이다.
Kustomize 를 사용하는 이유

현재 쿠버네티스에 적용할 매니패스트(.yaml)는 2개이다. 즉 이들을 적용하려면 각각
k create -f deplyment.yaml
k create -f service.yaml
두번의 명령어를 입력하게 된다.
하지만 실제 운영 상황에서는 매니패스트 파일이 20개, 30개 혹은 그 이상 많아질 수 밖에 없다.
이 경우 모든 파일에 대해 일일히 명령어를 입력하기에는 불편하다.
이를 해결하기 위해 나온 것이 Kustomize 이다.
장점
- 원본 YAML 파일을 수정하지 않고 다양한 설정을 관리할 수 있다.
- 표준 쿠버네티스 YAML 문법을 사용하기 때문에 다른 템플릿 엔진의 문법을 배울 필요가 없다.
- kubectl 에 내장되어 있어 별도의 패키지 설치가 필요 없다.
Kustomize 사용하기

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
위와 같이 kustomization.yaml 파일을 통해 매니패스트들을 관리, 커스터마이징을할 수 있다.
- resources: 포함할 매니패스트 파일들을 적어준다
- 이하에 네임 변환, 라벨, 어노테이션, 이미지 등을 적어 커스터마이징을 할 수 있다. (예시에는 변경사항 없음)

# k kustomize [kustomization.yaml 의 경로]
# k = kubectl
k kustomize .
해당 명령어를 입력하면 변경 사항이 적용 될 모든 매니패스트(yaml)을 출력하게 된다. (해당 예시에서는 아직 변경사항을 적지 않음)
이하 두 명령어는 동일한 명령어이다.
- kubectl kustomize [dir] : kubectl 의 내장 kustomize 를 호출
- kustomize build [dir] : 직접 설치한 kustomize 를 호출

k kustomize . | k apply -f -
다음과 같이 파이프라인을 통해 kustomize 의 결과를 받아 클러스터에 적용할 수 있다.
중첩된 kustomization 파일

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- nginx/deployment.yaml
- nginx/service.yaml
- db/db-deployment.yaml
- db/db-service.yaml
- db/db-config.yaml
다음과 같이 기능별로 폴더를 분리, yaml 파일이 많아질 경우에는 한 개의 kustomization.yaml 에서 참조하는 매니패스트 들이 많아진다. 이는 확장성 부족, 책임의 분리, 환경의 분리가 어려워진다.
따라서 중첩된 kustomization.yaml 을 통해 모듈화를 할 수 있다.

# kustomize-blog/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- nginx/
- db/
프로젝트 루트의 kustomization.yaml
- resources에 하위 폴더의 경로를 적어준다
# kustomize-blog/nginx/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- nginx-deployment.yaml
- nginx-service.yaml
nginx 폴더 내의 kustomization.yaml
- resources에 관리할 매니패스트를 적어준다
# kustomize-blog/db/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- db-deployment.yaml
- db-service.yaml
- db-config.yaml
db 폴더 내의 kustomization.yaml
- resources에 관리할 매니패스트를 적어준다

총 5개의 yaml 출력을 확인할 수 있다.
'Kubernetes' 카테고리의 다른 글
| [Kubernetes] CKA Udemy Lightning Lab - 1 풀이 (1) | 2025.10.01 |
|---|---|
| [Kubernetes] Kustomize Patch로 리소스 커스터마이징 하기 (0) | 2025.09.30 |
| [Kubernetes] Kustomize Transformer로 리소스 커스터마이징 하기 (0) | 2025.09.29 |
| [Kubernetes] Helm Repository 추가 및 차트 배포하기 (0) | 2025.09.26 |
| [Kubernetes] Helm 설치 및 사용하기 (0) | 2025.09.25 |