
처음에는 단순하게 k8s/ 디렉토리에 .yaml 파일 몇 개만 존재할 수 있음.
예:
k8s/
├── api-deployment.yaml
├── api-service.yaml
├── db-deployment.yaml
└── db-service.yaml
이 상태에선 그냥 kubectl apply -f k8s/로 적용하면 끝남.
하지만 리소스가 많아지면 하위 디렉토리로 나누는것이 용이함.
k8s/
├── api/
│ ├── deployment.yaml
│ └── service.yaml
├── db/
│ ├── deployment.yaml
│ └── service.yaml
├── cache/
│ └── ...
└── kafka/
└── ...
이제 kubectl apply를 하려면 각 디렉토리마다 일일이 들어가야 해. 비효율적이고 유지보수가 힘들어짐.
kustomization.yaml 생성# k8s/kustomization.yaml
resources:
- api/
- db/
- cache/
- kafka/
resources는 하위 디렉토리를 가리킴.kustomization.yaml이 있어야 함!kustomization.yaml 작성예: k8s/api/kustomization.yaml
resources:
- deployment.yaml
- service.yaml
이 구조를 db/, cache/, kafka/에도 각각 만들어줌.
k8s/
├── kustomization.yaml # root - 상위 디렉토리 전체를 조립
├── api/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── kustomization.yaml # api 디렉토리 전용 구성
├── db/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── kustomization.yaml
├── cache/
│ └── ...
└── kafka/
└── ...
kustomize build k8s/ | kubectl apply -f -
또는 (kubectl 내장 기능)
kubectl apply -k k8s/
kubectl delete -k k8s/
| 항목 | 설명 |
|---|---|
| ✅ 모듈화 | 디렉토리 단위로 관리 가능 (서비스, 컴포넌트별로 분리) |
| ✅ 유지보수성 ↑ | 루트 설정은 깔끔하게 유지 |
| ✅ 자동화 용이 | CI/CD 파이프라인 구성 간단해짐 |
| ✅ 확장성 ↑ | 디렉토리만 추가하면 쉽게 리소스 확장 가능 |