
k8s/ 디렉토리는 모든 Kubernetes 매니페스트 파일을 포함하는 상위 디렉토리
하위 디렉토리는 다음 세 가지로 구성
api/: 애플리케이션 API 관련 리소스를 포함하는 디렉토리cache/: Redis 캐시 관련 리소스를 포함하는 디렉토리database/: MongoDB 데이터베이스 관련 리소스를 포함하는 디렉토리각 디렉토리에는 다음과 같은 YAML 파일 존재
Deployment, Service, ConfigMap 등 일반적인 Kubernetes 리소스 정의 파일 포함kubectl apply -f 명령어를 개별 실행kubectl apply -f k8s/api
kubectl apply -f k8s/cache
kubectl apply -f k8s/database
kubectl apply -f k8s/api -f k8s/cache -f k8s/database
apply를 delete로 변경하여 리소스 제거kubectl delete -f k8s/api -f k8s/cache -f k8s/database
kustomization.yaml 생성k8s/ 디렉토리 내에 kustomization.yaml 파일을 생성하고 다음과 같이 정의apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- api/api-depl.yaml
- api/api-service.yaml
- cache/redis-config.yaml
- cache/redis-depl.yaml
- cache/redis-service.yaml
- database/db-depl.yaml
- database/db-service.yaml
kustomize build 명령어를 실행하면 최종적으로 생성될 Kubernetes 매니페스트를 출력kustomize build k8s/
kubectl apply와 연결kustomize build k8s/ | kubectl apply -f -
kubectl 자체 기능을 활용할 수도 있음kubectl apply -k k8s/
kubectl get pods
kustomization.yaml 파일 추가kustomization.yaml 파일을 별도로 생성하고, 해당 디렉토리 내 리소스를 정의api/kustomization.yamlapiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- api-depl.yaml
- api-service.yaml
cache/kustomization.yamlapiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- redis-config.yaml
- redis-depl.yaml
- redis-service.yaml
database/kustomization.yamlapiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- db-depl.yaml
- db-service.yaml
kustomization.yaml 수정kustomization.yaml을 자동 탐색하도록 구성apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- api
- cache
- database
kubectl apply -k k8s/
또는
kustomize build k8s/ | kubectl apply -f -
kubectl get pods
kustomization.yaml 분리 방식은 유지보수성과 확장성 측면에서 우수함kustomize는 복잡한 Kubernetes 리소스 관리를 체계적으로 구성할 수 있는 유용한 도구