Skip to main content

Kustomize


Resources

쿠버네티스 객체의 인스턴스(Deployment, Services, Namespace 등)을 리소스라고 합니다. 그 중 컨테이너를 실행시키는 리소스를 워크로드(Workloads) 라고 합니다. 워크로드에는 Deployment, StatefulSets, Jobs, CronJobs, DaemonSets 등이 있습니다.

리소스는 다음에 의해 구별됩니다.

  • apiVersion
  • kind
  • metadata.namespace
  • metadata.name

리소스는 아래와 같은 구성을 갖습니다.

  • TypeMeta: apiVersion, kind
  • ObjectMeta: namespace, name
  • Spec: 원하는 상태
  • 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

Reference