차트 저장소 (Chart Repository)
차트 저장소 (Chart Repository)
차트를 다른 팀이나 공개적으로 공유하려면 차트 저장소가 필요해요. 저장소는 index.yaml 파일을 담고 있는 HTTP 서버에요. 여기서는 직접 저장소를 만들고, 차트를 패키징해 올리고, 사용하는 쪽에서 추가하는 흐름을 따라가 볼게요.
출처
A chart repository is an HTTP server that houses an
index.yamlfile and optionally some packaged charts. 출처: https://helm.sh/docs/topics/chart_repository/
저장소는 무엇으로 구성되나요
차트 저장소에는 두 가지가 있어요.
- 패키징된 차트(
.tgz파일)들과, - **
index.yaml**이라는 목록 파일.
이 index.yaml이 저장소의 정체를 결정해요. 각 차트의 Chart.yaml 내용을 포함한 메타데이터로, 유효한 저장소라면 반드시 이 파일을 가져야 해요.
저장소에 차트 올리기
차트를 올리려면 먼저 패키징해야 해요. 차트 저장소의 차트는 helm package로 압축해야 하고, 버전은 SemVer 2 규칙을 따라야 해요.
$ helm package docs/examples/alpine/
$ mkdir fantastic-charts
$ mv alpine-0.1.0.tgz fantastic-charts/
$ helm repo index fantastic-charts --url https://fantastic-charts.storage.googleapis.com
마지막 helm repo index 명령은 로컬 디렉터리 경로와 저장소의 원격 URL을 받아서 그 디렉터리 안에 index.yaml을 만들어 줘요. 그다음 차트들과 인덱스 파일을 저장소 서버에 올리면 돼요.
이미 있는 저장소에 차트를 추가할 때는 --merge 플래그로 기존 index.yaml에 증분 추가할 수 있어요. 원격 저장소(GCS 등)와 작업할 때 특히 유용하고요, 자세한 옵션은 helm repo index --help에서 볼 수 있어요.
사용하는 쪽에서 저장소 추가하기
차트를 공유할 준비가 되면 저장소 URL을 알려주고, 사용자는 helm repo add [NAME] [URL]로 자기 Helm에 추가해요.
$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com
$ helm repo list
fantastic-charts https://fantastic-charts.storage.googleapis.com
저장소에 HTTP 기본 인증이 필요하면 --username과 --password를 함께 줄 수 있어요. 그리고 유효한 index.yaml이 없는 저장소는 추가되지 않는다는 점, 자체 서명 인증서를 쓰는 저장소는 helm repo add --insecure-skip-tls-verify ...로 CA 검증을 건너뛸 수 있다는 점도 알아 두면 좋아요.
호스팅 옵션
저장소 서버는 YAML과 tar 파일을 GET 요청으로 제공할 수 있으면 무엇이든 돼요. Helm 팀이 검증한 옵션은 Google Cloud Storage(웹사이트 모드), S3(웹사이트 모드), 일반 웹 서버, ChartMuseum, GitLab Package Registry 등이 있고, GitHub Pages를 쓴다면 Chart Releaser Action이 차트 릴리스를 자동화해 줘요.