Search

Kustomize

Kubernetes의 Kustomize는 YAML 파일들을 효율적으로 관리하고, 여러 환경에 맞게 커스터마이즈할 수 있도록 도와주는 도구입니다. Kustomize는 Kubernetes 리소스를 재사용 가능한 방식으로 관리하고, 환경에 따라 설정을 오버레이(overlay)하여 배포할 수 있게 해줍니다.

Kustomize의 특징

1.
중복 제거: 여러 환경에 대해 같은 리소스를 반복해서 작성하지 않도록 해줍니다.
2.
오버레이: 기본 리소스를 바탕으로 환경에 맞는 설정을 덧붙일 수 있습니다.
3.
자동화된 리소스 생성: 다양한 리소스를 결합하거나 수정할 수 있게 해줍니다.

kustomize 구조

. ├── README.md ├── base # 기본 배포 매니페스트 파일 디렉토리 │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays # 각 환경별로 디렉토리를 만들고 변경할 내용이 정의된 kustomize.yaml 파일을 작성 ├── kic-qa │ ├── deployment.yaml │ └── kustomization.yaml └── kic-st ├── deployment.yaml └── kustomization.yaml
Markdown
복사
실습

base 환경 설정

기본 deployment.yaml 파일
apiVersion: apps/v1 kind: Deployment metadata: name: web-app spec: replicas: 1 selector: matchLabels: app: web-app template: metadata: labels: app: web-app spec: containers: - name: web-app image: web-app:latest ports: - containerPort: 80
YAML
복사
기본 kustomization.yaml 파일
resources: - deployment.yaml
YAML
복사

dev 환경 설정

dev 환경에서는 replicas를 1로 설정하고, image 태그를 dev로 변경하려고 할 때, dev 환경을 위한 kustomization.yaml을 다음과 같이 설정할 수 있습니다.
dev/kustomization.yaml
resources: - ../deployment.yaml patchesStrategicMerge: - deployment-patch.yaml
YAML
복사
dev/deployment-patch.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: web-app spec: replicas: 1 template: spec: containers: - name: web-app image: web-app:dev
YAML
복사

prod 환경 설정

prod 환경에서는 replicas를 3으로 설정하고, image 태그를 prod로 설정할 때, prod 환경을 위한 kustomization.yaml을 아래와 같이 설정합니다.
prod/kustomization.yaml
resources: - ../deployment.yaml patchesStrategicMerge: - deployment-patch.yaml
YAML
복사
prod/deployment-patch.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: web-app spec: replicas: 3 template: spec: containers: - name: web-app image: web-app:prod
YAML
복사

kustomzie 적용

dev 환경
kustomize build dev/ | kubectl apply -f -
Shell
복사
prod 환경
kustomize build prod/ | kubectl apply -f -
Shell
복사
이 명령어를 실행하면, 각 환경에 맞게 수정된 최종 Deployment 리소스를 출력할 수 있습니다.