Overlay
개념
Kustomize의 주된 설계 의도는 하나의 Base를 두고 이를 각 Env에 맞게 Overlay하여 사용하는 것이다.- 이를 통해서 하나의 커다란 목잡한
kustomization.yaml이 되는 것이 아니라 각 환경별 간단한kustomization.yaml로 관리할 수 있다.
예시
구조
my-k8s-project/
├── base/ # [공통] 모든 환경의 기본이 되는 설정
│ ├── kustomization.yaml
│ └── nginx-depl.yaml # 예: Replicas: 1
│
└── overlays/ # [환경별] 환경 특화 설정 폴더
├── dev/ # 개발 환경
│ ├── kustomization.yaml
│ └── patch-replicas.yaml
│
├── staging/ # 스테이징 환경
│ ├── kustomization.yaml
│ └── patch-replicas.yaml
│
└── prod/ # 운영 환경
├── kustomization.yaml
├── patch-replicas.yaml
└── grafana-depl.yaml # [추가 리소스] 운영 환경에만 필요한 별도 리소스
Base
base/nginx-depl.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1 # 기본값
template:
spec:
containers:
- name: nginx
image: nginx
base/kustomization.yaml
resources:
- nginx-depl.yaml
Overlay (dev)
overlays/dev/kustomization.yaml
bases:
- ../../base
patches:
- path: patch-replicas.yaml
overlays/dev/patch-replicas.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2 # Dev 환경은 2개로 변경
- 다른 환경(
staging,prod) 도 같은 구조
레퍼런스
- Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)