본문 바로가기
IT/Kubernetes

Helm으로 2 tier webapp 배포 (종속성)

by rapker 2023. 4. 17.
반응형
Helm으로 2 tier webapp 배포에 이어지는 내용입니다.
 
참고
 

 


728x90
 
결과요약
 
dependency 구조 및 설정 미리보기
 

 
아....
단일 Helm chart 작성법이나 사용법은 도움되는 글들이 있었는데
 
종속성 갖는 chart 내용은 도움 될만한 샘플이나 설명 글이 잘 안 찾아 지네요
 
대부분 'charts 폴더에 종속성 갖는 chart를 구성하고, 메인 chart.yaml 에 종속성 정의를 해준다' 요정도 글만 있고.... ㅠㅠ
 
종속성 chart를 사용하지 않는 프로젝트는 없을거라 생각되는데...
요 부분은 공유가 잘 안되는 모양입니다. 속상하네요...
 
Helm docs의 Chart.yaml 의 내용을 보고 코끼리 발가락부터 더듬어 봐야 할 것 같습니다. ㅠㅠ
 
 
하위 chart 구성
 
일단 하위차트 구성을 위해 sample-vote의 내용을 하위차트(sample-vote-backend)에 그대로 복사 합니다.
 
 
 
나중에 배포결과 확인을 구분하기 위해 backend chart의 NOTES.txt 내용을 변경합니다.
 
 
 
저 텍스트가 나중에 이쁘게 출력하길 기대해 봅니다. -0-
 
 
 
교통정리
 
현재 sub chart의 내용은 본 chart를 그대로 복사했기 때문에 교통정리를 좀 하겠습니다.
  • main chart 는 front-end 관련 yaml만
  • sub chart 는 back-end 관련 yaml만
  • sub chart 의 chart명 변경
 
먼저 main chart에는 back-end yaml파일 삭제
 
다음으로 sub chart에는 front-end yaml파일 삭제
 
sub chart의 chart이름 변경
 
 
종속성 설정
 
지금까지 sub chart 구성한 것도 될지 안될지 걱정이지만
main chart에 종속성 설정하는 부분도 어떻게 설정해야 되는지 난감하지만...
 
일단 고~
 
지금까지 작업한 내용은
  1. main chart 내용을 sub chart로 복사했고
  2. main chart 에는 front-end yaml만 남겼고
  3. sub chart 에는 back-end yaml만 남겼고
 
요 상태에서 lint로 문법을 확인해 봅니다.
 
helm lint
 
오우~ 저런 chart 하나가 불량 이라네요
 
main chart metadata에 vote-backend 종속성이 누락되었다고 알려주네요
 
그런데...
 
어떻게 추가 해야 하는건지는 알려주지 않습니다. 뭘 참고 하라고 링크라도 남겨주지 ㅠ
 
어디서 주어들은 기본적인 내용으로 main chart.yaml에 종속성을 추가해 봅니다.
(편의를 위해 chart.yaml 파일 주석은 삭제 했습니다.)
 
 
이거면 되나 싶어 lint 다시 실행 해 봅니다.
 
helm lint
 
오호라~ chart 맞춤법 실패가 사라졌습니다.
 
또 이거면 되나 싶어 dry-run으로 debuging 해 봅니다.
helm install sample-vote ./sample-vote --dry-run --debug
 
오~~~ 좋아좋아
 
main chart에 정의된 vote의 front-end와 sub chart에 정의된 back-end 모두 렌더링 되었습니다.
 
결과가 길어서 내용을 첫부분과 끝부분만 캡쳐 했지만
아쉽게도 sub chart의 NOTES.txt 내용은 출력되지 않았습니다.
 
이제 실제로 배포를 해봐야 겠군요~
helm install sample-vote ./sample-vote
 
helm으로 install 잘 되었구요. cluster에 확인 해 봅니다.
 
cluster에도 잘 배포되어 있고 web에 접속해 봅니다.
 
ㅋ ㅑ~
정상 실행 되었습니다.
 
추가 테스트
 
 
 
예전에 어디선가 chart 폴더명은 chart.yaml에 정의되는 내용과 반드시 같아야 한다는 글귀를 본적이 있는데
배포된 chart 삭제 후 폴더명을 바꾸고 lint만 실행 해봐야 겠습니다.
 
sub chart의 폴더명을 바꾸고
helm uninstall sample-vote
 
문법이 맞는지 확인해 봅니다.
helm lint
 
음... 실패하지 않네요
 
sub chart에 들어가서 다시 lint 실행해봅니다.
cd charts/vote-backend2
 
음.... 여전히 실패는 하지 않네요
 
sub chart 폴더명은 다시 원래대로 돌려 놓고,
 
 
하는김에 main chart의 폴더명도 변경 후 lint 돌려 봅니다.
 
폴더명 바꾸고
 
 
lint 실행
 
helm lint
 
어~~?
실패하지 않네요?....
 
요건 정상으로 보이지만 나중에 chart build하거나 build된 chart를 재사용 할 때 문제가 되지 않을까 조심스레 걱정해 보며,
나중에 chart build 테스트 하게되면 그 때 같이 확인해 봐야 겠습니다.
 
 
main chart의 폴더명도 원래대로 돌려놓고 한번 더 lint로 확인 합니다.
 
helm lint
 
뭘 해도 정상이네요. 쪼끔 미련이 남긴 하지만... 오늘은~ 여기까지!
 
 
마무리
 
main chart.yaml에 dependency를 통해 내가 관리하는 yaml파일들을 위 에서 테스트 한 것처럼
charts 하위 폴더에 구성해주면 충분히 사용 가능하겠고,
 
chart를 build해서 push도 해보고, 외부 chart 땡겨서 쓰는것도 해보고 싶고...
 
이것보단 변수 설정이 더 궁굼하네요.... -0-
 
자~ 이제 변수로 뺄 수 있는부분들을 변수로 빼봐야 겠습니다.
 
 
반응형
LIST