🐳 Helm Chart를 OCI 방식으로 Docker Hub에 Push하고 Pull & Install 하기
이번 실습의 핵심은 이것이다.
✅ Helm Chart를 패키징
✅ OCI 방식으로 Docker Hub에 Push
✅ 다시 Pull 받아 Install
✅ Helm 구조는 GitHub에서 이력 관리
즉, Helm 배포 아티팩트는 Docker Hub에 저장하고,
Chart 소스 구조와 변경 이력은 GitHub에서 관리하는 구조를 만드는 것이 목적이다.
📌 실습 환경
- Helm v4 이상 (OCI 기본 지원)
- Docker Hub 계정
- GitHub에 Helm Chart 소스 저장
- Chart 이름: my-helm-cluster
1️⃣ Helm Chart 패키징
Helm Chart 기본 구조:
my-helm-cluster/
├── Chart.yaml
├── values.yaml
└── templates/
패키징 실행:
helm package my-helm-cluster
결과:
my-helm-cluster-0.1.0.tgz
Helm Chart가 하나의 배포 아티팩트(.tgz)로 생성된다.
2️⃣ Docker Hub 로그인
docker login
Helm OCI 로그인:
helm registry login registry-1.docker.io
3️⃣ Helm Chart를 Docker Hub에 Push (OCI 방식)
helm push my-helm-cluster-0.1.0.tgz \
oci://registry-1.docker.io/<dockerhub-username>
성공 시:
Pushed: registry-1.docker.io/<dockerhub-username>/my-helm-cluster:0.1.0
여기서 중요한 점 👇
Helm은 자동으로 다음 경로로 저장한다:
<username>/my-helm-cluster:0.1.0
즉, Helm Chart가 Docker Image처럼 Registry에 저장된다.
4️⃣ Docker Hub에서 Helm Chart Pull
다른 환경에서도 동일한 Chart를 가져올 수 있다.
helm pull oci://registry-1.docker.io/<dockerhub-username>/my-helm-cluster \
--version 0.1.0
파일 다운로드:
my-helm-cluster-0.1.0.tgz
5️⃣ Helm Install
helm install my-release \
oci://registry-1.docker.io/<dockerhub-username>/my-helm-cluster \
--version 0.1.0
Kubernetes 클러스터에 배포 완료.
1️⃣ Helm Chart 구조는 GitHub에서 이력 관리
- Chart.yaml 변경
- values.yaml 수정
- 템플릿 변경
- 버전 관리
- PR / 코드 리뷰
→ GitHub에서 소스 기반 관리
2️⃣ 배포 아티팩트는 Docker Hub에서 관리
- .tgz 형태로 패키징
- 버전별 Registry 저장
- CI/CD에서 직접 Pull 가능
- 이미지처럼 태그 기반 배포 가능
📦 역할 분리 구조
역할저장 위치
| Helm 구조 및 코드 | GitHub |
| 배포용 패키지(.tgz) | Docker Hub (OCI Registry) |
| 실제 실행 | Kubernetes |
🚀 왜 이 방식이 중요한가?
- Helm Repository 서버를 따로 운영할 필요 없음
- Docker Registry를 그대로 활용 가능
- CI/CD 파이프라인 연동이 쉬움
- 버전 기반 배포 전략 수립 가능
- Git 기반 이력 관리 + Registry 기반 배포 분리 가능
🏁 한 줄 정리
Helm Chart는 GitHub에서 코드로 관리하고,
패키징된 결과물은 Docker Hub(OCI)에 업로드하여 배포에 사용한다.
댓글