1️⃣ Kubernetes에서 Helm이 필요한 이유?
Kubernetes에서 애플리케이션을 배포할 때, 보통 Deployment, Service, Ingress, ConfigMap 등 여러 개의 YAML 파일을 사용합니다.
이러한 설정을 직접 관리하면 다음과 같은 문제가 발생할 수 있습니다.
❌ 여러 개의 YAML 파일을 수동으로 관리해야 하는 불편함
❌ 애플리케이션 버전 관리가 어렵고 배포가 비효율적임
❌ 배포 환경(dev, staging, prod)별로 설정을 따로 관리해야 함
✅ Helm을 사용하면 다음과 같은 이점이 있습니다.
✔ YAML 파일을 패키지화하여 관리 가능 (Helm Chart)
✔ 설정값(Values.yaml)만 변경하여 다양한 환경에서 손쉽게 배포 가능
✔ 배포 자동화 및 버전 관리 기능 제공
Helm은 Kubernetes의 패키지 매니저로서, YAML 파일을 보다 효율적으로 관리할 수 있도록 도와줍니다.
2️⃣ Helm의 기본 개념과 구조
📌 Helm은 애플리케이션을 패키지로 관리하는 시스템으로, 다음과 같은 구조를 가집니다.
용어설명
Helm Chart | Kubernetes 애플리케이션을 정의하는 패키지 |
Release | 특정 Helm Chart의 실행 인스턴스 |
Values.yaml | 배포 시 사용될 설정값을 정의하는 파일 |
Templates/ | Kubernetes 리소스를 정의하는 템플릿 파일 |
📌 Helm Chart 기본 구조
my-app-chart/
├── charts/ # 종속 Chart 저장
├── templates/ # Kubernetes 리소스 템플릿
│ ├── deployment.yaml # Deployment 템플릿
│ ├── service.yaml # Service 템플릿
│ ├── ingress.yaml # Ingress 템플릿 (옵션)
│ └── _helpers.tpl # 템플릿 변수 정의
├── values.yaml # 기본 설정 값
├── Chart.yaml # Chart 메타데이터
└── README.md # 설명 파일
✅ Helm Chart를 사용하면 배포 과정을 단순화하고 환경별 설정을 쉽게 관리할 수 있습니다.
3️⃣ Helm 설치 및 기본 사용법
📌 Helm을 설치하면 Kubernetes 애플리케이션을 쉽게 배포할 수 있습니다.
✅ Step 1: Helm 설치
📌 Helm 설치 (Mac & Linux)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
📌 Helm 설치 확인
helm version
✅ Helm이 정상적으로 설치되었는지 확인!
✅ Step 2: Helm Chart 생성 및 배포
📌 새로운 Helm Chart 생성
helm create my-app
📌 Helm Chart 디렉토리 확인
ls my-app
✅ 기본적인 Helm Chart 구조가 생성됨!
📌 Helm Chart 배포
helm install my-release my-app/
📌 배포된 Helm Release 확인
helm list
✅ Helm을 사용하면 단일 명령어로 애플리케이션을 배포 가능!
4️⃣ Helm을 활용한 애플리케이션 배포 전략
📌 Helm을 활용하면 다음과 같은 방식으로 Kubernetes 애플리케이션을 효과적으로 배포할 수 있습니다.
✅ 1. 환경별 배포 설정 (dev, staging, prod)
📌 Values 파일을 활용하면 동일한 Helm Chart를 여러 환경에서 쉽게 배포 가능
📌 개발 환경 설정 (values-dev.yaml)
replicaCount: 1
image:
repository: myrepo/myapp
tag: dev
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
📌 운영 환경 설정 (values-prod.yaml)
replicaCount: 3
image:
repository: myrepo/myapp
tag: latest
pullPolicy: Always
service:
type: LoadBalancer
port: 80
📌 환경별로 Helm 배포 실행
helm install my-dev-app my-app/ -f values-dev.yaml
helm install my-prod-app my-app/ -f values-prod.yaml
✅ 같은 Helm Chart를 사용하되 환경별 설정을 다르게 배포 가능!
✅ 2. Helm Chart 업그레이드 및 롤백
📌 Helm을 사용하면 애플리케이션 버전을 손쉽게 업그레이드 & 롤백 가능
📌 Helm Chart 업그레이드
helm upgrade my-release my-app/
📌 배포된 버전 기록 확인
helm history my-release
📌 이전 버전으로 롤백
helm rollback my-release 1
✅ 문제가 발생하면 빠르게 이전 버전으로 복구 가능!
✅ 3. Helm Chart를 저장소(Repository)에 업로드하여 배포 자동화
📌 Helm Chart를 저장소(Repository)에 업로드하면 CI/CD에서 활용 가능
📌 Helm Repository 추가
helm repo add myrepo https://myrepo.github.io/helm-charts
helm repo update
📌 Helm Chart 패키징
helm package my-app/
📌 Helm Repository에 업로드
helm push my-app-0.1.0.tgz myrepo
✅ Helm Repository를 활용하면 배포를 자동화하고 쉽게 관리 가능!
5️⃣ Helm을 활용한 CI/CD 최적화
📌 GitHub Actions + Helm을 활용하면 Kubernetes 배포를 자동화할 수 있습니다.
📌 GitHub Actions CI/CD 예제 (.github/workflows/deploy.yaml)
name: Deploy to Kubernetes
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install Helm
run: curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- name: Deploy with Helm
run: helm upgrade --install my-app ./helm/my-app -f ./helm/values-prod.yaml
✅ GitHub Actions를 활용하면 Git Push 시 자동으로 Helm을 사용하여 배포 가능! 🚀
📌 결론: Helm을 활용하면 Kubernetes 배포가 더욱 쉬워진다!
✔ YAML 파일을 Helm Chart로 패키지화하여 손쉽게 관리 가능
✔ 환경별 설정(Values.yaml)만 변경하여 다양한 환경에서 쉽게 배포 가능
✔ Helm Rollback 기능을 통해 배포 실패 시 빠르게 복구 가능
✔ Helm Repository를 활용하면 CI/CD 파이프라인과 연동하여 자동화 가능
🔥 Helm을 활용하면 Kubernetes에서 효율적인 애플리케이션 배포 전략을 구축할 수 있습니다! 🚀
'Kubernetes > Kubernetes Basics' 카테고리의 다른 글
📌 Kubernetes에서 Observability 구축: OpenTelemetry, Jaeger 사용법 (0) | 2025.03.04 |
---|---|
📌 Kubernetes CI/CD 파이프라인 최적화 (GitHub Actions, ArgoCD 심화) (0) | 2025.03.04 |
📌 Kubernetes 이벤트 기반 자동 확장: KEDA 사용하기 (0) | 2025.03.04 |
📌 Kubernetes CI/CD 최적화: GitOps 운영 방식 이해하기 (0) | 2025.03.03 |
📌 Kubernetes 배포 전략: Canary & Blue-Green 배포 이해하기 (0) | 2025.03.03 |