kubernetes - Kustomize

우야·2021년 5월 25일
1

kustomize란?

  • kubernetes의 배포 도구 중 하나로, kubectl v1.14에 통합되었음
  • 기존에 helm chart를 통해 application 배포를 수행하였으나, helm value를 추가 하기 위해서는 heml template chart의 수정이 필요했음.
  • kustomize는 기본적으로 사용되던 yaml을 그대로 사용하며, kustomization.yaml과 base, oberay 및 production, dev등 디렉토리를 환경에 맞게 구성하여 별도의 데이터 기반으로 배포 관리를 할수 있음.

kustomize 구성

base

overlays

  • 일반적으로 base에 사용되는 yaml을 기반으로 patch하여 업데이트 하는 방식으로 사용
  • 하위 디렉토리에서 느낄수 있듯이 stage 별로 나누거나 공용으로 사용되는 base에 특정한 value를 추가해야 하는 경우 사용된다.
  • https://github.com/kubernetes-sigs/kustomize#2-create-variants-using-overlays
  • overlays 하위에 디렉토리로 staging, dev, production 등 다양한 stage별 식별이 가능한 옵션을 두고 관리할수 있다.

사용법

  • 2가지 방식 배포
    1. argument로 주어진 base 혹은 overlays/staging 디렉토리에 있는 kustomization.yaml을 기반 배포
    2. kustomize build 명령을 통해 실제 적용될 최종 yaml을 만들어서 배포
  • kustomize는 앞서 소개한 build 외에도 edit, create, diff 등을 사용할수 있음

kustomization.yaml 사용 문법

  1. namespace
    • 모든 리소스에 네임스페이스 추가
  2. namePrefix / nameSuffix
    • name 항목에 지정된 prefix/suffix를 더해서 resource를 생성
    • {namePrefix}name{namesuffix}
  3. commonLables
    • metadata 항목에 지정한 labels을 추가
  4. commonAnnotations
    • metadata 항목에 지정한 annotations을 추가
  5. resources
    • 존재하는 리소스 구성 파일로 배포 대상
  6. configMapGenerator
    • 지정한 파일내에 선언되어 있는 key=value을 configmap 생성

  7. secretGenerator
    • 지정한 파일내에 선언되어 있는 key=value을 secret 생성

  8. generatorOptions
    • 생성된 컨피그맵과 시크릿은 콘텐츠 해시 접미사가 추가
  9. bases
    • kustomization.yaml 파일을 가지는 디렉토리
  10. vars
  • 한 리소스의 필드에서 텍스트를 캡쳐
  • 예) service name인 "my-nginx"와 namePrefix, nameSuffix를 붙혀서 리소스중MY_SERVICE_NAME으로 선언한 곳을 대체 해준다. "dev-my-nginx-001"
  1. images
  • 패치를 생성하지 않고 하나의 이미지에 대한 name, tags 그리고/또는 digest를 수정
  1. configurations
  • Kustomize 변환 설정을 포함하는 파일로 해석
  1. crds
  • 쿠버네티스 타입에 대한 OpenAPI 정의 파일로 해석
  1. patch
  • patches는 특정 항목 patch를 위해 json 혹은 yaml 파일로 선언되어 있는 파일과 그에 맞는 target을 지정해주어 patch

  1. patchesStrategicMerge
  • 쿠버네티스 오브젝트의 파일 경로들의 리스트로 병합 패치
  1. patchesJson6902
  • 쿠버네티스 오브젝트에 Json 패치로 해석
  1. hostAliaes

helm chart를 kustomize로 변경


https://jfrog.com/blog/power-up-helm-charts-using-kustomize-to-manage-kubernetes-deployments/

참고

profile
Fullstack developer

1개의 댓글

comment-user-thumbnail
2022년 6월 10일

좋은 글 감사합니다!

답글 달기