devops

helm chart 만드는 팁 본문

DevOps/Opensource

helm chart 만드는 팁

vata500 2023. 7. 9. 23:54
반응형

https://helm.sh/ko/docs/howto/charts_tips_and_tricks/

 

차트 개발 팁과 비법

Covers some of the tips and tricks Helm chart developers have learned while building production-quality charts.

helm.sh

위 helm 공식 문서에 차트 개발 팁과 비법이라는 내용이 있다.  이 내용과 더불어 몇 가지 추가적으로 정리해보자.

1. install과 upgrade 자동 실행

$ helm upgrade mychart . -n mychart-ns --create-namespace --install

upgrade를 시도하는데, 기존 릴리즈가 없으면 install하는 명령어로 install과 upgrade를 일일이 구분할 필요없어 아주 유용하게 사용할 수 있다.

2. helm install pod 상태 확인 후 결과 리턴

$ helm upgrade mychart . -n mychart --wait

pod가 pending을 거쳐 Running이 될 때까지 리턴값을 받고 싶으면 --wait 옵션을 추가해주면 된다. default로 5분까지 기다리게 되는데 --timeout 15m 를 추가하면 15분까지 대기할 수 있다.

3. Configmap 변경 시 Pod에 적용

configmap의 value값을 변경하면 configmap은 변경되지만 pod는 변경사항이 없어 재배포 되지 않는다. 이때 configmap을 사용하는 deployment.yaml에서 configmap의 변경을 감지하는 annotation을 추가해야한다.

annotations:
  checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") | sha256sum }}

위처럼 추가하게 되면 configmap.yaml의 내용이 변경되면 sha256sum의 값이 변경되기 때문에 deployment.yaml에 의해 pod가 재배포되어 configmap의 변경된 내용이 반영된다.

annotations:
  rollme: {{ randAlphaNum 5 | quote }}

configmap 변경 상관없이 pod를 재배포하는 방법으로 위 코드를 annotation에 추가한다. 배포할 때마다 값이 바뀌게 되어 pod도 재생성된다. (image tag를 latest로 사용시 유용하게 사용)

4. PV 변경 시 적용

PV는 hostPath를 바꾸게 되면 오류가 발생한다. Pod는 PVC와 바인딩 상태일 때 수정이 불가하기 때문이다. 이때는 Uninstall하고 다시 Install 해야 이 문제를 해결 할 수 있다.

여기서 Uninstall을 하려 namespace를 지우면 해당 namespace의 모든 리소스가 삭제될 수 있기 때문에 주의해야한다.

5. helm uninstall에서 namespace 삭제

helm은 쿠버네티스의 secret을 통해서 history 데이터를 쌓아간다. 그래서 helm histroy 명령어를 쓰면 이 secret 데이터들이 조회되어 배포 히스토리 확인이 가능해진다.

 

반응형
Comments