연재 시리즈

kustomize 2편 - kustomize 컨셉

악분 2022. 8. 3. 20:53
반응형
글이 이전되었습니다. 링크: https://malwareanalysis.tistory.com/402

안녕하세요. 이 글은 kustomize 시리즈 2편입니다.

 

1. kustomize을 실행하기 위한 조건

kustomization.yaml파일이만 있으면 kustomize명령어를 실행할 수 있습니다. 그리고, kustomize를 적용할 yaml파일을 준비합니다. 보통 kustomization.yaml파일이 있는 같은 경로에 yaml파일을 위치시킵니다.

 

yaml파일이 없어도 kustomization.yaml만 있으면 동작을 합니다. yaml파일이 없는 상황은 새로운 쿠버네티스 리소스를 만들려고할 때 사용합니다.
$ tree
.
├── kustomization.yaml
└── pod.yaml

 

2. kustomization.yaml파일은 무엇일까?

kustomization.yaml은 kustomize가 실행될 때 어떤 필드를 재정의할 것인가를 설정하는 파일입니다. 여러가지 필드로 설정(https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/)할 수 있는데 공식문서에서 소개하는 기본 필드는 4개입니다. 그 이외의 patch, namespace 등의 필드가 존재합니다. 

✳️ 개인생각으로 다른 필드는 transformers유형으로 취급되는 것 같습니다.
  • resources 필드: kustomize를 적용할 쿠버네티스 리소스(yaml파일)
  • generators 필드: 새로 생성할 필드를 설정
  • transformers 필드: 기존 필드 변경을 설정
  • validators 필드: 검증
resources:
- {pathOrUrl}
- ...

generators:
- {pathOrUrl}
- ...

transformers:
- {pathOrUrl}
- ...

validators:
- {pathOrUrl}
- ...

 

필드는 정해진 순서로 실행됩니다. 공식문서에 기본 필드로 소개된 필드들은 resources → generators → transformers → validators 순서로 실행됩니다. 실행과정을 정리하면 기존 정의된 쿠버네티스 리소스yaml파일을 읽고 새로운 필드를 추가(generators)한 후, 필드를 수정(transformers)하고 검증(validators)을 합니다. 검증이 끝나면 최종 쿠버네티스 리소스를 화면에 출력(stdout)합니다.

✳️ 4가지 필드가 아닌 다른 필드들이 정의되면, 정확하지 않지만 아마도? transfomers유형으로 취급되어서 3번째 순서로 실행되는 것 같아요.

kustomize필드 실행 순서

 

3. built-ins

generators와 transformers는 직접 개발해서 사용할 수 있고 이미 내장된 built-ins(내장된)을 사용할 수 있습니다. 앞으로 저희가 공부할 내용은 built-ins generators와 transformers가 무엇이 있고 어떻게 사용하는지 배우게 될 겁니다.

buit-ins 종류: https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/

 

4. 제가 생각하는 공부방향

kustomize는 쿠버네티스처럼 상당히 공부할 양 양이 많아서 다 하기에는 벅찹니다. 그러므로 컨셉을 이해하고 필요한 buitl-ins기능을 사용하고 없다면 직접 개발하는 방향으로 kustomize를 공부하는 것이 좋다고 생각합니다. 

반응형