LabHub
배우기 러닝패스 코스

Helm 차트 제작과 배포 · 차트 꾸리기와 사설 저장소 · 실습

차트를 꾸려 사설 저장소에 올리고 다시 받아 온다

LabHub 에서 이어서 보기

목표

차트 디렉터리를 tgz 로 꾸리고, 색인을 만들어 사설 HTTP 저장소로 올리고, 그 저장소에서 판을 골라 받아 오고, 다른 차트의 의존성으로 잠그는 한 바퀴를 손으로 돌린다.

왜 중요한가

차트가 내 디렉터리를 떠나는 순간 남는 것은 tgz 와 index.yaml 두 가지뿐이다. 차트 저장소는 그 둘을 내려 주는 정적 HTTP 서버 이상이 아니고, 그래서 사내 저장소를 세우는 일은 생각보다 작다. 대신 작아서 생기는 사고가 있다 — 색인은 자동으로 갱신되지 않으므로 새 판을 올릴 때 --merge 를 빠뜨리면 옛 판이 목록에서 통째로 사라진다. 받는 쪽에서는 versionappVersion 을 혼동해 '애플리케이션은 그대로인데 왜 판이 올랐냐' 는 질문이 반복된다. 마지막으로 의존성은 buildupdate 중 무엇을 쓰느냐에 따라 CI 가 재현 가능한 빌드를 하기도 하고 매번 다른 판을 물어 오기도 한다. 이 세 가지를 한 번씩 직접 일으켜 보면 다음부터는 눈에 보인다.

단계

1. /root/hc-package 에서 helm create catalog 로 차트를 만들고, /root/hc-package/catalog/Chart.yamlversion1.0.0, appVersion"2.4.0", description상품 목록 서비스 로 바꾸세요. 이 두 버전이 서로 다른 것을 가리킨다는 사실이 이 실습 내내 판정 기준입니다.
2. /root/hc-package/repo 디렉터리에 catalog 를 두 번 꾸리세요. 첫 번째는 차트 버전 1.0.0 · appVersion 2.4.0, 두 번째는 차트 버전 1.1.0 · appVersion 2.5.0 입니다. Chart.yaml 을 다시 고치지 말고 helm package 의 옵션으로 덮어쓰세요. 결과 파일 이름이 무엇으로 정해지는지 확인하세요.
3. helm repo index/root/hc-package/repo/index.yaml 을 만드세요. 색인에 catalog 항목이 두 판 모두 들어 있어야 하고, 각 판에 digesturls 가 있어야 합니다. 색인을 열어 appVersion 이 판마다 다르게 적혀 있는 것을 확인하세요.
4. /root/hc-package/repopython3 -m http.server 8971 --bind 127.0.0.1 로 서빙한 뒤, helm repo add hclocal http://127.0.0.1:8971 로 등록하고 helm repo update hclocal 을 돌리세요. 차트 저장소가 정적 HTTP 서버 그 이상이 아니라는 것을 여기서 확인합니다.
5. helm search repo hclocal/catalog모든 판이 나오도록 돌려 결과를 JSON 으로 /root/hc-package/out/search.json 에 저장하세요. 아무 옵션 없이 검색하면 몇 개가 나오는지도 먼저 보세요.
6. 저장소에서 1.0.0 판을 골라 /root/hc-package/pulled 아래로 풀어 받으세요(/root/hc-package/pulled/catalog/Chart.yaml 이 생겨야 합니다). 이어서 1.1.0 판의 Chart.yaml 을 /root/hc-package/out/show-1.1.0.txt 에, 기본값을 /root/hc-package/out/show-values.yaml 에 저장하세요. 받아서 풀지 않고도 내용을 볼 수 있다는 것이 요점입니다.
7. /root/hc-package/stage 에 차트 버전 1.2.0 · appVersion 2.6.0 을 꾸린 뒤, 기존 색인을 합쳐서 /root/hc-package/stage/index.yaml 을 만드세요. 합친 색인에는 세 판이 모두 있어야 합니다. 그다음 stage 의 tgz 와 index.yaml 을 /root/hc-package/repo 로 옮기고 helm repo update hclocal 을 돌려 세 판이 검색되는지 확인하세요.
8. /root/hc-package/storefront 차트를 만들어 catalog 1.1.0 을 저장소(http://127.0.0.1:8971)에서 받아 오도록 선언하고 의존성을 확정하세요. 그다음 선언을 1.2.0 으로 올리고 helm dependency build 를 먼저 돌려 그 출력을 /root/hc-package/out/dep-build-error.txt 에 저장한 뒤, 알맞은 명령으로 다시 확정하세요. 끝나면 Chart.lock1.2.0 이고 /root/hc-package/storefront/charts/catalog-1.2.0.tgz 가 있어야 합니다.

참고

단계 8개

  1. 꾸릴 차트에 신원을 먼저 적는다
  2. 두 판을 꾸려서 tgz 를 만든다
  3. 저장소 색인을 만든다
  4. 저장소를 띄우고 helm 에 등록한다
  5. 판을 모두 보이게 검색한다
  6. 옛 판을 골라 받아서 풀어 본다
  7. 새 판을 올리면서 옛 판을 지우지 않는다
  8. 저장소에서 의존성을 잠그고, 잠금이 어긋나게 만든다