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 리소스를 출력할 수 있습니다.