Helm Repository 관리
7️⃣ Helm Repository 관리
Helm에서는 차트를 관리하고 배포하기 위해 레포지토리를 사용합니다. 이 섹션에서는 Helm 레포지토리를 관리하는 방법과 다양한 레포지토리 구축 방법을 설명합니다.
1 Helm 공식 레포지토리 (artifactHub)
Helm은 기본적으로 여러 공식 차트 레포지토리를 지원합니다. 그 중 하나가 Artifact Hub입니다. Artifact Hub는 Helm 차트와 같은 오픈소스 소프트웨어를 공유하는 플랫폼입니다.
📌 Artifact Hub 예시
- URL: https://artifacthub.io/
- 여기서 사용자는 다양한 Helm 차트를 검색하고 설치할 수 있습니다. 예를 들어, MySQL 차트를 검색하여 설치할 수 있습니다.
📌 Helm 명령어로 공식 레포지토리 추가
helm repo add stable https://charts.helm.sh/stable
helm repo update
이 명령어는 stable이라는 이름의 공식 Helm 레포지토리를 추가하고 최신 차트 목록을 업데이트합니다.
2 Private Helm 레포지토리 구축
조직 내에서 자체 Helm 차트를 관리하고 배포할 필요가 있을 때는 Private Helm 레포지토리를 구축할 수 있습니다. 이를 통해 보안이 중요한 차트를 안전하게 배포할 수 있습니다.
📌 기본적인 Private 레포지토리 구축
- GitHub, GitLab 등의 자체 Git 저장소를 사용하거나, 직접 서버를 구축하여 Helm 차트를 저장할 수 있습니다.
📌 Private Helm 레포지토리 추가
helm repo add my-private-repo https://my-repo-url.com
helm repo update
이 명령어는 지정된 URL에 있는 Private Helm 레포지토리를 추가하고 업데이트합니다.
3 helm repo index로 로컬 차트 저장소 생성
helm repo index
명령어는 로컬 디렉토리에 저장된 차트를 Helm 차트 레포지토리로 변환할 때 사용됩니다. 로컬 서버에서 Helm 차트를 쉽게 관리할 수 있습니다.
📌 로컬 차트 저장소 생성
- 차트가 포함된 디렉토리에서
helm repo index
명령어를 실행합니다.
helm repo index ./charts --url http://myserver.com/charts
이 명령어는 ./charts
디렉토리의 차트를 인덱싱하여 index.yaml
파일을 생성합니다. 이 파일은 차트의 메타데이터와 함께 레포지토리 URL을 제공합니다.
📌 인덱싱된 차트 파일 예시
apiVersion: v1
entries:
my-app:
- apiVersion: v2
appVersion: 1.0.0
name: my-app
version: 1.0.0
description: My custom app chart
urls:
- http://myserver.com/charts/my-app-1.0.0.tgz
4 S3, GCS, Harbor, Nexus 등을 활용한 Helm 레포지토리 구축
S3, GCS, Harbor, Nexus와 같은 저장소 서비스를 사용하여 Helm 차트 레포지토리를 구축할 수 있습니다. 이를 통해 클라우드 환경에서도 헬름 차트의 배포 및 관리를 쉽게 할 수 있습니다.
📌 S3를 활용한 Helm 레포지토리 구축
-
AWS S3 버킷을 만들고, 차트 파일을 업로드합니다.
-
S3 버킷을 Helm 레포지토리로 사용하기 위해
helm repo index
명령어를 사용합니다.
helm repo index ./charts --url https://mybucket.s3.amazonaws.com/charts
- S3 URL을 통해 차트에 접근할 수 있습니다.
helm repo add s3-repo https://mybucket.s3.amazonaws.com/charts
📌 Nexus 활용 예시
Nexus는 차트 관리뿐만 아니라 보안과 버전 관리가 중요한 경우에 유용합니다.
- Nexus에서 Helm 레포지토리를 생성하고 차트를 업로드합니다.
- Nexus UI에서 Helm 리포지토리를 관리할 수 있습니다.
5 차트 버전 관리 (helm package
)
helm package
명령어는 Helm 차트를 **압축 파일(.tgz)**로 패키징하여 배포하거나 레포지토리에 업로드할 수 있게 합니다.
📌 Helm 차트 패키징
helm package ./my-chart
이 명령어는 my-chart/
디렉토리의 차트를 .tgz
파일로 패키징합니다. 이 패키지 파일은 레포지토리나 다른 서버에 업로드할 수 있습니다.
📌 패키지된 차트 예시
my-chart-0.1.0.tgz
패키지된 차트는 버전 관리가 가능하며, 각 버전은 chart-name-version.tgz
형식으로 저장됩니다.