[K8S] Kustomize / Helm

강버섯·2022년 1월 6일
0

Kustomize와 Helm을 이용하면 GitOps를 할 때 유용하게 사용할 수 있다.

👉 Kustomize

Kustomize는 kubernetes resource customizing tool로 객체(object)를 선언적으로 관리하는 것을 편하게 하는 도구이다.
Kubernetese resource에 약간의 변화를 일으킬 때 사용한다.

✏️ 사용 시 이점

  • manifest 관리 작업에 용이 → 배포 자동화 관리 과정이 쉬워짐(ex. argoCD)
  • secret, config map 만드는 것이 편해짐
  • container 이미지 변경, replica 변경 가능
  • namespace override
  • commonLabels 사용 가능
    → 서로 다른 환경들을 구분하여 관리하는 것이 용이해짐

✏️ 사용하는 파일들

kustomization.yaml 기본 format👇

resources: #적용할 resource 지정
	-deployment.yaml
	-service.yaml

#kustomization의 명령어
commonLables: # 모든 resource에 label을 추가함
	app: my-app
	createdAt: "2021-12-06"

namespace: "my-namespace"

base & overay

  • base : kubernetes가 가지는 기본 설정이 적힌 yaml 파일들
  • overay : base에서 변경하고자 하는 것을 적어놓은 kustomize 파일들

overay > kustomizaition.yaml 👇

#overlay 할 것들을 작성 = 변경할 것들을 작성
resource:
	- ../../base #시작하는 곳

images:
	- names: nginx
	  newName: my-org/my-app
	  newTag: "0.10.1"

patches: #위치를 지정하여 변경 
	- target

✏️ 실행

$> kustomize build . #실행

$> kubectl kustomize [kustomization_dir] #kustomize 적용된 결과를 보여줌

$> kubectl apply -k overlay/prod #kustomize로 변경된 파일을 적용

👉 Helm

helm v2와 v3는 구동 방식의 차이가 있기 때문에 반드시 v3를 사용할 것.

Kubernetes resource에 많은 변화를 만들어낼 때 사용한다.
Helm은 package 관리자로 보면 된다.

✏️ 주요 개념

  • chart : helm package
  • repository : chart를 모아두고 공유하는 장소
  • release : kubernetes cluster에서 구동되는 chart의 인스턴스
    → chart 설치 시마다 새로운 release가 생성된다.

✏️ 사용 시 이점

  • 선언적으로 manifest에 복잡한 일을 시킬 수 있음
  • 복잡한 쿠버네티스 어플리케이션을 쉽게 깔 수 있도록 도와줌 → package의 관리와 설치를 쉽게 해줌
  • install한 기록이 남김 >> 버전 관리가 가능 = rollback 가능
  • 동적인 변화를 check해서 반영할 수 있음

✏️ 실행

brew install helm

#원하는 chart 찾기
helm search hub [chart명] # helm hub 검색
helm serach repo [chart명] # locla helm client에 추가된 것을 검색

#패키지 설치
helm install [사용자 지정 release명] [설치하려는 chart명]

#chart 생성
helm create [이름]

helm fetch [stable 이름] #fetch해서 chart의 압축을 풀어주면 됨

helm template my-redis . #어떤 모양으로 만들어낼 것인지 보여줌
profile
무럭무럭 버섯농장

0개의 댓글