devops
helm chart 만드는 팁 본문
https://helm.sh/ko/docs/howto/charts_tips_and_tricks/
위 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 데이터들이 조회되어 배포 히스토리 확인이 가능해진다.
'DevOps > Opensource' 카테고리의 다른 글
Crossplane, Terraform을 대체할 수 있을까. 개념과 비교해보기 (0) | 2024.01.18 |
---|---|
Grafana 헬름 차트 분석하기 (0) | 2023.07.09 |
Prometheus 헬름 차트 분석하기 (0) | 2023.07.09 |
Windows Mongodb Shutdown exitCode 100 에러 해결 방법 (0) | 2022.09.03 |
mysql 외부접속 안될 때, "Can't connect to MySQL server on 'ip'"해결방법 (0) | 2022.08.28 |