Kustomize 기본 기능
kustomization.yaml
개념
kustomization.yaml파일은Kustomize가 쿠버네티스 리소스를 관리하기 위해 가장 먼저 찾는 설정 파일이다.- 파일의 이름은 꼭
kustomization.yaml이어야 한다. kubectl apply -f이 명령어로 적용하는 리소스가 아니다. 왜냐하면kustomization.yaml은 리소스 자체를 정의하는 파일이 아니라 다른 파일에 정의된 리소스들을 어떻게 조합하고 수정할 것인가에 대한 파일이다.
- 파일의 이름은 꼭
구성 요소
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
# 1. 관리할 리소스 목록
resources:
- deployment.yaml
- service.yaml
# 2. 적용할 변경 사항 (모든 리소스에 공통 라벨 추가)
commonLabels:
company: KodeKloud
- Resource
Kustomize가 관리해야 할 원본 YAML 파일들의 목록이다.
- Transformations: 원본 리소스에 적용할 변경 사항이다.
- 예: 모든 리소스에 공통 라벨 추가
팁
kustomization.yaml파일은 Kustomize 단위마다 하나씩 존재한다.- 이전 글에서 환경마다 내부에 하나씩 더 존재했던 것은
overlay기능을 통해서 상위kustomization.yaml파일을 import하는 것이다. - 각 환경에 따른
kustomization.yaml이 각각 있다고 했을 때(dev/kustomization.yaml,prod/kustomization.yaml) 상위kustomization.yaml에서는resources에dev/,prod/만 넣어두고kubectl apply -k ./이렇게 하면 모든 환경의 리소스가 생성된다.
적용 방법
build & apply -f
kustomize build <디렉토리경로>
- 위 명령어를 적용하면 정의된 리소스들에
kustomization.yaml이 적용된 결과물이 나온다. - 중요!!) 이 결과물들이 바로 적용되는 것이 아니라 그냥 적용된 yaml 파일이 나오는 것이다.
kustomize build k8s | kubectl apply -f -
kustomize build k8s | kubectl delete -f -
- 빌드된 결과물을
kubectl apply -f로 적용할 수도 있지만, 리눅스 파이프(|) 기능을 사용해서build의 출력을kubectl의 입력으로 바로 전달할 수 있다.
apply -k (권장)
kubectl apply -k <디렉토리경로>
kubectl delete -k <디렉토리경로>
- 최신
kubectl에는Kustomize기능이 내장되어 있어-k옵션으로 더 간단하게 실행할 수 있다. - 내부적으로 빌드 후 결과물을 바로 적용한다.
팁
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
kustomization.yaml파일 최상단에apiVersion과kind는 명시하는 것이 좋다.- 왜냐하면, 향후 호환성 문제와 같은 변경 사항에 대비하기 위함이다.
레퍼런스
- Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)