Kubernetes/Kubernetes Basics

📌 Kubernetes Helm: 애플리케이션 배포 자동화하기

ygtoken 2025. 3. 3. 07:21
728x90

 

1️⃣ Kubernetes에서 Helm이 필요한 이유?

 

Kubernetes에서 애플리케이션을 배포할 때, 여러 개의 YAML 파일을 관리해야 합니다.

 

예를 들어, 하나의 애플리케이션을 배포하려면 다음과 같은 리소스를 정의해야 합니다.

 

📌 기본 배포 구성 요소

deployment.yaml → 애플리케이션 배포

service.yaml → 네트워크 연결 (Service)

ingress.yaml → 도메인 연결 (Ingress)

configmap.yaml → 환경 변수 관리

 

✅ 파일이 많아질수록 배포 및 관리가 어려워집니다.

Helm을 사용하면 하나의 Chart로 여러 개의 Kubernetes 리소스를 손쉽게 관리할 수 있습니다.

 


 

2️⃣ Helm이란?

 

📌 Helm은 Kubernetes 애플리케이션을 배포하는 패키지 매니저입니다.

📌 Helm Chart를 사용하면 Kubernetes 리소스를 템플릿화하고 쉽게 배포할 수 있습니다.

 

YAML 파일을 하나의 패키지(Chart)로 관리 가능

버전 관리 및 롤백 지원

값(Values.yaml)을 변경하여 유연하게 배포 가능

 

📌 Helm 구조

애플리케이션 (my-app)
   ⬇
Helm Chart (배포 패키지)
   ⬇
Kubernetes 리소스 (Deployment, Service, Ingress 등)

 


 

3️⃣ Helm 설치하기

 

Helm을 사용하려면 먼저 설치해야 합니다.

 

📌 Helm 설치 명령어 (Linux/Mac)

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

 

📌 Helm 설치 확인

helm version

✅ Helm이 정상적으로 설치되었는지 확인!

 


 

4️⃣ Helm Chart 생성 및 배포하기

 

이제 Helm을 사용하여 애플리케이션을 배포해보겠습니다.

 


 

✅ Step 1: 새로운 Helm Chart 생성

helm create my-app

 

📌 디렉토리 구조

my-app/
 ├── charts/                # 종속 Chart 저장
 ├── templates/             # Kubernetes 리소스 템플릿
 │   ├── deployment.yaml    # Deployment 템플릿
 │   ├── service.yaml       # Service 템플릿
 │   ├── ingress.yaml       # Ingress 템플릿 (옵션)
 │   └── _helpers.tpl       # Helm 템플릿 헬퍼 파일
 ├── values.yaml            # 기본 설정 값
 ├── Chart.yaml             # Chart 메타데이터
 └── README.md              # 설명 파일

✅ Helm Chart가 생성됨!

 


 

✅ Step 2: values.yaml 수정하기

 

values.yaml 파일을 수정하여 배포될 애플리케이션 설정을 정의합니다.

 

📌 values.yaml 예제

replicaCount: 2

image:
  repository: nginx
  tag: latest
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 80

values.yaml 파일을 수정하면 배포 설정을 쉽게 변경할 수 있음!

 


 

✅ Step 3: Helm Chart 배포하기

 

📌 Helm으로 배포하기

helm install my-release my-app/

📌 배포된 Helm 릴리스 확인

helm list

📌 배포된 리소스 확인

kubectl get all

helm install 명령어 하나로 여러 개의 Kubernetes 리소스를 한 번에 배포 가능!

 


 

✅ Step 4: Helm 값 변경 후 업그레이드

 

values.yaml 파일을 수정하고 다시 배포할 수도 있습니다.

 

📌 설정 변경 후 업그레이드

helm upgrade my-release my-app/

✅ Helm을 사용하면 애플리케이션을 쉽게 업데이트할 수 있음!


 

5️⃣ Helm Chart 버전 관리 및 롤백

 

Helm은 배포 히스토리를 저장하며, 특정 버전으로 롤백할 수도 있습니다.

 

📌 배포 히스토리 확인

helm history my-release

 

📌 이전 버전으로 롤백

helm rollback my-release 1

✅ Helm을 사용하면 문제가 발생했을 때 빠르게 롤백할 수 있음!

 


 

6️⃣ Helm 패키지 저장소 (Helm Repository)

 

Helm Chart를 로컬에서만 사용할 수도 있지만,

Helm 저장소(Repository)에 업로드하면 다른 환경에서도 쉽게 배포 가능합니다.

 

📌 Helm Repository 추가

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

 

📌 Helm Chart 검색

helm search repo nginx

 

📌 Helm Chart 다운로드

helm pull bitnami/nginx

✅ Helm Repository를 사용하면 미리 패키징된 Chart를 쉽게 다운로드 가능!

 


 

7️⃣ Helm을 활용한 실제 애플리케이션 배포 예제

 

Helm을 사용하여 Nginx 웹 서버를 배포해보겠습니다.

 

📌 Nginx Helm Chart 배포

helm install my-nginx bitnami/nginx

 

📌 배포된 서비스 확인

kubectl get svc

 

📌 웹 브라우저에서 접속

http://<Node IP>:<NodePort>

✅ Helm을 사용하면 한 줄의 명령어로 Nginx를 배포 가능! 🚀

 


 

📌 결론: Helm을 사용하면 Kubernetes 배포가 훨씬 쉬워진다!

기능설명

Helm Chart Kubernetes 리소스를 패키지화
Helm Install 한 번의 명령어로 배포 가능
Helm Upgrade 값 변경 후 손쉽게 업그레이드
Helm Rollback 이전 버전으로 빠르게 복구
Helm Repository 미리 정의된 Chart 다운로드 가능

🔥 Helm을 사용하면 Kubernetes 애플리케이션을 더 쉽게, 빠르게, 안정적으로 배포 가능! 🚀

 

728x90