Kustomize
Resources
Kubernetes 객체의 인스턴스(Deployment, Services, Namespace 등)을 리소스라고 합니다. 그 중 컨테이너를 실행시키는 리소스를 워크로드(Workloads) 라고 합니다. 워크로드에는 Deployment
, StatefulSets
, Jobs
, CronJobs
, DaemonSets
등이 있습니다.
리소스는 다음에 의해 구별됩니다.
apiVersion
kind
metadata.namespace
metadata.name
리소 스는 아래와 같은 구성을 갖습니다.
TypeMeta
: apiVersion, kindObjectMeta
: namespace, nameSpec
: 원하는 상태Status
: 관찰된 상태
kustomize
kustomize build <directory path> | kubectl apply -f -
kustomize
는 위와 같은 형식으로 사용됩니다. <directory path>/kustomization.yaml
의 설정에 따라 yaml 파일들이 조합되고, 그 조합 결과가 kubectl apply -f -
에 의해 적용됩니다.
Example
local-path-provisioner
├── base
│ ├── kustomization.yaml
│ └── local-path-storage.yaml
└── overlays
└── default-storageclass
├── kustomization.yaml
└── patches
└── default-storageclass.yaml
local-path-provisioner/base/local-path-storage.yaml
#...
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-path
#...
local-path-provisioner/base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- local-path-storage.yaml
local-path-provisioner/overlays/default-storageclass/patchs/default-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.beta.kubernetes.io/is-default-class: "true"
name: local-path
local-path-provisioner/overlays/default-storageclass/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
patches:
- patches/default-storageclass.yaml