Kustomize

Kustomize란?

Kustomize란 쿠버네티스 매니페스트 파일을 효율적으로 관리하기 위해 만들어진 오픈소스 도구

원본 yaml 파일을 보존한 채로 목적에 따라 변경본을 만들어 사용할 수 있도록 하는 것을 목표

kustomization

Kustomization.yml

kustomizational.yaml 파일은 Kustomize가 사용하는 yaml 매니페스트 파일

Base Manifests

Kustomization에 의해 참조되며 보통 기본 설정으로 구성된 쿠버네티스 매니페스트 묶음을 말함

Overlay Manifests

Base Mnifests에 변형을 가하기 위해 사용되는 Kustomization으로 Overlay도 다른 것들의 Base가 될 수 있음

Kustomize 명령어

생성

kustomize create
  • 현재 디렉토리에 kustomization.yaml 파일 생성

빌드

kustomize build .
  • 현재 디렉토리에 kustomization.yml 파일을 해석해서 쿠버네티스 매티페스트 출력
  • 디렉토리 뿐만 아니라 URL을 통해 원격에 위치한 kustomization.yaml 파일 해석도 가능

클러스트 적용

kustomize build . | kubectl apply -f -
  • kustomization.yaml 파일 내용을 클러스터에 적용
  • 명령어 맨 뒤의 -의미는 앞의 명령어의 stdout을 사용하겠다는 뜻

클러스터에서 삭제

kustomize build . | kubectl delete -f -
  • kustomization.yaml 파일 내용을 클러스터에서 삭제
  • 명령어 맨 뒤의 -의미는 앞의 명령어의 stdout을 사용하겠다는 뜻

Kustomize 명령어 - kubectl 통합

kubernetes 1.14 버전 부터 kubectl 내에서 kustomize를 내장

빌드

#kutomize build .
kubectl kustomize . 

클러스터 적용

#kustomize build . | kubectl apply -f -
kubectl apply -k

클러스터에서 삭제

#kustomize build . | kubectl delete -f -
kubectl delete -k

통합

yaml 파일

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- deployment.yaml
- service.yaml
  • 별 다른 설정 없이 리소스로 쿠버네티스 디플로이먼트, 서비스 포함
  • 수정하지 않았지만 패키지로 묶어 한 번에 배포 가능
#kustomize build . | kubectl apply -f -
kubectl apply -k

명령어로 빌드 및 배포 가능

[참조]: 패스트 캠퍼스 - 한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online

끝!